更好的 UML class 图结构来表示个体的婚姻

Better UML class diagram structure to represent marriage of individuals

目前我正在处理一个更大项目的一部分,但我不太确定如何处理系统的这一部分。

一个人可以多次结婚,每次结婚都需要有主婚人、伴侣1、伴侣2和见证人。个人可以在多重婚姻中扮演这些角色。

我想知道是否有一种方法可以用较少的关联来表示所有必要的个体,因为在查看整个系统时图表很快就会变得一团糟。

Updated class diagram

partner1partner2替换为partner,重数为2,当然同样适用于伙伴见证

individualIdmarriageId 是错误的,因为写下划线表示它们是 static。可能它们是主键,但它们是实例成员,而不是 class 成员。也可以命名为id,没用有前缀

什么是 statusPartner? class-协会可以支持吗?

个人->婚姻的分离关系是错误的,因为这样的婚姻与个人参与的婚姻不一样,无论其角色如何,这都不是您想要的。所以删除它并使用双向关系

根据您的评论

statusPartner is simply status of the partner before marriage (divorced, widow and so on)

强制通过 class 协会管理它:

  • 只有 partner 你无法知道谁是 statusPartner1statusPartner2,当然如果是 class-association.
  • ,你就没有这个问题
  • 您也可以在个人中移动该属性,但在这种情况下,它不仅存在于合作伙伴,而且拥有它没有多大意义

例如:

请注意,也可以使用 class-association 仅对主祭和证人使用一种关系:

有一个限制条件说有两个人的角色是 witness,一个人的角色是 officiant

角色也可以是枚举或被isWitness替换为布尔值等

也可以只使用一个class-association :

第一个约束说伴侣的角色是伴侣,第二个约束说在婚姻中有两个人角色见证人,其中一位担任官员,两位担任合伙人

  1. 完美!但是注意一开始有partner1Witness和partner2Witness,也就是每个partner都有自己的witness。
  2. 第一个约束说合作伙伴的角色是伴侣,第二个约束说在婚姻中有两个人扮演证人角色,一个人扮演主祭角色,两个人扮演伴侣角色 可能是图表

图中可能的方案