抽象泛化关系

在类图中,抽象泛化关系是一种依赖关系,而该依赖关系中存在父代与子代之间的映射。

抽象泛化关系与类之间的泛化关系或继承关系很相似。通过抽象泛化关系,父类将强制子类继承某些功能以创建接口。

注: 在 C/C++ 中,抽象泛化关系是通过纯虚拟操作来实现的。包含纯虚拟操作的父类称为抽象基类。抽象基类永远不能被实例化。子类必须覆盖其声明中的纯虚拟操作;否则,它也不能被实例化。抽象基类对子类强制一个设计接口。

例如,当您将 C/C++ 类和抽象泛化关系可视化时,父类可以成为一个接口或设计模板。Vehicle 类是一个使用抽象泛化关系的父类。Vehicle 类通过强制它的所有子代使用某些操作来成为这些子代的设计模板或接口。子类 Boat 从 Vehicle 类中继承多项操作。不使用这些操作,就不能实现 Boat 类。因此,Vehicle 类充当它的所有子类的设计接口。

在 UML 可视化类图中,抽象泛化关系是通过区分一个类与其他类的标题的方法来显示的。使用抽象泛化关系的父类的类标题是采用斜体字母书写的。并且,被其子代继承的所有操作(纯虚拟操作)也是采用斜体的。

下图说明了正常泛化关系与抽象泛化关系之间的差别。

C/C++ 正常泛化关系 C/C++ 抽象泛化关系
显示了常规 C/C++ 泛化关系。 显示了 C/C++ 抽象泛化关系。

相关概念
关联关系
依赖关系
泛化关系
表现关系
拥有的元素关联关系
许可权关系
未解析的引用的装饰

反馈