【问题标题】:UML Class Diagram MultiplicityUML 类图多重性
【发布时间】:2019-12-28 14:02:19
【问题描述】:

我对 UML 类图的多样性感到困惑。 要问我的问题,首先我需要给你一个情况的例子;考虑这个要求: “章节应该有很多主题。” 我可以为 Section 和 Topic 创建具有多样性的类,如下所示:

示例 1)

上述关系可以理解为:“一个或多个部分有很多主题”。

但也考虑一下这种设计:

示例 2) 上面的关系可以理解为“一个section有很多topic,一个topic只有一个section”。

问题 1 是: 什么是正确的设计?

因为对我来说,我认为示例 2 的设计是正确的,因为我在那个特定时间只考虑一个实例。但是在示例 1 中,他们认为 Section 类是一个非常高的视图! (当然我可以创建任何类的无限数量的实例......)

问题2是:在示例2中,我们是否说整个系统中只存在一个 Section,这就是我们写的原因和例 1 一样吗?同样在示例1中,这种关系是多对多的,所以我们需要创建一个关联类来处理它。

希望你能理解我的困惑,提前谢谢:D

【问题讨论】:

    标签: class uml diagram multiplicity


    【解决方案1】:

    Q1:其实这取决于需求。 Topic 可以出现在许多 Sections 中,正如在不同方面讨论的那样。如果您要求一个主题必须在一个部分中完全涵盖,那么您的第二种方法是正确的。无论如何,我认为第一种是更常见的做事方式。

    Q2:不。你只是说Topic 只能有一个Section。要告诉您只允许一个部分,您可能需要一个约束。 (不过,我使用<<singleton>> 构造型用于这种目的,但它不是UML 标准。)

    顺便说一句:你在 ex 中的多样性。 2错了。左边你必须只有一个1..*,右边只有一个1

    【讨论】:

    • 感谢您的回答 :) 对于您的第一个回答:是的,这实际上意味着同一主题不能出现在多个部分中。例如:TopicA 不能在 SectionA 和 SectionB 中。我不喜欢示例 1 的原因,因为与示例 2 不同,我们需要再添加 1 个关联类来链接 Topic 类和 Section 类(多对多关系)。所以我认为我们不需要让它多这项任务的许多关系。请注意:该部分可能有 0 到多个主题,这就是我只使用 * 的原因。
    • 你的第二个前任。在左侧显示 * 超过 1。那是不正确的。与右侧堆叠的两个 1 相同。
    【解决方案2】:

    在示例 1 中有两个独立的语句:

    一个部分的每个实例可以有任意数量的主题和

    每个主题的实例必须至少有一个部分。不知道你是不是这个意思。

    PS:由实心菱形表示的构图意味着排他性。因此,多重性最多可以是 1,而不是 1..*。

    不需要关联类。多对多关系只是正常的关联。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2011-07-09
      相关资源
      最近更新 更多