解释连续三个类的UML图与共享“线”的区别

问题描述

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

对于“连续三个对象”,我的意思是一种布局,如下所示(抱歉,我的图是:

enter image description here

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

UMl Diagram Example

解决方法

访问权限差异

在第一种情况下, Flat 实例和 Tenant 实例相互了解,并且独立于 Tenant LeaseAgreement 的实例彼此了解。 Flat 的实例不能直接访问 LeaseAgreement 的实例,而 LeaseAgreement 的实例不能直接访问 Flat ,它们只能访问 Tenant 以任何方式(方法或公共属性)提供这些访问的其他实例。

在第二种情况下,存在一个关联类 Flat Tenant 的实例彼此了解更多,而的相应实例> LeasingContract 指示它们如何关联。


关于知识的差异

在第一种情况下,假设隐藏的多重性不是1,一个拥有两个房租的租户与两个 Flat 实例和两个 LeaseAgreement 实例关联,但是其中没有任何内容给定的模型允许将 LeaseAgreement 的正确实例与 Flat 的正确实例链接,这意味着该模型并没有说是为哪个公寓签订了租赁协议

在第二种情况下,不存在歧义, Flat Tenant 的每对实例都与(实际上是抛出的) LeasingContract

,

下部图片中的符号称为关联类(请参阅this wiki)。基本上,这是1-* AC *-1关系的快捷方式,其中AC连接两个类,因此您可以添加属性和操作。在您的示例中,AC为Leasing contract,它将添加有关工期,付款等信息。两个*取自AC协会远端的*左右。因此,这将等效于您的下图:

enter image description here