如何在 UML Class 图中模拟相似 类 的不同变体?

How to model different variations of similar classes in an UML Class Diagram?

正在尝试实现 class 图表,但我不确定应该如何正确完成。问题是:

Miners can extract gold, silver and coal (the mines are homogeneous, always contains one type). In addition, there are some dangerous mines: e.g some might collapse or be radioactive.

如何在 class 图表上表示它?首先,我认为可以用一个 Mines class 来完成。通过概括,我可以定义可塌陷的和放射性的地雷。但我无法决定如何处理不同的 material 类型。那应该是 classes 还是 Mines class 中的属性?

越简单越好。如果声明中没有具体的行为取决于提取的物质,那么只有一个 class Mine 就足够了,并且已知的可能物质列表的枚举就足够了。因为矿山只生产一种物质,所以多重性为 1。

该声明没有说明该矿是否既具有放射性又具有坍塌性。

假设一个地雷既可能具有放射性又可能坍塌,您可以为每种危险使用一个属性:

也可以对危险和重数使用枚举0..2,但是还需要有一个约束,说每个危险最多出现一次,所以这不是一个简单的方法。

否则,如果一个地雷的可能性更小,最多只能有一个危险,您可以再次使用重数为 1 的枚举:

或多重性0..1:

对此建模的最佳方法是将矿井中的 material 定义为枚举。枚举是一种数据类型,您可以使用它来定义属性,如下所示:

从我的到Material的依赖箭头是多余的,因为它已经被用作属性类型这一事实所暗示,但在更复杂的class图中,我发现这有助于轻松查看 classes.

使用了哪些枚举

我没有对各种类型的地雷进行泛化,因为子classes 没有特殊功能,所以我选择了最简单的解决方案。

我没有对危险进行概括,因为地雷可能既有坍塌又有放射性。