我想一劳永逸地知道如何编写UML基数,因为我经常不得不就它们进行辩论(因此非常欢迎证明和来源:)
如果我想解释一个Mother
可以有几个Child
ren 但一个Child
只有一个Mother
Mother * ---------- 1 Child
} ,我应该写一下:
Mother 1 ---------- * Child
或者
{{1}}
答案 0 :(得分:22)
第二个 母亲1 ----------------- 1 .. *孩子
你会在UML specification中找到与抽象语法相关的所有数字的很多例子......
答案 1 :(得分:15)
当然Red Beard是对的,正确答案是第二个。
至于记住这一点的提示,我建议用英语思考:你说“一个孩子有一个母亲”,在这句话中就像在UML中一样, ONE 写在母亲旁边。相当简单。
答案 2 :(得分:1)
许多人在开始使用UML时会遇到这个问题,特别是当他们来自另一种名称总是顺时针读取的符号时,无论他们在哪一行上。那真的令人困惑!
Red Beard是正确的,虽然UML规范没有明确说明写入关联结束信息(即名称和多重性)的位置,但它暗示了它在几个地方。例如,图7.11(显示属性)和7.12(显示与箭头旁边的关联结束的单向关联)是等效的属性符号;因此,多重性确实在属性的类型旁边。
我学会了记住哪一端具有多重性的一种方法是想象一个实例的单向图,并在指向目标的箭头旁边写下数字。
顺便说一句,您应该使用描述性关联结束名称。这些通常会变成Java中的属性名称,XSD中的元素名称等等。例如,在Java中,Mother类可能具有“Set< Child>”类型的“children”属性。如果您没有为它们命名,则通常会得到不合需要的默认名称。