显示继承子 class 与继承之外的子 class 之间的多重性
Showing multiplicity between subclasses of an inheritance and another class out of inheritance
考虑以下 class 图。
我的模型需要满足两个条件:
1-Node
只能有 1 个 cutted Line
,但它可以有 0 个或多个 Line
个实例。
2- 一个节点来自 cutted Line
或 Line
(但不是两者)
我首先绘制波纹管域模型。但后来我决定通过继承 Edge
.
来降低复杂性
好像第一个解决方案覆盖了第二个需求,但是没有覆盖多重性。不幸的是,第二个解决方案涵盖了多重性,但没有涵盖第二个条件。
我怎样才能画出它来满足这两个条件?
更新:
我终于想出了这个解决方案:
但是不知道是不是真的?
我认为您应该简单地使用第二张图片,因为它按预期描述了模型。您仍然可以添加 Edge
class 作为 Line
和 CuttedLine
的一般形式。只是它没有 Node
.
的连接器
或者,您可以使用第一个并添加解释不同多重性的约束。
这种情况称为派生联合。
A Node
comes from either a CuttedLine
, or a Line
(but not both)
Line
和Node
(或CuttedLine
)之间的关联子集关联在 Edge
和 Node
之间,因为如果 Node
来自 Line
(或 CuttedLine
),则:
- 它来自
Edge
Edge
的类型是 Line
(或 CuttedLine
)
此外,Edge
和Node
之间的关联是由[=12]之间的关联派生 =] 和 Node
以及 CuttedLine
和 Node
之间,因为如果 Node
来自 Edge
,那么它来自 CuttedLine
或来自Line
。 UML 将派生联合定义为 "as the union of all of the Properties that are constrained to subset it."
由于 Node
来自单个 Edge
(基数为 1)并且泛化为 不相交 ,因此 Node
来自 来自 Line
或 CuttedLine
,但不是两者。 (如果其中一个集合为空而另一个集合只有一个元素,则两个不同集合的并集只有一个元素。)
考虑以下 class 图。
我的模型需要满足两个条件:
1-Node
只能有 1 个 cutted Line
,但它可以有 0 个或多个 Line
个实例。
2- 一个节点来自 cutted Line
或 Line
(但不是两者)
我首先绘制波纹管域模型。但后来我决定通过继承 Edge
.
好像第一个解决方案覆盖了第二个需求,但是没有覆盖多重性。不幸的是,第二个解决方案涵盖了多重性,但没有涵盖第二个条件。
我怎样才能画出它来满足这两个条件?
更新:
我终于想出了这个解决方案:
但是不知道是不是真的?
我认为您应该简单地使用第二张图片,因为它按预期描述了模型。您仍然可以添加 Edge
class 作为 Line
和 CuttedLine
的一般形式。只是它没有 Node
.
或者,您可以使用第一个并添加解释不同多重性的约束。
这种情况称为派生联合。
A
Node
comes from either aCuttedLine
, or aLine
(but not both)
Line
和Node
(或CuttedLine
)之间的关联子集关联在 Edge
和 Node
之间,因为如果 Node
来自 Line
(或 CuttedLine
),则:
- 它来自
Edge
Edge
的类型是Line
(或CuttedLine
)
此外,Edge
和Node
之间的关联是由[=12]之间的关联派生 =] 和 Node
以及 CuttedLine
和 Node
之间,因为如果 Node
来自 Edge
,那么它来自 CuttedLine
或来自Line
。 UML 将派生联合定义为 "as the union of all of the Properties that are constrained to subset it."
由于 Node
来自单个 Edge
(基数为 1)并且泛化为 不相交 ,因此 Node
来自 来自 Line
或 CuttedLine
,但不是两者。 (如果其中一个集合为空而另一个集合只有一个元素,则两个不同集合的并集只有一个元素。)