显示继承的子类与继承的另一个类之间的多重性

时间:2016-08-20 09:48:40

标签: uml class-diagram

考虑以下类图。enter image description here

我需要在我的模型中满足两个条件:

1 - Node只能有1个cutted Line,但它可以有0个或多个Line个实例。

2-节点来自cutted LineLine但不是两者

我首先绘制波纹管域模型。但后来我决定通过继承Edge来降低复杂性。enter image description here

似乎第一个解决方案涵盖了第二个要求,但它并未涵盖多重性。不幸的是,第二种解决方案涵盖多重性而非第二种情况。 我如何绘制它以满足两个条件? 的更新 我终于拿出了这个解决方案: enter image description here

但我不确定这是不是真的?

2 个答案:

答案 0 :(得分:0)

我认为您应该简单地使用第二张图片,因为它按照预期描述了模型。您仍然可以将Edge类添加为LineCuttedLine的一般形式。只是它没有Node的连接符。

或者,您可以使用第一个并添加解释不同多重性的约束。

答案 1 :(得分:0)

这种情况称为 派生的联盟

  

Node来自CuttedLineLine(但不是两者)

LineNode(或CuttedLine 子集 之间的关联Edge与{之间的关联{1}},因为如果Node来自Node(或Line),那么:

  • 它来自CuttedLine
  • Edge类型为Edge(或Line

此外,来自CuttedLineEdge之间关联的NodeLine之间的关联 派生 NodeCuttedLine之间,因为如果Node来自Node,那么它来自Edge或来自CuttedLine 。 UML将派生联合定义为“作为所有限制为子集的属性的并集。”

由于Line来自单个Node(基数为1)且泛化为不相交,因此Edge来自<{1}} >来自NodeLine的,但不是两者。 (如果其中一个集合为空而另一个集合具有单个元素,则两个不同集合的并集具有单个元素。)

Diagram