UML 规范:我需要继承吗?

UML specification : Do I need inheritance?

这是我的应用程序:目的是根据错误添加记录(但并非所有错误都会导致添加新记录,只有主要错误)。 每个会话都有很多错误,然后内部服务将管理这些错误以了解哪些是主要错误(哪些是 'small' 错误,我的意思是暗示或相关或附加到此主要错误)。

UML 图:

所以我需要您对我的 UML 图的帮助和建议,您认为这是最好的方法吗?我真的需要在这里进行子类化吗(或者可能只放两个不同的 类 Error 和 MainError 会更好)?

非常感谢

自己讨论图表。什么是 Error?它只包含一个 ErrorID。这不是什么信息。那么为什么要创建这样一个class呢?我看不出有任何理由。那么,当没有理由时,为什么要创造它?你在那里。这是多余的。您可能可以使用从 MainError 到 self 的关联。然后您可以将 MainError 重命名为 Error.

我认为下图可以满足并清楚地重申您的要求。

这表示的是:

  • 一个Session遇到零个或多个Errors
  • 一个Error遇到一个Session
  • 一个Error必须是其子类类的一个且仅是一个实例("complete"表示实例必须是子类的实例;"disjoint"意味着一个实例不能被多重分类,无论如何这在 Java 中是不可能的。)
  • A Main Error 导致零个或多个 Subordinate Errors
  • 一个Subordinate Error是由零个或多个Main Errors
  • 引起的

这意味着每个 Error 最初创建为 Unclassified Error,然后分类为 Main ErrorSubordinate Error

我没有费心去建模 Record,因为它太模糊了,对讨论没有任何意义。

如果您要实现此模型,关联端将进行名称更改,在保留语义的同时变为 normalLookingCamelCaseForJava。以下是名称更改:

  • encounters 将变为 encounteredErrors 并且类型为 List<Error>
  • encountered in 将变为 encounteringSession 类型 Session
  • causes 将变为 causedSubordinateErrors 类型 List<SubordinateError>
  • caused by 将变为 causingMainErrors 类型 List<MainError>

在 JPA 中,您可以使用鉴别器将所有错误 类 映射到一个 table,这将使重新分类的性能更高。 (请参阅 changing entity type in JPA 以了解如何执行此操作。)请注意,您可能希望将多对多关联映射到单独的关系数据库 table。不过,这是一个单独的讨论。