面向对象编程
面向对象编程(OOP)是一种编程思想,是一种特殊的设计程序的概念性方法
以下是最重要的OOP特性
- 抽象
- 封装和数据隐藏
- 多态
- 继承
抽象:处理复杂性的方法之一是简化和抽象,在计算中,为了根据信息与用户之间的接口来表示它,抽象是至关重要的,也就是说将问题的本质特征抽象出来,并根据特征来描述解决方案。抽象是通往用户定义类型的捷径,C++中用户定义类型指的是实现抽象接口的类设计。
封装和数据隐藏:封装是指把抽象的结构,归结成一个类(数据类型),然后实例化出类对象,设置对象的属性,调用对象的功能达到解决问题的目的。防止程序直接访问数据被称为数据隐藏,这一点是private/protected实现的。数据隐藏也是一种封装,将实现的细节隐藏在私有部分中也是一种封装。封装的另外一个表现形式是将类函数定义和类声明放在不同的文件中
多态:派生类继承基类的虚函数时,对虚函数进行了重写,也就是覆盖,另外一种方法是在派生类中重新定义基类方法。即同一个方法在基类或派生类中的行为是不同的,方法的行为取决于调用方法的对象
继承:在解决问题前,先寻找之前的类能不能解决问题或者说解决部分问题,如果可以,则把旧的类继承下来,继承后再次拓展,来缩短解决问题的时间,降低解决问题的难度,派生类继承基类的特征,包括方法。
面向过程编程
面向过程(POP)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。
面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。