oop – 关联和聚合之间的差异

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

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

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

来自UML上层建筑2.4.1:

An association declares that there can be links between instances of the associated types. A link is a tuple with one value for each end of the association,where each value is an instance of the type of the end. (UML Superstructure,Page 37)

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

>从A到B的依赖意味着A使用B但是间接地(例如通过接收它的实例并将它们转发给其他对象).>从A到B的关联意味着A直接使用B(例如通过调用方法)>从A到B的聚合意味着B是A的一部分(语义上),但B可以共享,如果删除A,则不删除B.请注意,这并未说明如何实现“部分”.>从A到B的组合就像聚合,其中B不能被共享,如果A被删除,它的所有聚合(B)也被删除.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...