在 UML 中是否可以 link 一个 XOR 约束到另一个 XOR 约束?

Is it possible to link a XOR constraint to another XOR constraint in UML?

这是我想做的一个例子: 假设我有 5 个 classes,我想表达约束,我们可以将 class "B" or/and "C" 的实例链接到 "A",如果是这样我们就不能有任何其他东西,如果我们没有来自那些 classes 的任何实例,我们只能有一个 class "D" 或 "E".

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

感谢您的帮助。

在UML Class图中,各种约束都可以包含在invariants的形式中,符合逻辑可以用简单的英语或 对象约束语言 (OCL) 在附加到的 约束 rectangle/box 中表达的条件一个 class(或协会)。

您的约束可以通过这种方式添加(附加到您的 class A),如下所示:

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

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

但是...

然而,从语义上讲,这不是很有用。因为,约束必须为真。所以 A-D {xor} A-E 意味着 D 或 E 有一个 link,但不是两者都有,但约束本身总是为真。这意味着没有 A-C,也没有 A-B,永远不会,因此这些联想完全没有用。

最简单的方法是为每个可能相关的 class(例如 b、c、d、e)提供一个 linked 属性名称,并用单个词表示排除项约束。