【问题标题】:How to implement an association class with a bidirectional many-to-many relationsship? [closed]如何实现具有双向多对多关系的关联类? [关闭]
【发布时间】:2012-08-16 13:18:01
【问题描述】:

我有一个名为Role 的关联类,如下所示:

我之前没有真正使用过关联类,所以我不得不问:这是正确的用法吗? 这个想法是每个人在每个组中都有特定的角色,而每个组也知道与他们相关的人。

虽然我明白原理,但我不知道如何实际实现它。

【问题讨论】:

  • 你为什么不问一个具体的问题而不是一个开放式的问题。
  • StackOverflow 不是要提出清晰且通用的问题,以便将来对其他人有用吗?如果你同意这一点,那么我不明白你的意思。这个问题到底应该更具体的是什么?
  • 这个问题属于软件架构领域。答案是主观的。我建议删除“哪个是最好的”。后者是赞成和反对的比较。这非常适合 Programmers SE。投票结束,因为迁移到 PSE 似乎已被删除。
  • 我不明白。为什么是主观的?哪些因素使这变得主观?我不是在这里谈论编码风格。据我所知,我说的是如何实现一个非常简单的关联设计。这里有什么我不明白的地方吗?

标签: c# uml associations implementation


【解决方案1】:

我认为直接的实现是让关联类(为了清楚起见,我将其命名为GroupMembership)包含

  • 对 Person 的引用
  • 对组的引用
  • 描述组成员性质的其他数据成员(如您的 isAdmin,或对描述成员性质的另一个对象的引用)

Person 类包含对GroupMembership 对象的引用列表,描述了此人所属的组。

Group 类还包含对GroupMembership 对象的引用列表,为您提供有关组成员的信息。

【讨论】:

  • 非常感谢您的回复,这正是我想要的。当您想关联PersonGroup 时,您是否只需在关联方法中包含相反的信息,例如用户有一个方法:public void AddGroup(GroupMembership gm, Group g),然后在该方法中双向处理关联,或者是否可以在不包括GroupMembershipGroup 的情况下执行此操作?还是这就是主观问题的来源?
  • 我认为这取决于个人偏好和程序的其余部分,您是否希望逻辑在个人、组或外部创建这样的关联(例如 GroupMembership 类中的静态方法) .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多