解释连续三个 类 与共享一个 "Line" 的 UML 图的区别

Interpreting the Difference in a UML Diagram of Three Classes in a Row versus Sharing a "Line"

我想了解将 类 与共享线路连接在一起或让 类 仅通过其他 类“连接”之间的区别。这里有显着差异吗?如果 类 共享一条线路,您是否专门试图传达信息正在从共享线路上的其他 类 访问?

对于“连续三个对象”,我的意思是如下所示的布局(对不起,我的图表是:

对于“共享线”,我指的是如下所示的布局:

访问权限差异

在第一种情况下 Flat 的实例和 Tenant 的实例相互认识,并且独立于 TenantLeaseAgreement 的实例相互认识。 Flat 实例无法直接访问 LeaseAgreement 实例,LeaseAgreement 实例也无法直接访问访问 Flat 的实例,如果 Tenant 以任何方式(方法或 public 属性提供这些访问,他们只能访问其他实例).

在第二种情况下,有一个 association-classFlatTenant[=] 的实例46=] 更了解对方 LeasingContract 的对应实例,表明它们是如何关联的。


知识差异

在第一种情况下,假设隐藏的多重性不是 1,有两个租金的租户与 Flat 的两个实例和 LeaseAgreement[= 的两个实例相关联46=] 但给定模型中没有任何内容允许 link LeaseAgreement 的正确实例与 Flat 的正确实例,这意味着模型并没有说明租赁协议是为哪个公寓编写的。

在第二种情况下没有歧义,每对实例 FlatTenant 与(实际上是抛出) LeasingContract

的正确实例

下图中的符号称为关联 Class(参见 this wiki)。基本上它是 1-* AC *-1 关系的快捷方式,其中 AC 连接两个 类,因此您可以添加属性和操作。在您的示例中,AC 是 Leasing contract,它会添加有关持续时间、付款等的信息。两个 * 取自 AC 关联远端的 * 左右。所以这相当于你的下图: