聚合是指一个对象拥有另一个对象,仅强调“拥有”。而组合是指一个对象是另一个对象的一部分,强调“不可分割”,两个对象具有相同的生命周期。两者的差别就好比创立一间公司时您可以不要雇员(拥有),但创造一个人时您却不能丢掉了他的心(不可分割)。
关联和依赖都是指一个对象知道另一个对象。区别在于关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它);依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。相识既可能是关联,也可能是依赖。
引用是指那些指向对象的类属性。实现组合、聚合和关联时无可避免的要用到引用,但实现依赖时却不一定用到。
总的来说,关联和依赖是同级的;组合是一种聚合,而聚合是一种关联;引用则是相对独立的。
比如:组合,是不是一个对象应该是另外一个对象的一个属性?依赖就是一个类是另外一个类的子类?其他的呢?一头雾水!
依赖:一个类必定调用有关联的类的属性或方法,才能完成计算!
聚合:在一个类中实例化另一个或多个类!而且必需实例化!
组合:也就是对一个象的多次调用。
你去看看uml与java实现的书把,像上面四个其实都差不多,有时很难分清!