起因
函数学的一直都不怎么好,对这两个面向也总是不太理解,今天就好好的去深入了解一下到底什么是面向对象
什么是面向过程
解析
定义:
面向过程三要素:封装、继承、类。
面向过程就是:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把:构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
通俗解释
定义看的总是让人摸不着头脑
面向对象侧重于对象
面向过程侧重于过程
但什么是对象什么是过程呢?
我从知乎上看到了几个生动形象的例子,我觉得可以更加生动的去了解这两者的区别~
- 面向过程是编年体;面向对象是纪传体
编年体:按照年份一步一步来
纪传体:按照诸侯英雄好汉来写
我也是这么理解的
面向对象:重在解决问题,达到目的
面向过程:重在研究解决问题的过程
侧重点不一样
-
面向对象: 是给你给你一堆零件让你组装一个东西
面向过程: 是给你一堆零件+锤子扳手 让你自己造一个东西
对比
面向过程 | 面向对象 | |
---|---|---|
优点 | 流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。 效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。 |
结构清晰,程序是模块化和结构化,更加符合人类的思维方式; 易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统; 易维护,系统低耦合的特点有利于减少程序的后期维护工作量。 |
缺点 | 需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。 | 开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。 这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。 性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。 |
拓展
有时候不妨这么思考一下,我们学习的编程语言是怎么样出现的?编程语存在着哪些意义?
透过现象去看本质,再深入一点,有一种刨根问题的精神,这样我们才能走的更远!
- 是先有了面向对象还是先有了面向过程?
面向过程 - 为什么有了面向对象之后还需要面向对象呢?
- 类和继承
- 父类和子类
- 强类和弱类 and 静态类 和动态类
参考: 编程的发展史