文档介绍:第4章类和对象
面向对象的思想
面向对象程序设计的基本特点
面向对象的方法
面向对象的标记
类和对象
构造函数和析构函数
类的组合
类模板
面向对象的思想
C++是一种面向对象的程序设计语言,使用它可以实现面向对象的程序设计。在介绍其面向对象的特性之前,我们先来了解一下面向对象程序设计的特点,以及它与传统的结构化程序设计的联系与本质差别。
结构化程序设计
使用早期的计算机语言编写较大的程序时,由于当时未采用结构化的程序设计方法,使得程序的阅读、理解和调试都非常困难,对程序进行维护或增加新的功能几乎是一件不可能的事情。
20世纪60 年代以来,提出了结构化程序设计的概念,它的产生和发展形成了现代软件工程的基础。结构化程序设计建议采用有含义的变量名、实现程序的全局和局部范围以及一种面向过程的自顶向下编程方法,它的基本思想是:自顶向下,逐步求精,将整个程序结构划分成若干个功能相对独立的子模块,并要求这些子模块间的关系尽可能简单;子模块又可继续划分,直至最简;每一个模块最终都可用顺序、选择、循环三种基本结构来实现。
结构化程序设计可以有效地将一个复杂的问题分解为若干个易于处理的子问题,每一个子问题都可以独立地编程解决,从而将整个程序划分成多个子模块或过程,因此,结构化程序设计是一种面向过程的程序设计方法。在结构化程序设计方法中,程序的基本构成单位是函数或者过程。
结构化程序设计方法有许多优点:各模块可以分别编写,使得程序更易于阅读、理解、测试和修改;方便增加新的功能模块;功能独立的模块可以组成子程序库,有利于实现软件的复用。结构化程序设计的方法出现之后,立即为广大的程序设计人员所接受并广泛使用,成为程序设计的主流方法。
由于结构化程序设计方法是面向过程的,以解决问题的过程作为程序的基础和重点,因此,在方法上存在着不足。在结构化程序设计中,把程序定义为“数据结构+算法”,数据与处理这些数据的过程是分离的。这样,对不同格式的数据作相同的处理,或是对相同的数据作不同的处理,都需要不同的程序模块来实现,使得程序的可复用性并不好。同时,由于过程和数据相分离,数据可能被多个模块所使用和修改,很难保证数据的安全性和一致性。
面向对象程序设计
面向对象的程序设计技术是完成程序设计任务的一种新方法,它汲取了结构化程序设计中最为精华的部分。“面向对象程序设计是被结构化的结构化程序设计。它是软件开发的第二次变革,是程序结构的统一理论”。
在面向对象程序设计中,将对象作为构成软件系统的基本单元,并从相同类型的对象中抽象出一种新型的数据结构——类。
对象是类的实例。类是一种区别于其它各种一般数据类型的特殊类型。类的成员中不仅包含有描述类对象属性的数据,还包含对这些数据进行处理的程序代码,称之为对象的行为(或操作)。对象将其属性和行为封装在一起,并将其内部大部分的实现细节隐藏起来,仅通过一个可控的接口与外界交互。
面向对象程序设计不仅实现了数据抽象,而且通过抽象出相关类的共性,而形成一般类(基类),并在此基础上,采用继承的方式,对一般类增添不同的特性而派生出多种特殊类(派生类),从而建立了类与类之间的多层结构关系,为软件复用提供了有效的途径。
面向对象程序设计支持多态性。多态性与继承性相结合,使不同结构的对象可以以各自不同的方式响应同一消息。
软件系统的对象之间存在着依存关系,对象之间通过消息联系。面向对象程序设计中,消息表现为对象在起操作过程中对另一个对象的服务程序的调用。