聚合被定义为关联的特殊情况。但是,任何未实现为字段的关联(如通过方法参数建立关系)都被描述为"使用"关系。
那么,是否可能有一个不是聚合或组合的关联?如果是的话,我需要一个针对这种情况的代码示例。
答案 0 :(得分:0)
事实上,我会说模型中的大多数关联案例既不是聚合也不是组合(两者都是部分 - 整体关系类型的形式)。例如,用于将发布者发布的图书分配给此发布者的类Publisher
和Book
之间的关联既不是聚合也不是合成,因为发布者发布的图书不是其中的部分或组成部分。这个出版商。
为了实现这种双向关联,我们使用两个相互反向的引用属性Publisher::publishedBooks
和Book::publisher
,如下面的类矩形所示:
请注意,多值引用属性Publisher::publishedBooks
通常由Java中的列表值属性实现。
我已经在我的教程Managing Unidirectional Associations in a JavaScript Frontend Web App中解释了如何在设计模型中使用关联和引用属性。
答案 1 :(得分:0)
UML标准中没有严格定义共享聚合(空菱形)。因此,要找到一种不能使用它的情况并不容易。
但明确禁止将其用于协会双方。因此,如果您有多对多关系,则必须在类图上显示与none
聚合的多对多关联。当然,您可以将其显示为TWO共享关联,但它不是我们的目标,是吗? : - )
至于代码,如果人们访问许多人访问过许多课程和课程,请为Person课程列出“课程”,为课程课程列出“访客”。
当然,另一方面,对于任何none
关联,您始终可以使用shared
代替shared
,这符合您的意愿并符合您工作地点的规则。但我不知道这些规则,对不起:-)。但可以肯定的是,没有人会让你使用聚合来进行1比1的关联。