关联和聚合之间的差异

cs0*_*815 8 oop uml

我理解聚合和组合之间的区别,但我在关联方面有点挣扎.我目前的理解是,当"它们彼此使用"时,类之间存在关联,例如,在方法调用期间将一个对象传递给另一个对象.也可以看看:

http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit

两个对象都是独立存在的,与聚合相反,没有对象是另一个对象的容器类.这是否意味着两个对象必须具有其他对象的副本(例如1:m关系)或者如何"存储"关联.任何反馈都将非常感激.

vai*_*olo 11

来自UML上层建筑2.4.1:

关联声明可以在关联类型的实例之间存在链接.链接是一个元组,每个结尾都有一个值,其中每个值都是结尾类型的一个实例.(UML上层建筑,第37页)

没有更多,没有更少.而且非常含糊.因此,它也很难理解.我定义的内容(在我教授的课程中)是从依赖到组合的链接层次结构,其中:

  1. 从依赖AB该装置A使用B,但间接地(通过接收它的实例,并将它们转发到其他对象说).
  2. 从关联AB装置,其A使用B(通过调用方法例如)直接地,
  3. 从聚合AB装置,其B是的一部分A(在语义上),但B可以共享和如果A被删除,B不会被删除.请注意,这并未说明如何实现"部分".
  4. 从组合物AB像聚合,其中B不能被共享,并且如果A被删除,所有它的聚集体(的B多个)也被删除.

  • 实际上这个答案是错误的,imo:聚合可以实现与"正常"关联几乎相同的方式(它们都可以或者不能在实际引用中显示) (2认同)
  • 嗯,对迟到的评论感到抱歉,但我认为聚合是较弱的关联形式.IE - 不应该交换您对聚合和组合的定义吗?成分应为具有实心钻石的类型(完全所有权),聚合应为空心钻石(参考所有权); 对? (2认同)