聚合是指一个对象拥有另一个对象,仅强调“拥有”。而组合是指一个对象是另一个对象的一部分,强调“不可分割”,两个对象具有相同的生命周期。两者的差别就好比创立一间公司时您可以不要雇员(拥有),但创造一个人时您却不能丢掉了他的心(不可分割)。 
关联和依赖都是指一个对象知道另一个对象。区别在于关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它);依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。相识既可能是关联,也可能是依赖。 
引用是指那些指向对象的类属性。实现组合、聚合和关联时无可避免的要用到引用,但实现依赖时却不一定用到。 
总的来说,关联和依赖是同级的;组合是一种聚合,而聚合是一种关联;引用则是相对独立的。

解决方案 »

  1.   

    你讲的很清楚,但是有一个不明白的地方是在具体的代码中,这些关系是如何体现的?
    比如:组合,是不是一个对象应该是另外一个对象的一个属性?依赖就是一个类是另外一个类的子类?其他的呢?一头雾水!
      

  2.   

    关联:两个类之间有联系!有一种可有可无的调用关系!
    依赖:一个类必定调用有关联的类的属性或方法,才能完成计算!
    聚合:在一个类中实例化另一个或多个类!而且必需实例化!
    组合:也就是对一个象的多次调用。
    你去看看uml与java实现的书把,像上面四个其实都差不多,有时很难分清!