问题描述
我想了解通过共享线路将类连接在一起或通过其他类仅“连接”类之间的区别。这里有明显的区别吗?如果班级共享一行,您是否专门试图传达正在共享行上的其他班级访问的信息?
对于“连续三个对象”,我的意思是一种布局,如下所示(抱歉,我的图是:
对于“共享线”,我的意思是布局将如下所示:
解决方法
访问权限差异
在第一种情况下, 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协会远端的*
左右。因此,这将等效于您的下图: