面向过程与面向对象编程的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。
■面向过程与面向对象的优缺点
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
与面向对象相对应的,即存在于早期版本 C 语言中的面向过程。
关于C/C++编程学习,小编给大家提供一个学习交流群,欢迎到访:569268376。
面向过程开发的过程,有点类似于树状调用函数,树状的根节点主程序对函数进行层层调用。
比如,main 函数要进行排序,那就调用 sort,sort 再去调用对应的,然后排好序后要进行输出,再调用输出。所谓面向过程中的过程,指的就是排序,输出这一个个的对应的“行为”,即过程是你每次进行的操作。
面向过程的问题有:
复用性不佳
按过程来的话,不同过程中相似的代码也不好进行复用,前半段的过程中用到的逻辑,在后半段再次使用的话需要再写一遍,如果是相同的逻辑,修改也会出现很多复杂问题。
拓展性不易
举个例子,相同的逻辑,如果要有两份相似逻辑,那在面向过程中,就很多时候需要写两份。
耦合度高
有一个比喻很合适,说面向过程是蛋炒饭,面向对象是盖浇饭,即,面向过程很难将内容剥离开,都混在了一起,要改一个东西,往往会改全文;而面向对象改的时候就改得比较少。
但面向过程也有好处,迭代快速开发,在一些如 48 小时比赛写个程序的,快速迭代,按过程分割就比较适合面向过程。
面向对象,和面向过程的区别在于:
面向对象是以元素,是以事物为主体。只要你能将一样东西抽象成一样物品,就可以作为你一段代码的载体。
比如,MVC,把一样东西的数据,页面,控制,各抽象成一个东西,分开耦合,不同的对象之间只提供对应的接口,联系也基于对应的接口。把每个对象封装成一个类,就是面向对象要做的事情。
首先复用性极佳,你如果要编写重复逻辑,直接使用同一个类就好了。
其次耦合性非常低,修改逻辑时候只需要修改对应的接口内的内容就好了。
同时代码逻辑也更好理解,更好维护。