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