实体关系图,当只有一个 class 可以与另一个 class 交互时的概括

Entity Relationship Diagram, generalization when only one class can interact with another class

假设我们有一个用户 class,这是其他两个 class 的概括:Admin 和 noAdmin
还有另一个 class 只有管理员可以与之交互,我们称之为 only_admin

我的问题是,class 应该与什么有关 only_admin?用户还是管理员?

对于你的class图表的UML观点

to what class should only_admin be related to? User or Admin?

越简单明了越好,所以Admin,否则你必须添加约束oclIsKindOf(Admin)oclIsTypeOf(Admin)(见下文)

无论如何,如果这仅适用于 Admin 的实例,而不适用于可能的 classes 继承 Admin 的实例通常使用 oclIsTypeOf(Admin) 需要约束,即使关系附加到 Admin 而不是 User.

来自 Object Constraint Language / formal/2014-02-03 第 153 页:

oclIsTypeOf(type : Classifier) : Boolean

Evaluates to true if self is of the type t but not a subtype of t.

post: self.oclType() = type

oclIsKindOf(type : Classifier) : Boolean

Evaluates to true if the type of self conforms to t. That is, self is of type t or a subtype of t.

post: self.oclType().conformsTo(type)

如果 UserSomething 关联,则 User 的所有特化(即 Admin NoAdmin) 也将与 Something 关联。

因此,如果 Something 仅对 Admin 有意义,则仅与 Admin 关联,而不与 User 关联。该图将 crystal 清晰且不言自明。

补充说明:

  • 如果 NoAdminUser 相比没有什么特别之处,则您不需要拥有自己的 class。
  • 如果事情变得更加棘手,并且 User 将会有更多的专长,其中大多数与 Something 相关联,除了少数,或者如果你有 SomethingForAdminOnly这将是 SomethingForAllUsers 的专业化你可以看看 .