面向过程和面向对象的区别

所谓面向过程,就是将一个具体问题,按照时序的先后顺序,一步一步的完成。

所谓面向对象,就是将一个具体的问题,按照问题空间,划分成不同的小问题空间,层级划分下去,最后再在最小粒度的问题空间里,运用面向过程的思想解决各自的问题。

区别:

面向对象中各个小问题空间使用到的数据,是与其他空间没有必然的关联关系的,也就是说,一个问题空间里的问题不需要使用到另一个问题空间里的数据。而整个问题的解决,是通过客户端程序,将它们按照一定的顺序组合起来,这个是面向过程的思想。

面向过程中,各个函数按照一定的顺序调用,函数与函数间是有紧密的联系的,下一个函数的使用需要调用上一个函数处理过的数据。这样就造成了系统非常紧密的耦合,当有新的功能需要扩展,就需要更改很多地方的代码,系统越大,就越难修改和重构,甚至导致系统的崩溃。

 

例子:

五子棋,面向过程的设计思路就是首先分析问题的步骤:

1、开始游戏,    2、黑子先走,    3、绘制画面,    4、判断输赢,    5、轮到白子,    6、绘制画面,    7、判断输赢,    8、返回步骤2,    9、输出最后结果。

把上面每个步骤用分别的函数来实现,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:

1、黑白双方,这两方的行为是一模一样的,

2、棋盘系统,负责绘制画面,

3、规则系统,负责判定诸如犯规、输赢等。

 

主要的区别就是,

面向过程的每一个点都是紧密联系的,比如4必须在3前面调用,才能正确的完成功能。

而面向对象的每一个点保持相对的独立,比如只要给相应的条件,3可以在任何时间地点正确完成它的功能。

 

posted @ 2015-07-10 09:20  克什米尔公子  阅读(184)  评论(0编辑  收藏  举报