是否可以将XOR约束链接到UML中的另一个XOR约束?

时间:2018-11-26 17:29:01

标签: architecture uml

以下是我要执行的操作的一个示例: 假设我有5个类,我想表达一下这样的约束:我们可以将类“ B”或/和“ C”的实例链接到“ A”,如果这样的话,我们不能有其他任何东西,如果没有没有这些类的任何实例,我们只能有一个类“ D”或“ E”的实例。

enter image description here

我在此处查看了官方文档:https://www.omg.org/spec/UML/2.5.1/ 但是关于异或约束的部分非常有限。 由于我们不能未明确描述,我认为这是可能的,但我不确定。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在UML类图中,可以以 不变量 的形式包括各种约束,这是可以用简单的英语或以附加到类(或关联)的约束矩形/框中的对象约束语言(OCL)

您的约束可以通过这种方式添加(附加到您的课程A上),就像这样:

enter image description here

但是您的约束不能以您尝试表达的方式来表达。用于析取关联约束的特殊虚线符号不能以这种方式组合。

答案 1 :(得分:1)

从语法上讲,约束是PackagedElement,它是Element,因此也可以受其他约束的约束。因此图表是有效的。

但是...

但是,从语义上讲,这不是很有用。因为,约束必须为真。因此,A-D {xor} A-E意味着存在到D或E的链接,但没有两个链接,但是约束本身始终是正确的。这意味着永远不会有A-C和A-B,因此这些关联是完全无用的。

最简便的方法是为每个可能相关的类(例如b,c,d,e)赋予一个链接的属性名称,并在单个约束中表示排除项。