Loading

面向对象和面向过程

起因

函数学的一直都不怎么好,对这两个面向也总是不太理解,今天就好好的去深入了解一下到底什么是面向对象什么是面向过程

解析

定义:

面向过程三要素:封装、继承、类。

面向过程就是:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把:构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

通俗解释

定义看的总是让人摸不着头脑
面向对象侧重于对象
面向过程侧重于过程
但什么是对象什么是过程呢?

我从知乎上看到了几个生动形象的例子,我觉得可以更加生动的去了解这两者的区别~

  • 面向过程是编年体;面向对象是纪传体

编年体:按照年份一步一步来
纪传体:按照诸侯英雄好汉来写
我也是这么理解的
面向对象:重在解决问题,达到目的
面向过程:重在研究解决问题的过程
侧重点不一样

  • 面向对象: 是给你给你一堆零件让你组装一个东西
    面向过程: 是给你一堆零件+锤子扳手 让你自己造一个东西

对比

面向过程 面向对象
优点 流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。
效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。
结构清晰,程序是模块化和结构化,更加符合人类的思维方式;
易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;
易维护,系统低耦合的特点有利于减少程序的后期维护工作量。
缺点 需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。 开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。
这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。

拓展

有时候不妨这么思考一下,我们学习的编程语言是怎么样出现的?编程语存在着哪些意义?
透过现象去看本质,再深入一点,有一种刨根问题的精神,这样我们才能走的更远!

  1. 是先有了面向对象还是先有了面向过程?
    面向过程
  2. 为什么有了面向对象之后还需要面向对象呢?
  3. 继承
  4. 父类子类
  5. 强类弱类 and 静态类动态类

参考: 编程的发展史

posted @ 2020-01-10 11:09  Unixcs  阅读(258)  评论(0编辑  收藏  举报