1.4 面向对象的程序设计技术
C++称为“带类的C”,就是在C语言的基础上引入面向对象的机制而形成的一门程序设计语言,而C语言是面向过程的程序设计语言。C++几乎继承了C语言的所有特点,同时添加了面向对象的特征。C++既支持面向过程的程序设计,又支持面向对象的程序设计。面向过程的程序设计语言是基于功能分析的,以算法为中心的程序设计方法;面向对象的程序设计语言是基于结构分析的,以数据为中心的程序设计方法。面向对象的程序设计方法具有三大特征:封装性、继承性和多态性,其基本思想是尽可能模拟人类的自然思维方式来构造软件系统,不仅可以提高对用户需求的适应性,而且支持软件复用。掌握面向对象的程序设计方法,首先要了解面向对象是C++的主要概念。
1. 对象
对象是一个实体,可以是现实世界中具体的物理实体或概念化的抽象实体。一个学校是对象,桌、椅是对象,规章制度也是对象。对象是一个封装数据(属性,静态特征)和操作(服务,动态特征)的实体,是构成系统的基本单元。
2. 类
类是具有相同属性和相同操作的对象的集合,是抽象数据类型的实现。类是创建对象的模板,给出了属于该类的全部对象的抽象定义。对象的抽象是类,类的实例是对象。在客观世界存在的是类的实例,即对象。
3. 封装
封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。类是数据封装的工具,对象是封装的实现。类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和局部化原则”。
4. 继承
继承指子类(派生类)可以自动拥有父类(基类)的全部属性和服务。父类和子类是一般与特殊的关系。在定义一个子类时,可以把父类所定义的内容作为自己的内容,并加入若干新的内容。继承是面向对象语言的重要特性,提高了软件的可重用性。继承分为单重继承和多重继承。单重继承时,一个子类只有一个父类;多重继承时,一个子类可以有多个父类。单重继承构成的类之间的关系是树状结构,多重继承构成的类之间的关系是网状结构。
5. 消息
消息指对象之间在交互通信中所传送的信息。消息由三部分构成:消息名、接收消息的对象标识和参数。一个对象向另一个对象发送消息请求某项服务,接收消息的对象响应该消息,进行所要求的服务,并把操作的结果返回给请求服务的对象。
6. 多态性
多态性是指在基类中定义的属性和服务被子类继承后,可以具有不同的数据类型和表现出不同的行为。当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。不同的类对消息按不同的方式解释。多态性机制不但为软件设计提供了灵活性,减少信息冗余,而且显著提高了软件的可复用性和可扩充性。