6

我对我们在 UML 中使用 {XOR} 约束的正确程度有一些疑问。

在此处输入图像描述

我理解它是如何以两种不同的方式工作的。哪一个是正确的?

  1. xor 约束适用于关联。(或者:A 类型的对象可能与 C 类型的 1 个对象相关联;或者:A 类型的对象可能与 B 类型的零个或 1 个对象相关联;或者:对象 A 可以单独存在,因为我们有 [ 0..1] 靠近 B)。

  2. xor 约束适用于链接(或者:A 类型的对象必须与 C 类型的一个对象关联;或者:A 类型的对象必须与 B 类型的一个对象关联)。

4

3 回答 3

5

多年后,我必须解决这个答案(尽管我得到了很多支持)。

{XOR}意味着该类A必须与B或与C但不与两者或都没有关联。这意味着在一种情况下你有A * - 0..1 B,而在另一种情况下它是A 0..1 - 1 C. 两者本身都是合法的结构。只有在这里,A它将扮演两个独特的角色。

这是一个纯粹的学术结构,所以它在实践中的含义是完全开放的。如果教程/课程中的此类示例与现实世界有一些联系,那将更有意义(也更有帮助)。


旧(错误)答案

这完全是错误的(或谜题)。您只需要一个CA. 但是,由于XOR您可能无法关联B。这意味着:B关系总是存在的0,你也可以离开它。

也许(!)有人把多样性放在了错误的一边。如果你交换它们,那将是有意义的。如果您使用真实姓名而不是 A、B、C,您可以从上下文中猜测。

于 2016-11-29T13:32:38.670 回答
1

选项 2 要求靠近 B 的多重性正好是一个。

选项 1 适用于以下情况:

  1. 1 靠近 A,0..1 靠近 B
  2. A 附近 0..1,B 附近 0..1
  3. A 附近 0..1,B 附近 1
于 2016-11-30T13:33:37.613 回答
-1

xor 是一个布尔运算符,仅当它的两个操作数一个为真另一个为假时才给出真结果。该表示法用于指定基类的实例必须完全参与由 {xor} 约束组合在一起的关联之一。确切地说,其中一个关联必须始终处于活动状态。

于 2021-02-13T11:27:44.840 回答