uml - 如何建立伙伴关系模型?

我想模拟两个人之间的伙伴关系。我的第一个想法是使用协会。协会的两端必须以不同的方式命名。因此我需要两个角色:partner1partner2。这反过来又允许每个人有两个伙伴。不完全是我想要的。 我的第二个尝试是使用属性 partner。这里的问题是,一个人的伙伴的伙伴应该是这个人,但模型没有捕捉到这一点。当然,我们可以使用具有这种效果的约束,但我更喜欢使用图形符号的解决方案。

第三个选项(在下面的评论中建议)使用一个额外的类 Partnership。这可行,但如果它没有任何属性,它只会使模型变得比必要的更复杂。

最优雅的解决方案是一个关联,其中两个 member ends 都是相同的 partner 属性。但是这是不允许的,因为成员端属性是唯一的。因此它不能包含相同的属性两次。这是规范中的错误吗?这真的是一个罕见的案例吗?它发生在所有递归关联中,其中双方的角色相同。

最佳答案

这是一个对称部分关联的例子。这种关联只能在适当约束的帮助下建模,如以下模型所示:

只有在定义了关联构造型(如“对称”)中使用的相应约束关键字时,才能避免附加的显式约束/不变量。不幸的是,UML 2.5 不提供这样的构造型,但我们可以像这样自由添加它:

[我在提交答案后才阅读上面“bruno”的评论。 “bruno”正确指出了约束主要部分的必要性:self.partner.partner = self。]

https://stackoverflow.com/questions/54981938/

相关文章:

android - 在自定义 Camera2 API 上显示矩形边界框(覆盖),以便仅捕获框内的图像

c# - .NET Core 2 中的 Startup.cs 中的 "IConfiguration

python-3.x - 在将多头 pandas 数据帧输出到 excel 时摆脱索引

c++ - Cmake 仅包含 header 目标来自仅 header 目标

unity3d - 应该如何使用 Unity 的 ExecuteEvents.Execute?

angular - 由于内存问题,compodoc 未生成图形

ionic-framework - Ionic3 - 电子邮件编辑器 - 对象(...)不是函数

kubernetes - 如何在 OSX 上使用 Kubernetes 持久本地卷和 Minikub

debugging - 如何从 Web 应用程序连接本地托管的 Azure BOT

javascript - 使用 css 或 html5 的置换贴图