表示 class 与其自身之间的关联

Representing associations between a class and itself

我有一位 class 导师,在某些情况下 class 可以担任课程协调员,我可以使用递归关联来表示这种关系吗? 我一开始是这样代表协会的,我觉得不对

快速修复

在你的图表中你声称 all Tutors are coordinating 正好是一个 Course.这是 1 being the same as 1..1 的结果。但这不是你的叙述所说的:

some instances of that class can be course coordinators.

因此,您应该用 0..1 替换 Course 侧的多重性。它会翻译一些 Tutors 可以是 coordinating 一个 Course (但不是全部)。

另一种选择

不便之处在于模型没有定义Course Coordinators。也许这只是措辞,并不重要。但可能还有更多关于 Course Coordinator 的内容可以证明单独的 class 具有额外的属性和行为:

  • 如果是特殊的Tutor,就把它做成特化,让这个额外的class有coordinating关联。

  • 如果这是一个 Tutor 和其他 classes (Professor, Assitant, ...) 可以的特殊角色接受,你最好在 OOP 中选择 composition over inheritance (object composition 对应于 UML 关联)。 TutorCourse Coordinator 之间的关联将显示为“扮演角色”。

不相关:

再问你几个问题(只是为了确保多重性表达你的意思):

  • 一个特定的 Course 可以由几个 Tutors 教授?
  • 没有Tutor可以教不止一个Course ?
  • 一个特定的 Course 可能没有导师进行教学(因为 * 意味着 0..*)?
  • 同一个Course可以由几个人协调Tutors?