关于面向对象

面向过程与面向对象

  • 面向过程是一种以事件为中心、自顶向下的编程。把问题模块化。分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。
  • 面向对象是以“对象”为中心的编程思想。把问题对象化。先建立抽象模型,然后再使用模型解决问题。抽象出对象的目的并不在于完成某个步骤,而是描述其在整个解决问题的步骤中的行为。

简单的举个例子:汽车发动、汽车到站。
  • 这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另一个事件。针对上述两个事件,写两个函数,之后依次调用。
  • 然而这对于“面向对象”来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

面向过程
优点:性能高,因为类调用时需要实例化,开销比较大;比如单 片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。在程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。
缺点:没有面向对象易维护、易复用、易扩展

面向对象
优点:易维护、易复用、易扩展,支持封装、继承、多态性的特性,可以设计出低耦合的系统
缺点:性能低


面向对象的特征
  • 封装是指将某事物的属性和行为包装到对象中,这个对象可选择性的对外公开自己的属性和行为。具体来说,用private、protected、public三种修饰符或不用(即默认defalut)对外部对象的访问进行限制。
  • 继承是子对象可以拥有父对象的属性和行为,其子对象也就拥有了这些属性和行为。
  • 多态是指父对象中的同一个行为能在其多个子对象中有不同的表现。也就是说子对象可以按照自身需求重写父对象中的行为,使其拥有不同于父对象和其它子对象的表现。多态体现在overriding(重写)上,而overload(重载)不属于面向对象中多态的范畴,因为overload(重载)概念在非面向对象中也存在。
    多态存在的三个必要条件:
    • 要有继承
    • 要有重写
    • 父类引用指向子类对象。

多态实现的两种方式:
  • 父类指针指向子类对象
  • 将一个基类的引用类型赋值为它的派生类实例。
【关于面向对象】
构造函数、析构函数不能被继承

    推荐阅读