我的模型需要满足两个条件:
1-
Node
只能有 1 个 cutted Line
,但可以有 0 个或多个 Line
实例。
2- 节点来自
cutted Line
或 Line
(但不是两者都)
我首先画出下面的域模型。但后来我决定通过继承
Edge
来降低复杂性。
第一个解决方案似乎涵盖了第二个要求,但没有涵盖多重性。不幸的是,第二个解决方案涵盖了多重性,但没有涵盖第二个条件。 我怎样才能画出它来满足这两个条件? 更新: 我最终想出了这个解决方案:
但是我不确定这是真的还是假的?
这种情况称为派生联合。
A
来自Node
或CuttedLine
(但不是两者)Line
Line
和Node
(或CuttedLine
)子集之间的关联Edge
和Node
之间的关联,因为如果一个Node
来自于Line
(或CuttedLine
) )然后:
Edge
Edge
属于类型Line
(或CuttedLine
)此外,
Edge
和Node
之间的关联是从Line
和Node
之间以及CuttedLine
和Node
之间的关联派生的,因为如果一个Node
来自于 Edge
,则它来自 CuttedLine
或来自 Line
。 UML 将派生并集定义为 “作为约束为其子集的所有属性的并集。”由于
Node
来自单个
Edge
(基数为 1)并且泛化是 不相交,因此
Node
来自
Line
或 CuttedLine
,但是不是都。 (如果其中一个集合为空而另一个集合只有一个元素,则两个不同集合的并集具有单个元素。)我认为你应该简单地使用第二张图片,因为它按预期描述了模型。您仍然可以添加
Line
和
CuttedLine
的一般形式。只是它没有连接到
Node
。
或者,您可以使用第一个并添加解释不同多重性的约束。