一、面向过程编程(eg:C语言):
- “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。分析出解决问题所需要的步 骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
- 面向对象的方法也是含有面向过程的思想。面向过程最重要的是模块化的思想方法。
比如拿学生早上起来这件事说明面向过程,粗略的可以将过程拟为:
(1)起床
(2)穿衣
(3)洗脸刷牙
(4)去学校
而这4步就是一步一步地完成,它的顺序很重要,你只需要一个一个地实现就行了。 而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个 方法,但是具体的顺序就不一定按照原来的顺序。 - 特性: 模块化 流程化
- 优点: 性能比面向对象高, 因为类调用时需要实例化,开销比较大,比较消耗资源; 单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
- 缺点: 没有面向对象易维护、易复用、易扩展
二、面向函数编程:
- 函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ 演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。
- 主要思想: 把运算过程尽量写成一系列嵌套的函数调用。
三、面向对象编程(eg:python、C++、Java)
- 面向对象是按人们认识客观世界的系统思维方式,把构成问题事务分解成各个对象,建立对 象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
以五子棋为例,比较面向过程和面向对象编程的区别:
面向过程:
面向对象:
总结:
- 特性: 抽象 封装 继承 多态
- 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性, 可以设计出低耦合 的系统,使系统更加灵活、更加易于维护
- 缺点: 性能比面向过程低