面向对象与面向过程
最近在看《大象:Thinking In UML》,这是一本早就想看的书。
里面提到了面向对象和面向过程的区别与联系以及各自的优缺点。
我想,软件开发之所以是从面向过程开始的,是因为计算机被发明出来的目的是用来解决数学问题,而数学问题一般是输入数据,经过运算,产生结果,单向前进,清晰明了。
而随着计算机的发展,其功能渐渐地向解决其它领域的问题延伸,不再是数据驱动,流程也变得不确定起来,这个时候,本来用于解决确定问题的”面向过程“软件开发,疲于应对,软件系统变得既难开发又难维护。逐渐地,随着现实需求和人们思维的转变,软件设计逐步向真实世界演化,用计算机来模拟真实世界。真实世界的模型就是,世界由Object组成,每一样东西都是Object,包括地球在内,包括太阳,包括宇宙在内。平时各个对象不发生关系,当有需求产生的时候,再利用各个对象的不同属性,使用不同的方法,去得到结果,这是一个“过程”,面向对象和面向过程,是从两个不同的维度来观察世界。