面向对象OO

  使用面向对象方法和技术是为了更敏捷的响应客户需求,使得软件更易于维护和拓展。面向对象主要思维特点是逻辑分析思维,认为万物皆有边界,如同世界这个词语一样,通过寻找边界封装定义一个事物,然后再探究这个事物内部的组成部分,通过封装不变性,开放变化性,增强系统的柔韧性和灵活性。

  面向对象诞生以来,面临着面向过程、面向数据和面向函数等范式的挑战,但是因为面向对象范式更接近人的思维和认识习惯,所以,使用OO实现业务建模设计,分析设计复杂的业务需求成为其主要强项。虽然随着Java/.NET等面向对象语言发展,将面向对象范式落地有形化,但也带来了对面向对象思想扭曲的理解,事件或消息驱动思想丰富拓展了现代面向对象思想。

  由于很多程序员从一开始接受数据结构和算法的基础教育,导致思维方式偏功能化,虽然使用面向对象语言编程,但是编程思路还是面向过程和面向数据表的,面向对象思维和面向数据库思维主要区别是:前者以动态思维来看待事物,用对象概念封装对象内部属性状态和引起状态变化的行为方法;而后者以静态思维看待事物,只是记录事实的最后状态,并且混杂了具体数据库技术。

  面向对象和面向过程是也有本质区别的,面向过程只是根据CPU机器的执行时序去编程,而面向对象体现了软件工程师的专业水准。面向对象范式讲究的不只是编写出计算机能看懂的代码,也要编写出同类其他软件工程师能够看懂的代码,追求的不只是软件的功能,而是这些功能随着需求变化所具有的可维护性和可拓展性。

  面向对象从软件的分析到设计及其编程单元测试,都已经有一套成熟可行的简便方案,可是我们由于接受传统滞后的教育原因,我们编程都只是从建立数据表结构开始,这种方式只适合小规模系统,当系统变大后,就需要重写,带来大量时间和金钱的浪费。而且习惯了面向过程和面向数据库的编程思维,要转变到面向对象思维上来,阻碍相当大,比登天还难,这就是现实中为什么大量都是基于数据库系统的原因。

  面向对象的本质是逻辑分析哲学,现代逻辑学是面向对象的元语言,见这里讨论

大多数程序员最重要的应该学习什么? 

编程原则

计算机科学家告诉数学家如何编写证明!

软件的复杂性与构造定律

分解和组合的抽象方法

面向对象分析的概念模型和实现细节的不匹配

面向对象与函数编程的比较

十个面向对象设计原则

SOLID面向对象设计原则

SOLID原则

组合性是SOLID的真正目标

单一职责原则(SRP)

迪米特法则

Design by Contract (DBC) 契约式设计

Java面向对象面试参考指南

对象的责任与职责 

四色UML彩色分析

什么是流式思维
流式思维类似大禹治水,以疏替堵,顺势而为,面向对象 面向函数 异步编程 并发编程等都只是手段方法而已。

现代新的简化"对象"和"面向对象"的定义
新的面向对象涵括了面向函数语言等新概念,去除了传统面向对象概念中非本质因素。

罗素摹状词理论与面向对象OO
逻辑分析是面向对象思维的本质。

蒯因与引用透明
很多人只知道数学,而不知道数学后面的哲学与形式逻辑,就把我们编程语言中的这些约束和数学划上关系,实际上真正有联系的是数学背后的形式逻辑,或称符号逻辑。

快速适应需求变化的软件复用
本文总结了软件复用的不同层次:设计复用、组件架构复用以及业务模型复用,复用技术 的不断发展正是由于适应变化需求的要求不断提高导致!

重用之梦破灭了吗?

软件最大的追求是什么?
从我们学会玩编程这个玩具开始起,我们就面临两种选择:一种朴素的、无需训练的、近似自然的“紧耦合”路线;一种是经过科学培训的“松耦合”道路。

用OO方法解一道算术题
本篇主要为说明使用面向对象的分析和设计方法可以帮助更快地认识事物,更快地排除编程设计过程一个个拦路虎。

你还在用if else吗
是否大量使用if else语句,标志着一个程序员的面向对象思维是否走向成熟,也表明着他到底是否真正摆脱了传统面向过程或面向数据库的思维方式。

为什么OO是糟糕的?

面向对象建模与数据库建模两种分析设计方法的比较

数据库已死

你还在用if else吗

解放思想,走出传统三层架构的束缚

谈谈“面向对象”与“面向过程”

Go语言是彻底的面向组合的并发语言

面向对象分析设计线下培训咨询

 

更多专题

面向对象专题

面向过程专题

函数式编程(Functional programming)

软件网友观点

对象建模设计

OOA面向对象分析建模

OOD面向对象软件设计

面向对象框架设计

建模案例

分析模式

业务流程建模

 

相关主题

对象接口专题讨论

抽象继承讨论

关联模型

对象责任职责协作

UML统一建模语言

对象数据库阻抗专题

软件工程

框架专题讨论

设计理论专题

对象生命周期专题讨论