首页 理论教育 软件系统分析与体系结构设计:继承及示例

软件系统分析与体系结构设计:继承及示例

时间:2023-10-16 理论教育 版权反馈
【摘要】:如果某几个类之间具有共性的东西,就可以抽取出来放在一个一般化类中,而将各个类所特有的东西放在特殊化类中分别描述,则可建立起特化类对泛化类的继承。案例学习◎如图3-4所示,各特化类中的底盘、发动机、轮胎、驱动装置等可以作为共性集中到泛化类汽车类中。各个特化类可以从泛化类中继承共性,这样避免了重复。图3-8继承结构示例

软件系统分析与体系结构设计:继承及示例

客观事物既有共性,也有特性。如果某几个类之间具有共性的东西(信息结构和行为),就可以抽取出来放在一个一般化类(泛化类,或称为父类)中,而将各个类所特有的东西放在特殊化类(特化类,或称为子类)中分别描述,则可建立起特化类对泛化类的继承。继承是在已有类的基础上,再考虑抽象过程中被舍弃的一部分对象的特性,形成一个新的类,这个类具有前一个类的全部特性,是前一个类的子集,这种层次结构即为继承结构。

案例学习

◎如图3-4所示,各特化类中的底盘、发动机轮胎、驱动装置等可以作为共性集中到泛化类汽车类中。各个特化类可以从泛化类中继承共性,这样避免了重复。复用共同的描述的继承性往往被看作软件复用的核心概念。

图3-4 继承结构示例(1)

◎建立一个新类——起重车类。它的底盘、发动机、轮胎、驱动装置等特性都包含在已有类——汽车类中,两个类的关系如图3-5所示。新类是已有类的特殊情形,即直接让起重车类作为汽车类的子类。

图3-5 继承结构示例(2)

◎增加一个新类——拖拉机类。它的底盘、发动机等特性与汽车类的不同,但驱动装置、轮胎等特性与汽车类的相同,两个类的关系如图3-6所示。调整继承结构。建立一个新的一般的车辆类,把拖拉机类与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。车辆是抽象类,相关操作到子类汽车找。

(www.xing528.com)

图3-6 继承结构示例(3)

◎在已有类的基础上加入新类,使得新类成为已有类的泛化类。例如,已经存在四边形类、六边形类,想加入一个多边形类,并使之成为四边形类和六边形类的泛化类,如图3-7所示。

图3-7 继承结构示例(4)

前三个情况主要是通过查找(应用域)类库,找到可以原封不动继承的类或可以通过调整继承层次结构继承的类。但如果在已有的继承层次中找不到可以继承的已有类,就要重新开始完全独立地建立一个类。

◎多继承

如果一个类需要用到多个现有类的特性,可以从多个类中继承,称为多继承。如图3-8所示,退休教师类是继承了退休者和教师这两个类的某些特性或行为而得到的一个新类。注意:有的面向对象的程序设计语言并不直接支持多继承,而改用接口的方式实现。

图3-8 继承结构示例(5)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈