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

Architecture 在UML中是否可以将一个XOR约束链接到另一个XOR约束?,architecture,uml,Architecture,Uml,下面是我想做的一个例子: 假设我有5个类,我想表达一个约束,我们可以有一个类“B”或“C”的实例链接到“A”,如果这样我们就不能有任何其他的,如果我们没有这些类的任何实例,我们只能有一个类“D”或“E”的实例 我在这里查阅了官方文件: 但是关于异或约束的部分非常有限。 由于没有明确描述我们不能,我认为这是可能的,但我不确定 感谢您的帮助。在UML类图中,所有类型的约束都可以包含在不变量的形式中,不变量是逻辑条件,可以在附加到类(或关联)的约束矩形/框中用纯英语或对象约束语言(OCL)表示 您的

下面是我想做的一个例子: 假设我有5个类,我想表达一个约束,我们可以有一个类“B”或“C”的实例链接到“A”,如果这样我们就不能有任何其他的,如果我们没有这些类的任何实例,我们只能有一个类“D”或“E”的实例

我在这里查阅了官方文件: 但是关于异或约束的部分非常有限。 由于没有明确描述我们不能,我认为这是可能的,但我不确定


感谢您的帮助。

在UML类图中,所有类型的约束都可以包含在不变量的形式中,不变量是逻辑条件,可以在附加到类(或关联)的约束矩形/框中用纯英语或对象约束语言(OCL)表示

您的约束可以这样添加(附加到类
A
),如下所示:


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

从语法上讲,约束是一个
PackagedElement
,它是一个
元素
,因此也可能受到其他约束。因此,该图表是有效的

但是

然而,从语义上讲,这不是很有用。因为,约束必须为真。因此
A-D{xor}A-E
意味着要么有到D的链接,要么有到E的链接,但不是两者都有,但约束本身总是正确的。这意味着不存在A-C和A-B,从不,因此这些关联是完全无用的


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

这看起来很混乱。它甚至看起来不代表B和/或C。为什么不像@GeertWagner解释的那样附加一个约束来描述附加到a的条件呢?我会选择OCL,因为它似乎是正确的方向,谢谢