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

问题描述 投票:0回答:4

我想一劳永逸地知道如何编写 UML 基数,因为我经常不得不争论它们(所以非常欢迎证明和来源:)

如果我想解释 a

Mother
可以有多个
Child
ren
a
Child
有且只有一个
Mother
,我应该写:

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

或者

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

oop uml data-modeling cardinality
4个回答
32
投票

第二个 母亲 1 ----------------- 1..* 孩子

您会在UML规范中找到许多与抽象语法相关的图形的示例...


26
投票

红胡子当然是对的,正确答案是第二个。

至于记住这一点的技巧,我建议用英语思考:你说“一个孩子有ONE母亲”,在这个句子中,就像在UML中一样,ONE写在母亲旁边。相当简单。


1
投票

许多人在开始使用 UML 时都会有这个问题,尤其是当他们来自另一种表示法时,其中名称总是顺时针读取,无论它们位于行的哪一端。这真是令人困惑!

红胡子是正确的,尽管 UML 规范没有明确说明关联端信息(即名称和多重性)写入何处,但它在多个地方暗示了这一点。例如,图 7.11(显示属性)和 7.12(显示箭头旁边的关联末端的单向关联)是等效的属性表示法;因此,多重性确实与属性的类型相邻。

我学会记住哪一端具有多重性的一种方法是想象一个实例的单向图,并在指向目标的箭头旁边写下数字。

顺便说一句,您应该使用描述性关联结束名称。它们通常会变成 Java 中的属性名称、XSD 中的元素名称等等。例如,在 Java 中,Mother 类可能具有“Set

”类型的“children”属性。如果您不命名它们,您通常会得到不需要的默认名称。


0
投票
这篇文章发表十多年后,我仍在与这些该死的基数作斗争。谢谢你们,我终于明白了。谢谢你! :)

© www.soinside.com 2019 - 2024. All rights reserved.