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