1.1.2 面向对象的编程(www.cppentry.com)风格
面向对象程序设计(Object-Oriented Programming)是面向过程编程(www.cppentry.com)的一种替代技术。与面向对象编程(www.cppentry.com)相应的设计方法是面向对象设计(object-oriented design)。面向对象编程(www.cppentry.com)和面向对象设计着眼于解决在面向过程编程(www.cppentry.com)和自顶向下设计法中出现的一些问题,如串联改变。在面向对象编程(www.cppentry.com)中,构成模块的基本单元是类(class),而不是过程。
面向对象设计中的类是对象(object)的集合体。例如,人这个类是由诸如你、我、Mary Leakey等所有的人构成的一个集合体。属于类的任何对象都共享该类的所有属性(property、feature或attribute)。例如,所有的人都具有这样的属性:没有羽毛、是两足动物、能够发笑。在面向对象语言(如C++(www.cppentry.com))中,一个类就是一种数据类型,我们可以像使用通常的数据类型一样用类来定义变量。例如,如果我们在C++(www.cppentry.com)程序中定义了数据类型Human,就可以用它来定义maryLeakey这个变量,表示Mary Leakey属于人这种类。Human类型的变量可以拥有成员变量(member variable)或域(field),代表不同人的属性或特性。在C++(www.cppentry.com)中,我们把这些成员变量称为数据成员(data member)。例如,可以为类Human设计一个int型数据成员feetCount,它的值为2,表示包括Mary Leakey在内的所有人都是两足动物。
一个类(如人)通常拥有一些行为或具有一些功用,比如人都可以吃饭、笑、工作、跳舞等。为方便起见,我们将这些行为或功用叫做操作。和类相关联的操作可以用程序设计语言中的过程来实现。例如,在C++(www.cppentry.com)中,如果用类Human对Mary Leakey等人来建模,就需要为该类设计某个功能。这个功能用一个过程(函数)来实现,比如播放一段人类跳探戈舞的动画等。C++(www.cppentry.com)语言中,属于某个类的函数就称为函数成员(function member),这种函数在面向对象语言中通用的叫法是方法(method)。在本书中,将同时使用上述两个术语。作为数据类型,类必须将变量(C++(www.cppentry.com)的数据成员)和过程(C++(www.cppentry.com)的函数成员)有机地结合起来,这样才可以使用这些数据类型来对各种实体建模(如人、汽车、中子星、北欧雪橇队等)。从程序设计的角度来看,类是数据类型指的是:类是成员变量和过程的聚合体,通过该聚合体,类得以完成将对象进行建模的任务。
面向对象设计是面向对象编程(www.cppentry.com)采用的设计方法,它着重于类的设计,而类正是面向对象语言的基本程序模块,通过类的设计,来完成对实体的建模任务。仍然以建立汽车制造的调度系统为例,我们需要设计这样一些类:Automobile、Engine、Worker、PaintMachine,这些类分别与汽车、引擎以及制造汽车的工人及制造工艺中的喷漆设备相关联,每个类都必须对与其相关的实体进行属性和操作的建模。面向对象编程(www.cppentry.com)中最富挑战性和创造性的工作就是类的设计,同时,面向对象编程(www.cppentry.com)也是以类的设计为基础的。