如何*真正*编写UML基数?

28
我想知道如何写UML基数,因为我经常需要讨论它们,欢迎提供证明和来源 :)
如果我想解释一个“母亲可以有几个孩子,但一个孩子只有一个母亲”的关系,应该这样写:
Mother * ---------- 1 Child

或者

Mother 1 ---------- * Child

?


如果您已经熟悉了Merise符号,那么UML对于基数的表示方式则完全相反。因此,在Merise图中,您的第一个示例是正确的。 - Attila
3个回答

30

第二个 Mother 1 ----------------- 1..* 孩子

你会在UML规范中找到许多例子,这些例子与抽象语法相关的所有图形。


25

当然Red Beard是正确的,正确答案是第二个。

至于记忆这个问题的提示,我建议用英语思维:你说"一个孩子只有一个母亲",就像在UML中一样,在这句话中一个写在Mother旁边。非常简单。


1
记忆这个方法不错 :+1: - DBX12

1
许多人在开始使用UML时会有这个问题,特别是当他们来自另一种符号表示法时,无论线条的哪一端,名称总是顺时针读取,这真的很令人困惑!
Red Beard是正确的,尽管UML规范没有明确说明关联端信息(即名称和复数)应该写在哪里,但它在几个地方暗示了这一点。例如,图7.11(显示属性)和7.12(显示带箭头的单向关联与关联端相邻)是等效的属性符号;因此,复数确实放在属性类型旁边。
我学习记住哪个端口有哪个复数的方法之一是想象一个实例的单向图,并在指向目标的箭头旁边写下数字。
顺便说一句,您应该使用描述性的关联端名称。这些通常变成Java中的属性名称、XSD中的元素名称等。例如,在Java中,Mother类可能有一个类型为“Set”的“children”属性。如果您不给它们命名,通常会得到不良的默认名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接