程序设计范型: 设计程序的规范、模型、和风格,是一类型程序设计语言的基础
面向过程程序设计范型,面向对象程序设计范型是目前主流的两种程序设计范型。
面向过程程序设计:
程序 = 过程 + 调用
面向对象程序设计:
程序 = 对象 + 消息
现实世界中的对象具有以下特性:
(1)每一个对象必须有一个名字以区别于其他的对象;
(2)用属性来描述对象的某些特征;
(3)有一组操作,每组操作决定对象的一种行为;
(4)对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。
面向对象程序设计沿用了上面人们所熟悉的这种思路。
现实世界中,类是一组具有相同属性和行为的对象的抽象。
类和对象的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,对象又是类的个体实物,一个对象是类的实例。
在面向对象程序设计中,类就是具有相同的数据和相同的操作(函数)的一组对象的集合。
现实世界中,对象并不是孤立存在的实体,它们之间存在着各种各样的联系,正是它们之间的相互作用、联系、连接,才构造出世界各种不同的系统。
在面向对象程序设计中,对象之间的也存在一定的联系或者交互。对象之间的这种交互称之为消息传递。一个对象向另一个对象发出的请求称之为消息。当对象接受到消息时,就调用相关的方法,执行对应的操作。
抽象是通过特定的实例(对象)抽取出共同性质后形成概念的过程。面向对象程序设计中的抽象包括两个方面:数据抽象和代码抽象。
数据抽象:描述某类对象的属性或状态
代码抽象:描述了某类对象的共同行为特征或具有的共同功能。
封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能屏蔽对象的内部细节
通过下面这幅图更好的理解下封装
封装有如下两方面重要含义:
- 将有关的数据和操作代码封装在一个对象中,各个对象相互独立、互不干扰
- 将对象中某些数据与操作代码对外隐蔽(安全)
面向程序设计中,继承所表达的是对象类之间的关系。
若类之间有继承关系,则它们之间具有下列几个特性: (1)类之间具有共享特征(包括数据和操作代码的共享) (2)类间具有差别或新增的部分(包括非共享的数据和操作代码) (3)类间具有层次结构
在面向对象程序设计中,继承的作用有如下两个:
- 避免公用代码重复开发,减少代码和数据冗余
- 通过增强一致性来减少模块间的接口和界面
面向对象系统的多态性是指不同的对象收到相同的消息执行不同的操作。 C++支持两种多态性,即编译时多态与运行时多态
编译时多态:通过函数重载(包括运算符重载)来实现
运行时多态:通过虚函数实现