【问题标题】:Can we add multiple relationships between two classes in a class diagram?我们可以在类图中的两个类之间添加多个关系吗?
【发布时间】:2021-09-06 08:43:56
【问题描述】:

如果我有两个类,并且它们之间存在两种类型的关系——例如组合和依赖——我们应该怎么做?我们是否在类之间添加了两个关系符号?

示例:假设第一个类是BookFestival,另一个类是BookBook有节日方法注册:

  • 第一种关系:没有书就没有书节作文
  • 第二个关系:如果我们更改音乐节举办日期,则依赖关系会影响图书类别

【问题讨论】:

    标签: uml class-diagram


    【解决方案1】:

    如果两个类之间有 10 种不同类型的关系,则可以显示所有 10 种关系如果这些关系有用

    BookAuthor为例:

    • 一本书可以有多个作者,一个作者可以撰写/贡献几本书。这是一个多对多关联。
    • 同时Book 可能有一个操作将Author 添加到其列表中。所以有一个从BookAuthor«use» 依赖关系。

    理论上,我们可以指出这两种关系。但是,当存在关联时,我们假设存在依赖关系:即使没有操作,Book 也需要知道它的Authors。在实践中,我们并没有明确指出这种隐含的依赖关系。

    再举一个例子EmployeeDepartment

    • 一个Department 有几个Employee 具有部门member 的角色。
    • Department 还有一个Employee,具有manager 的特殊角色。

    我们会指出这两种关系,因为它们都对应于不同类型的关系,并且没有任何暗示其他关系。

    最后一个重要的评论:很少使用组合。在您的示例中,BookFestival 不是由Books 组成的,并且书籍在没有BookFestival 的情况下存在。此外,书籍可以在多个节日上展出。这意味着没有排他性的所有权,没有按节日排列的书籍,因此没有作品。反之,Book 不是由BookFestivals 组成的,一个图书节就不止一本书。这意味着没有相反方向的独占所有权因此两者之间没有组合。

    【讨论】:

      【解决方案2】:

      修改克里斯托夫的回答:

      例如组合和依赖

      在这种情况下,它很简单:依赖是类之间最弱的关系。任何更强大的东西都会继承依赖关系。因此,如果您有一个复合聚合,它将包含依赖项,您不需要再次显示它。你可以这样做,但这毫无意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        相关资源
        最近更新 更多