面向对象和面向过程的区别(面向对象和面向过程的区别通俗)

createh51个月前 (02-01)技术教程11

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

1、思想上的区别

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

(1) 绘制棋盘

(2) 开始游戏

(3) 黑子下

(4) 绘制黑色棋子

(5) 判断输赢

(6) 白子下

(7) 绘制白色棋子

(8) 判断输赢

(9) 返回步骤(3)

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

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

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

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

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

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

2、维护上的区别

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

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

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

3、从性能上的区别

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

简单的总结一下:

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

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



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

相关文章

云南省中小学生校外教育培训非学科类目录清单公布

近日,云南省教育厅、云南省科学技术厅、云南省文化和旅游厅、云南省体育局印发通知,公布《云南省中小学生校外教育培训非学科类目录清单(试行)》,明确面向中小学生的校外培训对象包括3—6岁学龄前儿童、义务教...

全省适用!广东首次公布中小学生校外教育培训非学科类目录清单

近日,广东省教育厅会同省科技厅、省文化和旅游厅、省体育局联合制定了《广东省中小学生校外教育培训非学科类目录清单》,全省范围内适用(含线上、线下),目录清单的项目可直接认定为非学科类培训项目。后续如有调...

怎样从零开始学人工智能?(怎样从零开始学人工智能技术)

人工智能(Artificial Intelligence,AI)是指让机器具有类似人类智能的能力,包括感知、理解、推理、学习、规划、决策、创造等多个方面。人工智能研究涉及到计算机科学、数学、物理学、心...