Class UML类图多样性

Class UML类图多样性,class,uml,diagram,multiplicity,Class,Uml,Diagram,Multiplicity,我对UML类图的多样性感到困惑。 要问我的问题,首先我需要给你一个情况的例子;考虑这一要求: “各节应包含许多主题。” 我可以按如下方式为章节和主题创建多个类: 示例1) 上述关系可以理解为:“一个或多个部分有许多主题” 但也可以考虑这个设计: 示例2) 上述关系可以理解为“一节有多个主题,一个主题只在一节中。” 问题1是: 正确的设计是什么 因为对我来说,我认为示例2的设计是正确的,因为我在那个特定的时间只考虑了一个实例。但是在示例1中,他们认为Section类是一个非常高的视图!(当然,我

我对UML类图的多样性感到困惑。 要问我的问题,首先我需要给你一个情况的例子;考虑这一要求: “各节应包含许多主题。” 我可以按如下方式为章节和主题创建多个类:

示例1)

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

但也可以考虑这个设计:

示例2) 上述关系可以理解为“一节有多个主题,一个主题只在一节中。”

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

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

问题2是:在例2中,我们是否说整个系统中只存在一个部分,这就是为什么我们在例1中这样写?同样在示例1中,这种关系是多对多的,因此我们需要创建一个关联类来处理它


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

Q1:事实上这取决于要求。一个
主题
可以出现在许多
部分
。如果你要求一个主题必须完全包含在一个部分中,那么你的第二种方法是正确的。无论如何,我认为第一种是更普遍的做事方式

Q2:否。您只说一个
主题
只能有一个
部分
。要知道只允许一个部分,您可能需要一个约束。(我使用了一个
原型来实现这种目的,但它不是UML标准。)


顺便说一句:你在例2中的多重性是错误的。左边必须只有一个
1..*
,右边只有一个
1

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

节的每个实例都可以有任意数量的主题和

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

PS:填充钻石所示的成分暗示着排他性。因此,多重性的最大值可以是1,而不是1..*


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

谢谢你的回答:)你的第一个回答:是的,这实际上意味着同一主题不能出现在多个部分中。例如:TopicA不能在A部分和B部分中。我不喜欢示例1的原因是,与示例2中不同,我们需要再添加一个关联类来链接主题类和小节类(多对多关系)。因此,我认为我们不需要为这项任务建立多对多关系。请注意:该部分可能有0到多个主题,这就是为什么我只使用*的原因。你的第二个前男友在左边显示*超过1。那是不对的。与右侧两个堆叠的1相同。