【发布时间】:2021-09-06 08:43:56
【问题描述】:
如果我有两个类,并且它们之间存在两种类型的关系——例如组合和依赖——我们应该怎么做?我们是否在类之间添加了两个关系符号?
示例:假设第一个类是BookFestival,另一个类是Book。 Book有节日方法注册:
- 第一种关系:没有书就没有书节作文
- 第二个关系:如果我们更改音乐节举办日期,则依赖关系会影响图书类别
【问题讨论】:
标签: uml class-diagram
如果我有两个类,并且它们之间存在两种类型的关系——例如组合和依赖——我们应该怎么做?我们是否在类之间添加了两个关系符号?
示例:假设第一个类是BookFestival,另一个类是Book。 Book有节日方法注册:
【问题讨论】:
标签: uml class-diagram
如果两个类之间有 10 种不同类型的关系,则可以显示所有 10 种关系如果这些关系有用。
以Book和Author为例:
Book 可能有一个操作将Author 添加到其列表中。所以有一个从Book 到Author 的«use» 依赖关系。理论上,我们可以指出这两种关系。但是,当存在关联时,我们假设存在依赖关系:即使没有操作,Book 也需要知道它的Authors。在实践中,我们并没有明确指出这种隐含的依赖关系。
再举一个例子Employee和Department:
Department 有几个Employee 具有部门member 的角色。Department 还有一个Employee,具有manager 的特殊角色。我们会指出这两种关系,因为它们都对应于不同类型的关系,并且没有任何暗示其他关系。
最后一个重要的评论:很少使用组合。在您的示例中,BookFestival 不是由Books 组成的,并且书籍在没有BookFestival 的情况下存在。此外,书籍可以在多个节日上展出。这意味着没有排他性的所有权,没有按节日排列的书籍,因此没有作品。反之,Book 不是由BookFestivals 组成的,一个图书节就不止一本书。这意味着没有相反方向的独占所有权因此两者之间没有组合。
【讨论】:
修改克里斯托夫的回答:
例如组合和依赖
在这种情况下,它很简单:依赖是类之间最弱的关系。任何更强大的东西都会继承依赖关系。因此,如果您有一个复合聚合,它将包含依赖项,您不需要再次显示它。你可以这样做,但这毫无意义。
【讨论】: