面向过程程序设计:
- 以事件为中心,以功能为导向,分析某个问题的所需要的步骤,实现每个步骤的函数,不断调用函数。
- 面向过程编程,首先是如何操作数据,在考虑如何组织数据。数据和对数据的操作是分离的。
- 面向过程程序设计以设计各个功能模块为中心,难于维护。
面向对象程序设计:
对象:对象就是人们研究的任何一个事物,一件物品是一个对象,一个规则,计划,事件也是一个规则。对象具有状态,用数据来描述,还具有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,是数据和操作封装在对象的统一体中。
类:具有相同或相似性质的对象的抽象成为类。类的具体化,实例化就是对象。
- 以数据为中心,然后再去考虑算法。
- 面向对象技术,是一种以对象为基础,以事件或消息驱动对象运行处理的程序设计技术。
- 三大特点:
封装:将具有相同特性的一组对象抽象成一个类,
继承:子类可以继承父类的特性,并且可以扩展父类的特性,有良好的扩展性和复用性
多态:接口多种不同的实现方式称为多态。一个同样的操作在不同对象中完成不同的执行结果。
(封装可以隐藏细节,使代码模块化;继承可以扩展已存在的类,他们的目的都是为了代码的重用;而多态是为了实现接口的重用) - 面向对象编程是将问题划分为各个对象,建立对象的目的不是为了完成某个步骤,而是为了描述对象在整个问题中的行为。
- 面向对象程序设计是以数据为中心来解决问题,数据对于功能而言更加稳定,易于维护。
例如:
一辆汽车的行驶
用面向过程的思想:考虑如何启动汽车,起步,加速,刹车,熄火等一个个操作过程,对应于每一个函数,在主函数中的不断调用,来完成整个过程。在这里思考的是完成这个问题的各个操作步骤,而不关心汽车这个主体。
用面向对象的思想:把汽车作为一个对象,汽车的功能都在对象的属性里,干什么事情调用汽车这个对象即可。
C ,Java ,C++这些语言,他们之间并没有面向对象和面向过程之分。C语言通常说是面向过程的语言,但也可以面向对象,Linux内核代码就是如此。C++和Java通常写面向对象的程序,因为这两个语言来实现面向对象更容易一些,但并不是局限于面向对象,也可以实现面向过程的程序设计。
面向对象虽然好维护,但也不能说他一定优于面向过程,有些领域用面向对象无法实现,比如硬件编程和嵌入式编程这种实时性和效率性要求更高的领域。面向对象的主要领域还是用在大型复杂的软件系统中。
参考:
https://blog.csdn.net/zhangtxxf/article/details/79109922
https://wenku.baidu.com/view/554c08a0b0717fd5360cdcb6.html