问题描述
尝试实现类图,我不确定应该如何正确完成。这是问题所在:
矿工可以提取金,银和煤(矿山是同质的,总是包含一种类型)。此外,还有一些危险的地雷:例如,一些地雷可能倒塌或具有放射性。
我如何在类图上表示这一点?首先,我认为可以通过一个mines
类来完成。通过概括,我可以定义可塌陷和放射性的地雷。但是我无法决定如何处理不同的材料类型。应该是类还是mines类中的属性?
解决方法
越简单越好。在声明中没有特定行为,取决于所提取的物质,仅拥有一个矿井就足够了,已知的可能物质列表就足够了。因为一个地雷只产生一种物质,所以多重度是1。
该声明没有说明地雷是否可以同时具有放射性和塌陷。
假设地雷既可能具有放射性也可能崩溃,则可以对每种危险使用一个属性:
也可以对危险和多重性0..2
使用枚举,但是也有必要约束每个危险最多出现一次,因此这不是一种简单的方法。
否则,即使是可能性较小的地雷最多也具有一种危险,您可以再次使用多重性为1的枚举:
或具有多重性0..1
:
对此建模的最佳方法是将矿山中的材料定义为枚举。枚举是一种数据类型,可用于定义属性,如下所示:
从Mine到Material的依赖关系箭头是多余的,因为它已被用作属性类型的事实所隐含,但是在更复杂的类图中,我发现轻松查看哪些枚举被使用很有帮助。哪个课。
我没有对各种类型的地雷使用通用化,因为子类没有特殊功能,所以我选择了最简单的解决方案。
我并没有将危险归纳为一种概括,因为地雷可能会同时塌陷并具有放射性。