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

在谈论面向对象和面向过程区别之前,我们需要了解一下什么是面向对象和面向过程是什么?总的来说,面向对象和面向过程都只是一种编程思想,对问题不同角度得去分析和解决。

1、思想上的区别

面向过程:简单的来说,面向过程就是将事物分为不同的步骤,根据这些步骤去完成编程。我们可以以五子棋来理解面向过程思想。在面向对象的思路中就是先分析五子棋需要的步骤:

(1) 绘制棋盘

(2) 开始游戏

(3) 黑子下

(4) 绘制黑色棋子

(5) 判断输赢

(6) 白子下

(7) 绘制白色棋子

(8) 判断输赢

(9) 返回步骤(3)

然后,在开发过程中,将以上步骤一步一步的实现

面向对象:而面向对象的设计思路则是将问题分为不同的部分对象,并给对象赋予属性和行为。同样拿五子棋为例,在实现时,需要去分析需要那些对象。

(1) 棋子对象(负责黑白双方落子等行为,仅需要给他们一个颜色属性进行区分即可)

(2) 棋盘对象(负责绘制棋盘,包括棋子的位置绘制)

(3) 规则对象(负责对五子棋进行输赢判断,先后手顺序判断等)

从这个例子中,我们可以发现,面向过程在实现中比较抽象,考虑的方面比较多。而面向对象,用对象直接出发,更加趋向于我们人类的思想。

2、维护上的区别

不但在实现上,包括后续的功能维护上,也有很多不同。依旧以上述的五子棋为例。我们如果要在五子棋的游戏中添加一个新的操作,例如悔棋。那么他们双方需要如何去实现呢。

面向过程:如果是面向过程的话,我们不但需要在每个人操作时判断是否有悔棋操作,还可能对前期一系列的步骤进行修改,数据的存储。对棋子的落子位置进行存放等等问题,改动可以说是十分巨大的。

面向对象:而面向对象就不需要有那么大的改动,因为在面向过程的思路中,整个五子棋游戏主要分为:棋子、棋盘、规则三部分组成。进一步分析如果我们加了悔棋,变化在哪里?规则是不会变得、棋子也不会变。唯一会变得就是棋子在棋盘上得布局。我们只需要在棋盘系统中增加一个棋谱回退得功能即可。局部得变化就可实现。

3、从性能上得区别

这个就是比较明显得事情,首先,面向对象在实现中需要类得组成,而类得调用需要实例化,这样开销就比较大,会消耗很多得资源,相对于面向过程在性能上就会低一些。所以在主要考虑性能时,一般会采用面向过程而不是面向对象。

简单得总结一下:

面向过程:性能方面比较高,但在维护、复用、扩展上比较差

面向对象:由于面向对象有三大特性:封装、继承、多态。也就带来了三个特点:易维护、易复用、易扩展。但这也同时消耗了性能,所以性能方面比较低。

最后提个小问题:面向过程得性能一定比面向对象高吗?

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值