面向对象的思想是在面向过程思想之后产生的,两种思想没有对与错,有的只是在什么样的场景下去解决什么样的问题
——迷惑的是在面向对象之中也会存在着过程,那么如何去理解这个里面的过程?
1。什么是面向对象与面向过程
2。适用的场景
引入一个故事场景,有一个人从起始地是上海,然后去买点东西带回家,终点站是北京。
用面向过程的思想就是首先去找到买东西的超市,然后买好东西之后去火车站,然后搭乘火车,然后到北京。中间每个逻辑都是紧扣在一起的,缺一不可,在其中要考虑到的异常就是如果超市没有这种东西卖,那么是去别的超市买还是买别的东西;如果是搭乘火车,那么火车如果没有票怎么办;如果是有一种情况改变了,那么所有的逻辑都可能需要改变,如果这个过程足够长的时候,我们能考虑到的异常情况又有多少呢。
用面向对象的思想是我们要做的事情是买东西,然后再是回北京,买东西里面超市可能卖给我们东西,其他的商店也有可能会卖给我们东西,回家可能也有几种方式,坐汽车我们可以回家,坐火车我们也可以回家,坐飞机我们也可以回家。那么也就会有一个对象的主要职责卖东西,另外一个对象的主要职责是回家即可。
在其中可以看到面向过程的做法需要统筹考虑到整个系统每一步的运行情况,每一步的异常情况的发生,而在面向对象的做法之中将问题分解成了两个部分,一个是买东西,一个则是回家,从而将问题进行了一个细化,每个关注不同的领域的行为
——>面向过程是基于过程,系统是由一个个逻辑过程组成,每个过程密不可分,而面向对象是基于对象,对象有其专有的职责和行为
——>面向过程的做法适用于小型系统的构建或者是不复杂系统的构建,而面向对象的做法更加适用于构建大型系统或者是复杂的系统
——>面向过程专注于分析出解决问题的一个一个的步骤,每个小的方面都是密不可分的,而面向对象则关注于事物的行为,每个事物都是本来就存在的,只是在某个特定的规则下发生了交互
在现实的项目中,我们好像总是按照过程的做法来,例如小了解去做一件事情,经过哪些步骤,而且在这些步骤之中还穿插着一些细节的问题,这样的系统很难把控,如果我们在这个之中弄清楚有哪些人要做什么样的事情,再将这些事进行分割开来,让它们关注自己的问题领域和职责,从而可以在一个抽象层次上分解问题
需求——>分析——>设计——>编码——>测试——>维护
——如何用面向对象的思想来指导编码呢 ?