首页 > 技术文章 > 简析面向对象和面向过程

benon94 2019-03-29 11:14 原文

先引用毕老师的例子:将大象装进冰箱。

面向过程:强调的是过程(动作)

  过程一:打开冰箱

  过程二:储存大象

  过程三:关闭冰箱

面向对象:强调的是对象(实体)

  指定对象-----冰箱

    该对象包含的动作:打开、储存、关闭

  特点:

    1.面向对象就是一种常见的思想,符合人们的思考习惯;

    2.面向对象的出现,将复杂的问题简单化;

    3.面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。

一.面向过程 (代表语言:C语言)

  是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,

  在一步一步的具体步骤中再按顺序调用函数,具体步骤如下:

  1.搞清楚要做什么?

  2.分析怎么做?

  3.代码体现,一步一步去实现功能。

  

 

二.面向对象

  我们都知道,当多个数组需要遍历时,可将遍历的代码封装到方法中,遍历时调用方法即可。

  但我们对数组的需求增加时,比如除遍历外,还要获取数组中的最值,将数组逆序等。

  这时,同样需要将这些功能封装到相应的方法中,这样一直封装会发现方法越来越多。

  于是就想,能不能将这些方法也进行封装呢?

  我们知道,类可以存放方法,那么是否可使用类来封装多个方法?

  根据不同的功能进行不同的封装,功能类似的封装到一起,比如对数组的操作就可以封装到一起。

  将来再对数组进行操作时,先找到这个类,再使用类中相应的方法即可。

 

  上面说到的数组就相当于一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。

  面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解为各个对象,建立对象的目的不是为了完成一个步骤,

  而是为了描述某个对象在整个解决问题的步骤中的属性和行为,具体可参考下图:

  

 

 三.优缺点比较

  面向过程

    优点:流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。

       效率高,强调代码的短小精悍,善于结合数据结构来开发高效率的程序。

    缺点:需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。

  面向对象

    优点:结构清晰,程序是模块化的,更加符合人类的思维方式。

       易扩展,代码重用率高,可继承,可覆盖,可设计出低耦合的系统。

       易维护,系统低耦合的特点有利于减小程序的后期维护工作量。

    缺点:开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有意义的行为。

       性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。

 

推荐阅读