什么是面向对象和面向过程?

  • Post author:
  • Post category:其他

众所周知,Java 是面向对象的语言,那这个面向对象是怎么来的呢?与之相对的面向过程又是什么呢?下面我说大家分享一下自己的看法:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

面向对象是把问题中的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

通俗点说就是:
如果要你去设计一个棋局的话,面向对象可能是这样的:

  • 黑棋和红棋对象:负责棋子的走向,两者行为相同
  • 棋盘系统:通过黑棋和红棋对象的行为展示棋局情况
  • 规则系统:判断“战场”的变化以及胜负等

面向过程可能是这样的:

  • 开始游戏,红棋先走
  • 展示棋局情况
  • 判断战况(是否有棋子被吃、胜负情况)
  • 黑棋接着走
  • 展示棋局情况
  • 判断战况(是否有棋子被吃、胜负情况)
  • ……

所以可以看出来,面向对象把问题中的事务分解成了各个对象,每个对象有自己的任务,而面向过程是通过实现解决问题的每一个步骤去解决问题。

优缺点

面向对象
优点:易维护、复用、扩展,由于面向对象所具有的封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活
缺点:性能比面向过程低

面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

举个例子

上面的特点可能还是有一些不好理解,那么再来个例子说明一下面向过程的“高效率”特点和面向对象“易扩展、复用、维护”的特点

蛋炒饭和盖浇饭大家喜欢吃哪个?

做法相信大家都大概知道一些,蛋炒饭的做法大概是:

  • 鸡蛋炒熟并铲碎
  • 隔夜饭翻炒热
  • 加入鸡蛋
  • 继续翻炒,让蛋和饭充分混合

盖浇饭的做法大概是:

  • 炒好需要的菜,如青椒肉丝
  • 将青椒肉丝盖在饭上

别说我炒菜不放油和调料啊,省略了省略了

从上面的例子可以看出来,蛋炒饭可以粗略的看做为面向过程,而盖浇饭可以粗略的看做为面向对象

面向过程的“高效率”
其实可以看出来,盖浇饭中虽然步骤看起来少一些,但是里面的“青椒肉丝”这个步骤其实还是相当于蛋炒饭中加工鸡蛋的过程

在做盖浇饭的时候,多了“调用”“青椒肉丝“这一步骤,毕竟盖浇饭究竟盖什么我们还是不清楚的,而蛋炒饭则不需要这一步骤。

面向对象的易维护、易复用、易扩展
我们可以随意改变“菜”这一对象,比如改成“西红柿鸡蛋”,那我们就拥有了一份西红柿鸡蛋盖饭了!(易维护、易复用)
如果不太巧,没米饭了,那我们完全可以把米饭给换成面,给大家奉上一碗青椒肉丝盖面!(易扩展)


版权声明:本文为HappySundlut原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。