【问题标题】:What are the details in this UML instance?这个 UML 实例中的细节是什么?
【发布时间】:2013-07-26 10:27:17
【问题描述】:
到目前为止,这些是所做的假设,如果这些假设是错误的,请更正这些假设。
- 山可以有 0 到多个分类(不确定是否相反)
- 0 to Many Mountains 有 0 to Many Routes
- 一条路线有 0 到多方
- 0 to Many Party have 1..6 walkers(不太明白这个)
- 0 多方有指南
- 一个指南可以有 0 到多个资格(看起来很奇怪)
【问题讨论】:
标签:
uml
diagram
class-diagram
【解决方案1】:
首先,让我明确一点,此图显示的是类,而不是实例。其次,该图缺少一些关联端名称、多重性和可导航性。第三,你的一些子弹是向后的。您是否偶然尝试顺时针读取关联结束? (有一些符号,或者至少是有人这样做,这不是一个好主意。)
我刚刚扫描了 UML 规范以提醒自己未指定关联端多重性的默认值是什么,但我找不到它。我认为我记得它是 [1..1],但是自从我在与 OMG 的一位 XMI 专家的随意交谈中偶然发现该信息以来已经有好几年了。这是始终指定它是什么的一个很好的理由!属性的默认值为 [1..1],因此关联结束默认值可能相同。
多重性和关联端名称属于其属性类型旁边,因此,例如,您的项目符号:
应该是:“一个分类可以分类许多山脉”或“一个山脉被一个分类分类”。如果图表显示您无法从分类导航到山(或使用新的“点表示法”来显示分类不拥有 Mountain 类型的属性),则会更清楚。
你的子弹:
也不正确。每行应该只描述一个方向,而不是两个方向。该项目符号应拆分为“一个派对包含 1 到 6 个步行者”和“一个步行者可以参加多个派对”。这两行更有意义。
我不会为你纠正所有的问题。希望你能明白要点。
【解决方案2】:
我发现您的解释存在 2 个问题:
- 您对多样性的解释过于直接。请记住,
UML 应该有助于理解,而不是混淆。
- 您的解释中有几个错误。一般来说,2-way 关系可以翻译成一个或两个合理的陈述:
X [m..n]---[k..l] Y 将被解读为:
X 使用/寻址/利用/依赖/等。在 k..l Y 上
Y 使用/寻址/利用/依赖/等。在 m..n X 上
我会将您的图表翻译成以下语句:
- 一个分类可以应用于任意数量的山峰,每座山峰都有一个资格
- 一座山可以通过任意数量的路线,路线可以穿过任意数量的山脉
- 一条路线可由多方走,每一方走一条特定的单条路线
- 一个派对由 1 到 6 名步行者组成,一名步行者可以参加任意数量的派对
- 一个派对链接一个向导,一个向导可以负责多个派对
- 一个资格可以应用于任意数量的向导,每个向导都有一个资格