我眼中的面向对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41035588/article/details/82972883

我眼中的面向对象

面向过程 面向对象
我要充话费 -> 用支付宝 女朋友要充话费 -> 给我打电话
我饿了 -> 用美团外卖 女朋友饿了 -> 给我打电话

引例

动作:撰写一篇博客,发布博客到网站
对于面向过程 撰写、发布是两个事件,形成函数并依次调用
对于面向对象 博客可以抽象为一种文章,不关心具体实现(实例化),只关心这个抽象概念的一系列行为

本质

相对来说,面向过程是分析出解决问题所需的步骤
对于面向对象,是描述其在整个解决问题的步骤中的行为,而不在于完成某个步骤

面向对象的核心,我认为就是多态,把不同对象以同一特性来归组,统一处理
从程序构成的角度说

程序 = 算法 + 数据结构

用面向对象的思想改造后

程序 = 基于对象操作的算法 + 以对象为最小单位的数据结构

数据结构上的封装导致了数据数据的减少,即减少了问题求解的复杂度
同时由于类的抽象、分层,事件的完成逻辑更加清晰、容易实现
容器与STL的出现,更体现了数据抽象的这一概念

最后,面向对象所提倡的「高内聚、低耦合」更是大大提高了程序的可维护性。

高内聚:是指一个软件模块是由相关性很强的代码组成,只负责一项任务
低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存(减少相互依赖)

此外,陈皓老师提到:

对于:OOP 的本质就是——对数据和与之关联的行为进行编程,是不完全准确的

因为

Sometimes data is just data and functions are just functions.

陈皓老师认为,面向对象最注重的是

数据和其行为的打包封装
程序的接口和实现的解耦。

我认为陈皓老师指的也是上文所述
关于面向对象中多态的底层原理,请参考 博文 C++ 多态对象模型/虚继承对象模型

猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/82972883