泛化关系

在 UML 建模中,如果一个模型元素(子代)基于另一个模型元素(父代),那么这两个元素之间就存在泛化关系。在类图、组件图、部署图和用例图中,泛化关系用来指示子代将接收父代中定义的所有属性、操作和关系。

要遵守 UML 语义,互相之间具有泛化关系的模型元素必须属于同一类型。例如,可以在参与者之间或者在用例之间使用泛化关系,但是,不能在参与者与用例之间使用泛化关系。

可以添加泛化关系以捕获父模型元素中的属性、操作和关系,然后在一个或多个子模型元素中对它们进行复用。因为具有泛化关系的子模型元素将继承父模型元素的属性、操作和关系,所以,必须只为子模型元素定义与父模型元素不相同的属性、操作或关系。

父模型元素可以具有一个或多个子模型元素,且任何子模型元素可以具有一个或多个父模型元素。更常见的情况是一个父模型元素具有多个子模型元素。

泛化关系没有名称。

如下列图中所示,泛化关系在图编辑器中显示为一条从子模型元素指向父模型元素的带空心箭头的实线。

具有单个子代的单个父代

具有多个子代的单个父代

一个包含名称 Parent 的类形状和一个包含名称 Child 的类形状。有一条从子类指向父类的带空心箭头的实线。 名称分别为 Child1 和 Child2 的两个类形状都连接至名称为 Parent 的类形状。每个连接器都是一条从子类指向父类的带空心箭头的实线。

示例

下图说明了一个销售多种商品的 Web 站点的电子商务应用程序。该应用程序具有一个 InventoryItem 类,该类是父类(也称为超类)。此类包含所有商品使用的属性(例如,Price)和操作(例如,setPrice)。

在定义该父类之后,为每种类型的商品(例如,书籍和 DVD)都创建了子类。Book 类使用 Inventory 类中的属性和操作,然后对其添加属性(例如,author)和操作(例如,setAuthor)。DVD 类也使用 Inventory 类中的属性和操作,但是将对它添加属性(例如,manufacturer)和操作(例如,setManufacturer),它们与添加至 Book 类的属性和操作不同。

这说明了前一段中所描述的示例。
相关任务
在 UML 图中指定关系

反馈