多重关系中的UML关联类

tre*_*mon 5 uml class-diagram

我正在用 UML 制作类图,但找不到有关此主题的信息。我可以在多个协会课程中开设一个课程吗?这是一个例子:

示例模型

消息应该是用户和组之间的关联类,也是用户和频道之间的关联类。这是允许的还是有其他方法可以做到这一点?谢谢你!

bru*_*uno 1

这是一个非常有趣的问题。

\n

formal/2017-12-05中,图11.25关联第199页和\xc2\xa7 11.5.3.2关联类起始页200和\xc2\xa7 11.8.2 AssociationClass [Class]起始页220中都没有说一个类不能用于多个关联类。

\n

所以对我来说是允许的

\n

在此输入图像描述

\n

但警告,类的名称和关联的名称必须相同,来自formal/2017-12-05 \xc2\xa7 11.5.3.2 Association Classes page 200 :

\n
\n

关联和类都是分类器,因此具有一组公共属性,例如能够具有功能、\n具有名称等。这些属性是从同一构造(分类器)多重继承的,并且不会重复。\n因此, AssociationClass 只有一个名称,并且具有为类和\n关联定义的一组功能。

\n
\n

如果要创建关联类,则该类不能命名为Message和关联发送。

\n

注意类和关联是NamedElement(第47页的\xc2\xa7 7.8.9 NamedElement [抽象类]),给定名称可以用于多个NamedElement ,但要在同一命名空间中共存,两个NamedElement必须是可区分的。来自正式/2017-12-05 \xc2\xa7 7.8.9.7 操作第 49 页:

\n
\n

isDistinguishableFrom(n : NamedElement, ns : 命名空间) : 布尔值
\n查询 isDistinguishableFrom() 确定两个 NamedElement 是否可以在逻辑上共存于一个命名空间内。\n 默认情况下,如果 (a) 两个命名元素的类型互不相同,或者 (b) 它们具有不同的名称,则它们是可区分的。

\n
\n

然后两个关联消息一定是在不同的命名空间中,因为它们具有相同的名称。

\n

  • AssociationClass 仍然是一个 Association。因此,适用相同的规则:二进制 Association 或 AssociationClass 连接两个类。这意味着你的模型是不可能的。您可以有一个三元关联,但这将是完全不同的事情,具有完全不同的表示法(白色菱形连接到所有三个,并用虚线连接到 AssociationClass 的类部分)。所以,我认为@JimL 的答案是正确的选择。 (2认同)