大象——Thinking in UML
大音希声,大象希形, 近来闲暇,随手翻起一些曾经看过的书籍,才发现又有新的收获。
面向对象
面向对象 在如今的软件行业是一个很著名的术语,以至于 人们以为面向对象是现代科学发展到一定程度才出现的研究成果 。
普通民众的面向对象
在很多人看来,面向过程 和 面向对象 都是一种软件技术 ,例如 把面向过程归纳为结构化程序设计、DFD图、ER模型、UC矩阵等,而面向对象则被归纳为继承、封装、多态、复用等具体的技术。
事实上,上述的所有技术都只是人们在采用不同的方法来认识和描述这个世界时所采用的工具。
他们都只是表征而不是本征。
大师眼中的面向对象
接下来让我们看看面向对象大师,也就是UML创始人之一的 Grady Booch 在2004年IBM Developer Works Live!大会的访谈中讲过的一段流传甚广的话:
我对面向对象编程的目标从来就不是复用,相反,对我来说,对象提供了一种处理复杂性问题的方式、这个问题可以追溯到亚里斯多德:你把这个世界视为过程还是对象?在面向对象兴起运动之前,编程以过程为中心,例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点,有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统——我认为,这才是面向对象编程运动的正真胜利。
- 不知读者看完这段话后有何感想?
- 您心目中的面向对象是这样的码?
正如Booch所说的一样,从本质上讲 面向过程 和 面向对象 是一个古已有之的 认识论 的问题。
之所以面向对象会兴起,是应为这种 认识论 能够帮助我们构造更为复杂的系统来解释越来越复杂的现实世界。
认识到这一点,我们就应该知道比掌握具体的技术更为重要的是掌握认识论所采用的方法和分析过程。
只有掌握了方法才能自如地使用这些技术工具。
这个世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动和规则下体现出不同的运动过程,然后这些过程便展现出来我们这个生动的世界。
在面向过程的眼中,世界的一切都不是孤立的,然相互紧密联系在一起,缺一不可,相互影响,互相作用,并形成一个具有严格因果律的小系统;
而更多的小系统组成了更大的系统,所有的小系统之间的联系也是紧密和不可分割的。
面向对象思想其实并不复杂,但是对于习惯了以过程方法来认识这个世界的朋友来说完全理解和接受面向对象思想却是不容易的。
如果您真的打算学习面向对象的方法,那么恐怕您得接受这个世界时分割开来的这个事实,并且相信只有在特定的场景下,孤立对象之间进行了某些信息交换才表现出我们所看到的那样一个过程。
原文地址:https://www.cnblogs.com/herelsp/p/9196781.html