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

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

考虑下面的类图。enter image description here

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

1-

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

2- 节点来自

cutted Line
Line
但不是两者都

我首先画出下面的域模型。但后来我决定通过继承

Edge
来降低复杂性。enter image description here

第一个解决方案似乎涵盖了第二个要求,但没有涵盖多重性。不幸的是,第二个解决方案涵盖了多重性,但没有涵盖第二个条件。 我怎样才能画出它来满足这两个条件? 更新: 我最终想出了这个解决方案: enter image description here

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

uml associations class-diagram multiplicity
2个回答
1
投票

这种情况称为派生联合

A

Node
来自
CuttedLine
Line
(但不是两者)

Line
Node
(或
CuttedLine
子集之间的关联
Edge
Node
之间的关联,因为如果一个
Node
来自于
Line
(或
CuttedLine
) )然后:

  • 它来自
    Edge
  • Edge
    属于类型
    Line
    (或
    CuttedLine

此外,

Edge
Node
之间的关联是从LineNode之间以及
CuttedLine
Node
之间的关联派生
的,因为如果一个
Node
来自于
 Edge
,则它来自
CuttedLine
或来自
Line
。 UML 将派生并集定义为
“作为约束为其子集的所有属性的并集。”
由于

Node

来自单个

Edge
(基数为 1)并且泛化是
不相交
,因此 Node
 来自 
LineCuttedLine
,但是不是都。 (如果其中一个集合为空而另一个集合只有一个元素,则两个不同集合的并集具有单个元素。)

Diagram

我认为你应该简单地使用第二张图片,因为它按预期描述了模型。您仍然可以添加

1
投票
类作为

Line

CuttedLine
 的一般形式。只是它没有连接到 
Node
或者,您可以使用第一个并添加解释不同多重性的约束。

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