面试题:面向对象与面向过程

以下来自毕向东老师Java视频教程,更加简单易理解:

举例:大象装进冰箱。

面向过程:
打开冰箱--》存储大象 --》关上冰箱
对于面向过程思想,强调的是过程(动作)。
语言:C。

面向对象:
对于面向对象思想,强调的是对象(实体)。
冰箱打开--》冰箱存储大象 --》冰箱关上
语言:C++、Java、C#
特点:1、面向对象就是一种常见的思想,符合人们的思考习惯。
2、面向对象的出现,将复杂的问题简单化。
3、面向对象的出现,让曾经在过程中的执行者,变成了对象的指挥者。
 

一、定义:

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

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

艾兰.库伯的《软件创新之路》中提到:
面向过程和面向对象的区别并不像人们想象得那么大,面向对象的大部分思想在面向过程中也能体现。但面向过程最大的问题(也许是唯一先天的缺陷)在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃。面向对象的提出正是试图解决这一软件危机,目前看来,似乎有一定成效,但仍任重道远。

二、面向过程与面向对象的优缺点

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

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

三、举例子:
例如设计一个五子棋:面向过程的思路就是首先分析问题的步骤:
1.开始游戏;
2.黑子先走;
3.绘制棋盘画面;
4.判断输赢;
5.白子走;
6.绘制棋盘;
7.判断输赢;
8.返回到步骤2;
9.输出最后的结果;
就这样一步步的实现,问题就解决了;

而面向对象则是从另外一个思路来设计解决问题:
1.玩家系统:黑白ABCD都是玩家,所以属性,步骤功能一样;
2.绘制棋盘系统;
3.规则系统:决定哪个先走,判断输赢等操作;
可以看出面向对象是以功能来划分,而不是步骤,黑子落棋后通知白棋棋盘发生变化,绘制棋盘系统就开始把变化绘制出来,规则系统则判定结果;赢了则返回,否则由白字继续走;
 

如果要加一个悔棋功能,面向过程则需要改动很多地方,黑子撤回棋,棋盘变化,然后载绘制,再判断,可能很多要变化;随着功能的越来越多,系统无法应付功能需求的规则的复杂而膨胀,最终导致奔溃;但是面向对象只需要得到悔棋命令后,绘制棋盘系统将棋盘重新绘制,调用规则系统判定即可,减少了大的改动;保证了面向对象程序的可扩展性;

 

 

参考文章:1、面向对象与面向过程的区别  点击打开链接

2、面向过程与面向对象编程的区别和优缺点  点击打开链接

你可能感兴趣的:(Andorid:面试,Android:Java)