以前学C语言和C++时提到过面向对象与面向过程,但是因为当时编程少,没什么经验,对它们的区别仅仅停留在字面上,其实压根没有明白。
最近被问:面向对象和面向过程的区别? 细想下,其实我真的不知道它们是什么区别。回去看了看书,查找了一些资料,再联系最近所做的编程,写一些我的理解,仅供参考。
面向过程是围绕功能进行的,为每一个功能写一个函数,需要考虑其中的每一个细节,以步骤划分,可以这么比喻
面向过程的程序=算法+数据结构
而面向对象则像是组装,先确定一个系统是由哪些对象组成,再分别去设计这些对象,将它们像零件一样组装起来形成有完整功能的系统,以功能划分,相当于
对象=算法+数据结构
面向对象的程序=N个对象+控制信息
面向对象和面向过程的区别 就像是面向过程程序只用函数实现,而面向对象程序是用类实现各个功能模块。
有人这么比喻:
“如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。”