UML 规范:我需要继承吗?
UML specification : Do I need inheritance?
这是我的应用程序:目的是根据错误添加记录(但并非所有错误都会导致添加新记录,只有主要错误)。
每个会话都有很多错误,然后内部服务将管理这些错误以了解哪些是主要错误(哪些是 'small' 错误,我的意思是暗示或相关或附加到此主要错误)。
UML 图:
所以我需要您对我的 UML 图的帮助和建议,您认为这是最好的方法吗?我真的需要在这里进行子类化吗(或者可能只放两个不同的 类 Error 和 MainError 会更好)?
- 所以每个主要错误都有其相关错误的列表
- 一个主错误不能是另一个主错误列表的一部分
- 一个错误可以关联到多个主要错误
- 我正在使用 JPAJava 开发应用程序
- 一条记录只与一个 MainError 关联,显然有很多错误(因为每个 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 Error
或 Subordinate 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。不过,这是一个单独的讨论。
这是我的应用程序:目的是根据错误添加记录(但并非所有错误都会导致添加新记录,只有主要错误)。 每个会话都有很多错误,然后内部服务将管理这些错误以了解哪些是主要错误(哪些是 'small' 错误,我的意思是暗示或相关或附加到此主要错误)。
UML 图:
所以我需要您对我的 UML 图的帮助和建议,您认为这是最好的方法吗?我真的需要在这里进行子类化吗(或者可能只放两个不同的 类 Error 和 MainError 会更好)?
- 所以每个主要错误都有其相关错误的列表
- 一个主错误不能是另一个主错误列表的一部分
- 一个错误可以关联到多个主要错误
- 我正在使用 JPAJava 开发应用程序
- 一条记录只与一个 MainError 关联,显然有很多错误(因为每个 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 Error
或 Subordinate 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。不过,这是一个单独的讨论。