我对UML类图多重性感到困惑。要问我的问题,首先我需要给你一个例子。考虑以下要求:“各节应有许多主题。”我可以使Section和Topic的类具有以下多样性:
以上关系可以理解为:“ 一个或多个部分包含许多主题”。
但是也要考虑这种设计:
示例2)上面的关系可以理解为“一个部分有很多主题,而一个主题只有一个部分。”
问题1是:什么是正确的设计?
因为对我来说,我认为示例2的设计是正确的,因为在那个特定时间我只考虑一个实例。但是在示例1中,他们认为Section类是一个很高的视图! (当然,我可以使任何类的实例数量无穷大...)
问题2是:在示例2中,我们是否说整个系统中仅存在one节,这就是为什么我们像示例1那样编写它?同样在示例1中,此关系是“多对多”,因此我们需要创建一个关联类来对其进行处理。
希望您能理解我的困惑,在此先感谢:D
Q1:实际上,这取决于要求。正如在不同方面所讨论的,Topic
可能出现在许多Section
中。如果您要求一个主题必须完全涵盖一个主题,那么您的第二种方法将是正确的。无论如何,我认为第一种是更常见的处事方式。
Q2:否。您只能说Topic
只能有一个Section
。告诉我们只有一个部分允许您可能需要一个约束。 (我出于这种目的使用了<<singleton>>
原型,但这不是UML标准。)
BTW:您在ex。 2是错的。左边必须只有1..*
,右边只有一个1
。
在示例1中,有两个独立的语句:
Every的节实例可以具有任意数量的主题和
主题的[[每个]]实例必须至少包含一个部分。我不知道这是否是您的意思。PS:以实心菱形表示的成分表示排他性。因此,多重性最大为1,而不是1 .. *。
不需要关联类。多对多关系只是正常的协会。