在谈论面向对象和面向过程区别之前,我们需要了解一下什么是面向对象和面向过程是什么?总的来说,面向对象和面向过程都只是一种编程思想,对问题不同角度得去分析和解决 。
【面向对象和面向过程的区别】1、思想上的区别
面向过程:简单的来说,面向过程就是将事物分为不同的步骤,根据这些步骤去完成编程 。我们可以以五子棋来理解面向过程思想 。在面向对象的思路中就是先分析五子棋需要的步骤:
(1) 绘制棋盘
(2) 开始游戏
(3) 黑子下
(4) 绘制黑色棋子
(5) 判断输赢
(6) 白子下
(7) 绘制白色棋子
(8) 判断输赢
(9) 返回步骤(3)
然后,在开发过程中,将以上步骤一步一步地实现
面向对象:而面向对象的设计思路则是将问题分为不同的部分对象,并给对象赋予属性和行为 。同样拿五子棋为例,在实现时,需要去分析需要那些对象 。
(1) 棋子对象(负责黑白双方落子等行为,仅需要给他们一个颜色属性进行区分即可)
(2) 棋盘对象(负责绘制棋盘,包括棋子的位置绘制)
(3) 规则对象(负责对五子棋进行输赢判断,先后手顺序判断等)
从这个例子中,我们可以发现,面向过程在实现中比较抽象,考虑的方面比较多 。而面向对象,用对象直接出发,更加趋向于我们人类的思想 。
2、维护上的区别
不但在实现上,包括后续的功能维护上,也有很多不同 。依旧以上述的五子棋为例 。我们如果要在五子棋的游戏中添加一个新的操作,例如悔棋 。那么他们双方需要如何去实现呢 。
面向过程:如果是面向过程的话,我们不但需要在每个人操作时判断是否有悔棋操作,还可能对前期一系列的步骤进行修改,数据的存储 。对棋子的落子位置进行存放等等问题,改动可以说是十分巨大的 。
面向对象:而面向对象就不需要有那么大的改动,因为在面向过程的思路中,整个五子棋游戏主要分为:棋子、棋盘、规则三部分组成 。进一步分析如果我们加了悔棋,变化在哪里?规则是不会变得、棋子也不会变 。唯一会变得就是棋子在棋盘上的布局 。我们只需要在棋盘系统中增加一个棋谱回退的功能即可 。局部的变化就可实现 。
3、从性能上的区别
这个就是比较明显得事情,首先,面向对象在实现中需要类得组成,而类得调用需要实例化,这样开销就比较大,会消耗很多得资源,相对于面向过程在性能上就会低一些 。所以在主要考虑性能时,一般会采用面向过程而不是面向对象 。
简单的总结一下:
面向过程:性能方面比较高,但在维护、复用、扩展上比较差
面向对象:由于面向对象有三大特性:封装、继承、多态 。也就带来了三个特点:易维护、易复用、易扩展 。但这也同时消耗了性能,所以性能方面比较低 。
最后提个小问题:面向过程的性能一定比面向对象高吗?
推荐阅读
- 百香果可以和花茶起喝吗,百香果可以和柠檬起做吗
- 小白7天掌握Shell编程:脚本的创建和执行
- JavaScript遍历对象方法总结,原来有这么多,你掌握了几种?
- 砂仁玫瑰茶,砂仁怎么吃
- 伊莱克斯冰箱的卖点有哪些?伊莱克斯冰箱优点和缺点_2
- 重装系统前,如何备份和恢复 Wi-Fi 密码?
- SQL Server 数据库中的 ntext、text 和 image
- 历史上宋朝赵祯和曹皇后的关系,历史上的曹皇后是一个什么样的人
- 普洱茶是黑茶的种吗,普洱茶和黑茶的区别
- 玫瑰花和什么起泡水喝好,金桔和什么泡水喝好