UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
三者描述对象的附属[也就是依赖]关系: 关联<聚合<组合, 依赖关系是逐渐加强的.
聚合和组合的关系,表示一个类对象持有另外的类对象作为自己的一个属性.
关联仅仅表示一个对象跟另外的对象发生了通信, 没有持有它作为对象. 所以人们说:
关联描述的是方法层次上的交互, 而聚合和组合是描述属性层次上的交互!
For Example: 邮递员和你的交互, 属于关联, 因为他只是拜访你, 给你送一封信.
邮递员和邮局的关系,属于聚合或者组合{暂且只区分关联关系}.
原因是: 你打电话给邮递员送信,邮递员不一定听你的, 而邮局就不同了, 它要自己的
邮递员送信, 邮递员敢不听话吗?
这就是关联跟其它两种方法的区别, 你没有持有对方做为自己的属性, 用一次,算别人给你
的恩赐, 但你不可能肆意指挥它
聚合和组合的关系:
他们都将对象持有为属性. 但这是不同的.
比如你买的书, 和你借的书. 现在都放在家里. 但概念是不同的, 你买的书,可以随便处理,
鬼划糊涂,但图书馆的借来的书,你能这么干吗? 聚合:大家都可持有,但不可完全占有,组合:
私有财产.
他们是描述对象之间的关系, 不要惊讶, 确实是对象. 即使是用类图表示他们的关系,
也是类的对象关系, 所以, 要解决这个问题,一定要联系现实的对象.
三者描述对象的附属[也就是依赖]关系: 关联<聚合<组合, 依赖关系是逐渐加强的.
聚合和组合的关系,表示一个类对象持有另外的类对象作为自己的一个属性.
关联仅仅表示一个对象跟另外的对象发生了通信, 没有持有它作为对象. 所以人们说:
关联描述的是方法层次上的交互, 而聚合和组合是描述属性层次上的交互!
For Example: 邮递员和你的交互, 属于关联, 因为他只是拜访你, 给你送一封信.
邮递员和邮局的关系,属于聚合或者组合{暂且只区分关联关系}.
原因是: 你打电话给邮递员送信,邮递员不一定听你的, 而邮局就不同了, 它要自己的
邮递员送信, 邮递员敢不听话吗?
这就是关联跟其它两种方法的区别, 你没有持有对方做为自己的属性, 用一次,算别人给你
的恩赐, 但你不可能肆意指挥它
聚合和组合的关系:
他们都将对象持有为属性. 但这是不同的.
比如你买的书, 和你借的书. 现在都放在家里. 但概念是不同的, 你买的书,可以随便处理,
鬼划糊涂,但图书馆的借来的书,你能这么干吗? 聚合:大家都可持有,但不可完全占有,组合:
私有财产.
他们是描述对象之间的关系, 不要惊讶, 确实是对象. 即使是用类图表示他们的关系,
也是类的对象关系, 所以, 要解决这个问题,一定要联系现实的对象.