6.1 章节简介
下面开始介绍 C++ 中的面向对象。为什么把 C++ 中的面向对象推迟到第6章才开始介绍呢?原因是我们要建立的对象是由各个结构化程序组件构成,因此先要建立结构化程序的基础知识。
在第1章到第5章的“有关对象的思考”小节中,我们介绍了 C++ 中的面向对象编程的基本概念(即对象思想)和术语(即对象语言)。在这些”有关对象的思考”小节中,介绍了面向对象设计(object-orienteddesign,OOD)的方法:我们分析了典型问题的陈述,要求建立一个系统(电梯模拟程序),确定实现该系统所需的类,确定这些类对象的属性,确定这些类对象的行为,指定对象之间如何通过交互以完成系统的总体目标。
下面简要介绍面向对象的一些关键概念和术语。OOP 将数据(属性)和函数(行为)封装(encapsulate)到称为类(class)的软件包中,类的数据和成员是密切联系的。就像蓝图,建筑人员通过蓝图建造房子,而程序虽则通过类生成对象。一个蓝图可以多次复用.建造多幢房子;一个类也可以多次夏用,建立多个对象。类具有信息隐藏(information hiding)属性,即类对象只知道如何通过定义良好的接口(interface)与其他类对象通信,但通常不知道其他类的实现方法,实现细节隐藏在类中。我们可以熟练地开车,而不需要知道发动机、传递系统和燃油系统的工作原理。我们可以看到信息隐藏对良好的软件工程是多么重要。
在C语言和其他过程化编程语言(proceduralprogramminglanguage)中,编程是面向操作的(action-oriented),而在 C++ 中,编程是面向对象的(object-oriented)。在C语言中,编程的单位是函数(function),而在C++中.编程的单位是类(class),对象最终要通过类实例化。
C语言程序员的主要工作是编写函数,完成某个任务的一组操作构成函数,函数的组合则构成程序。数据在C语言中当然很重要,但这些数据只用于支持函数所要进行的操作。系统指定中的动词帮助C语言程序员确定一组用于实现系统的函数。
C++ 程序员把重点放在生成称为类的用户自定义类型(user-definedtype),类也称为程序员定义类型(programmer-defined type)。每个类包含数据和操作数据的一组函数。类的数据部分称为数据成员(data member)。类的函数部分称为成员函数(member function,有些面向对象语言中也称为方法)。int等内部类型的实例称为变量(variable),而用户自定义类型(即类)的实例则称为对象(object)。在 C++ 中,变量与对象常常互换使用,C++ 的重点是类而不是函数。系统指定中的名词帮助C++程序员确定实现系统所需的用来生成对象的一组类。
C++ 中的类是由C语言中的 struct 演变而来的。介绍 C++ 类的开发之前.我们先使用结构建立用户自定义类型,通过介绍这种方法的缺点从而说明类的优点。