工作都两年了,一直在用面向对象,可对面向对象的概念还是一直很模糊,没有清晰深入的理解和认识,所以决定今天再整理复习一下。
面向对象的主要思想:类,对象,继承,封装,多态,抽象。其中继承,封装,多态,抽象为面向对象的四大特征。(具体细节不讲)
这些概念原来在面向过程中都是没有的,这也是面向对象和面向过程的主要区别。
下面在知乎上收集了一些网友关于两者区别的最简单概括:
1.面向过程是一件事“该怎么做“,面向对象是一件事“该让谁来做”,然后那个“谁”就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把事做好就行了。
2.面向对象: 狗.吃(屎)
面向过程: 吃.(狗,屎)
3.面向过程强调的是“吃”,“人”只是一个参数;面向对象强调的是“人”,“吃”只是一个动作。
4.面向过程:
下雨了,我打开了雨伞.
面向对象:
属性:我 雨伞 雨
动作:我打开雨伞
5.我的理解:
面向对象是把世界描绘成N个有主动性的“活物”之间的交互
面向过程是有一个“上帝之手”通过制定一系列规则来操纵一堆“死物”
6.面向对象是由下至上,面向过程是由上至下。
这就带来了面向对象的优缺点问题:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的 效率和质量。而且,面向过程中没有类的概念,代码无法重用,而面向对象中代码是可以重用的,避免了重复造轮子,大大提高开发效率和维护性。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
下面是面向对象与面向过程区别的代码示例的一个链接: