面向过程和面向对象概念
作为一个刚入行不久的程序员,现在对面向对象的理解与当初在大学课程中老师讲的面向对象已经有了比以前更加深刻的理解。可能是因为工作开发了一段时间的原因吧!
大家知道以前老一批程序猿普遍使用的是面向过程解决问题,但是现在新一代的程序猿已经普遍使用面向对象的思想解决问题了。
下面我来举个例子,我会用面向过程和面向对象解释清楚。
我理解的面向过程:
面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作。
我举一个非常经典的例子
把大象塞进冰箱里,按照你日常的思维你会怎么做?
1.打开冰箱门
2.把大象塞进去
3.关闭冰箱门
刚才我们完成这个需求,我们脑海里马上想到去这样做,对吧,在这个过程中,我们强调了三个动作,打开,塞进去,关闭,我们并没有强调做这件事的人,大象和冰箱,我们强调的是这三个动作,这就是面向过程的思想。而我们在之前一般用的都是采用的面向过程的思想,那么后来的程序猿为什么会从面向过程的思想转化到面向对象的思想呢,那么肯定是面向过程给我们带来了一系列的不方便,还是面向对象给我们带来了一系列优点呢?好,我来举个例子:
还是刚才这件事啊,如果说我让孙全干这件事,先看一下孙全的特点啊!
孙全,个子低,身材矮小,小屌丝
这个冰箱可能会很高,孙全会怎么做呢?
1.孙全踩着板凳,打开冰箱门
2.孙全找张肥帮忙把大象塞进冰箱
3.孙全踩着板凳,关闭冰箱门
这件事如果让张肥做会怎么做呢?
张肥 190cm 力气非常大
1.张肥自己打开冰箱门
2.张肥自己把大象塞进冰箱
3.张肥自己关闭冰箱门
我们观察一下,会发现他们两个人做同一件事的方式不同。
如果我们用面向过程来解决这件事儿,当执行这件事的人不同的时候,我们需要为每个人量身定做解决事情的方法!那么我们这样做会有什么缺点呢?当我们更改一个需求的时候,还是需要为每个人量身定做一套方法。比如说你在把大象塞进冰箱之后,要亲一下它的屁股,对于孙全,孙全会踩着板凳亲大象的屁股,对于张肥,不需要踩着板凳,可以直接亲大象的屁股。如果体现在代码上,每个人写的代码还都不一样!那么,这就是面向过程的问题!
面向对象,我查阅了好多资料,每个人有自己的一套理解方式,现在我简单总结一下。
面向对象 :找个对象帮你做事儿!
举个例子,把大象塞进冰箱里,这件事中出现了三个对象,有大象,冰箱,还有你,那你应该把谁作为对象,我们做这个事才更简单!如果是一人作为对象的话,那么还是面向过程的做法,会造成极大的不方便。
我们把冰箱作为对象:
那么刚才的事情可以这么说
1.冰箱可以被打开,
2.大象可以被塞进冰箱里
3.冰箱可以被关闭
我们比较一下这两种说法,面向过程呢,我们一般采用主动的说法,面向对象呢,一般采用被动的说法。通过观察我们可以发现面向对象的说发,会屏蔽掉一些差异,那么不管是孙全也好,张肥也好,我不需要管你的身高体重,我只知道你要做这几件事,需要调我冰箱的几个方法,具体怎么做的,我不需要知道。这就是面向对象的好处。
比如说孙全来了,
孙全 1孙全打开了冰箱,具体怎么做的,踩着板凳还是其他方法,我不需要了解。
孙全 2孙全把大象塞进冰箱,他是自己塞的还是找人帮忙的,我也不需了解。
孙全 3孙全关闭冰箱门,具体过程我也不需要去了解。
那么现在张肥来了张肥
张肥 1张肥做了第一件事
张肥 2张肥做了第二件事
张肥 3张肥做了第三件事 我们不需要了解他内部具体是怎么做的这件事。
通过观察比较,我们发现在刚才这件事的过程里面,我还突出孙全、张肥的身体特征么?我没有,我是不是完全屏蔽了人与人之间的差异。这就是
面向对象的好处。那么最终,我们找出一个对象,屏蔽掉所有人之间的差异,写出一套通用的代码。
面向对象:意在写出一个通用的代码,屏蔽差异。
对于数学家来说,世界是有数字组成的。
对于摄影家来说,世界都是由一副一副图片组成的。
对于画家来说,世界是由色彩组成的。
那么对于我们程序员来说,世界是由对象组成的。
那么在一件事中,我们怎么才能把这个对象找到呢?
举例 关门
面向过程:
张三一脚把门踹紧了
李四轻轻的把门带上了
王五门没关严,留了个尾巴
如果我们用面向对象来描述这件事呢,那么我们该把谁当做对象呢?张三,李四,王五,还是门呢?有了之前的理解,大家肯定会选门的吧!所以说对象一般都是被动的那个!
面向对象:
门可以被关
用面向对象描述,大家只需要知道门可以被关上,至于谁来关门,怎么关的不需要去了解了。
博主也是根据工作抽时间自己总结了一下,今天先到这里,有不理解的童鞋可以在下方提问!第一次发文章,很开心!期待与大家的交流!
以后会不定期的更新!!!