OO面向对象分析设计与编程

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

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

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

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

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

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

  自然语言影响人的思维方式:英语思维与面向对象分析思维的关系

教程文章

《复杂软件设计之道:领域驱动设计全面解析与实战》

鲍勃大叔实锤:类与数据结构的比较!每个优秀的软件设计师和架构师都需要牢记的问题

面向对象与区块链的哲学源头:培养OO思维和区块链意识需要改变三观 – Brad Cox

软件的复杂性与构造定律

分解和组合的抽象方法

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

十个面向对象设计原则

SOLID面向对象设计原则

组合性是SOLID的真正目标

单一职责原则(SRP)

迪米特法则

Design by Contract (DBC) 契约式设计

Java面向对象面试参考指南

对象的责任与职责 

四色UML彩色分析

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

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

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

重用之梦破灭了吗?

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

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

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

为什么OO是糟糕的?

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

数据库已死

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

更多专题

#OOA面向对象分析建模

#面向对象编程专题

相关话题

#单一职责 #SOLID原则 #DRY原则

#DDD失血贫血模型 #DTO数据传送对象

#抽象继承#对象生命周期

#关联模型 #对象责任职责协作

#UML统一建模语言 #对象数据库阻抗专题