定义
- 面向过程:一种以事件为中心的编程思想
- 面向对象:一种以“对象”为中心的编程思想
面向过程
编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。
- 举例:下五子棋
面向过程的解法:
第一步:开始游戏 第二步:黑子先走
第三步:绘制画面 第四步:判断输赢
第五步:轮到白子 第六步:绘制画面
第七步:判断输赢 第八步:返回步骤(2) 第九步:输出最后结果
- 举例:下五子棋
下五子棋{
开始游戏();
黑子先走();
绘制画面();
判断输赢();
轮到白子();
绘制画面();
判断输赢();
返回到 黑子先走();
输出最后结果;
}
核心点:分而治之、关注过程
面向对象
把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为
- 举例:下五子棋
面向对象的解法:
第一步:
将整个五子棋游戏分为三个对象:
(1)黑白双方,这两方的行为是一样的
(2)棋盘系统,负责绘制画面
(3)规则系统,负责判定犯规、输赢等
第二步:
赋予每个对象一些属性和行为:
第一类对象(黑白双方)负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定
核心点:建模对象、行为通讯
- 举例:下五子棋
优缺点比较
面向过程【面向简单问题】
优点:
- 流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析
- 效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序
缺点:
- 需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大
面向对象【面向复杂问题】
优点:
- 结构清晰,程序是模块化和结构化,更加符合人类的思维方式
- 易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统
- 易维护,系统低耦合的特点有利于减少程序的后期维护工作量
缺点:
- 开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿
- 性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大