Either/OR class 图

Either/OR class diagram

我正在参加 UML 考试,希望有人能够回答我的问题。

在问题域中,它说每个参加活动的客户都会有一份合同,包括个人和组织者。我最终得到了一张 class 图表,其中我将个人和组织者与合同 class 联系起来,请查看附件。

我的问题:我是否可以通过与两者建立联系来说是个人签署合同还是组织者签署合同?

据我了解您的问题,您应该对这两个协会使用 xor linked。它可以是从一个关联到另一个关联的虚线,标记为 {xor},或者您可以创建一个带有文本 {xor} 和 link 的注释到两个关联。您必须将多重端更改为 0..1 以避免图表不正确。

Xor 表示对于特定合同存在两个关联之一的 link。

异或在UML specification中有具体说明。在规范的 2.5.1 版(当前)中,它位于第 7.6.5 节,图 7.16。

要做到这一点,最好的方法可能是引入 "Customer" 概念,如下所示。客户与合同的关联是指一个客户签署一份合同,一个合同由一个客户签署。客户与组织者和个人之间的继承链接意味着他们是允许签署合同的客户。

如果你想保留你的原始设计,你可以添加一个约束来表达这样一个事实,即个人或组织者都可以签署合同,但我觉得这不太优雅。