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

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

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


艾兰.库伯的《软件创新之路》中提到:

面向过程和面向对象的区别并不像人们想象得那么大,面向对象的大部分思想在面向过程中也能体现

面向过程最大的问题(也许是唯一的先天缺陷)在于随着系统的膨胀,面向过程将无法应付,最终导致系统崩溃,面向对象的提出正是试图解决这一危机。


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


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


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


例如:对人这类这种高级动物:
如果面向对象:你只需要吃饭,跑步,睡觉几个命令即可;
面向过程:做饭,拿筷子,夹菜,夹饭,嚼,咽、、、一步步的写相应的函数,一个一个调用实现功能;顺序的向下做;

但是注意:对象是由一个个过程组合起来的;具有封装性;因为他们并不是完全独立的。

参考文章:https://blog.csdn.net/gogokongyin/article/details/51111528


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值