【发布时间】:2019-03-07 23:18:57
【问题描述】:
我想模拟两个人之间的合作关系。我的第一个想法是使用协会。协会的两端必须以不同的方式命名。因此我需要两个角色:partner1 和partner2。这反过来又允许每个人有两个伙伴。不完全是我想要的。
我的第二次尝试是使用属性partner。这里的问题是,一个人的伙伴的伙伴应该是这个人,但模型没有捕捉到这一点。当然,我们可以使用具有这种效果的约束,但我更喜欢使用图形表示法的解决方案。
第三个选项(建议在下面的评论中)使用一个额外的类Partnership。这可行,但如果它没有任何属性,它只会使模型变得比必要的复杂。
最优雅的解决方案是一个关联,其中两个member ends 将是相同的partner 属性。但是这是不允许的,因为成员端属性是唯一的。因此它不能包含两次相同的属性。这是规范中的错误吗?这真的是罕见的情况吗?所有递归关联都会发生这种情况,其中双方的角色相同。
【问题讨论】:
-
我假设您想避免使用名为
Partnership的附加类来解决它? -
如果合作伙伴需要额外的属性,这样的类是必要的。但没有它,我认为这是一种解决方法。
-
哦,我看到我给出了答案 - 哈哈
-
嗯,问题是在这种情况下它是最简单的解决方案。替代方案是约束,不是很优雅,但也可以工作。
-
最好的解决方案可能是具有约束self.partner.partner = self的定向关系“伙伴”
标签: uml class-diagram