关联,聚合,组合

来源:互联网 发布:java获取apk版本号 编辑:程序博客网 时间:2024/06/04 19:09

关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。

我想举个通俗的例子。
你和你的心脏之间是composition关系(心脏只属于自己)
你和你买的书之间是aggregation关系(书可能是别人的)
你和你的朋友之间是association关系

聚合与组合的区别:聚合∶分散的聚集到一起 组合∶几个独立部分组成的整体 由上可见,聚合就像将不同的水果放到一个玻璃果盘里,玻璃果盘摔坏,并不影响水果。

 

1.继承:
    B继承A的条件:
           逻辑上B是A的"一种(a kind of)",且A的所有属性和功能对B都有意义,则容许继承.
                   比如CSaleman(销售人员)类继承CCompanyStaff(员工)类,
                   轿车可以继承交通工具的所有特征.因为轿车是一种交通工具. 
    

2.聚合.
    A聚合B的条件: 

          逻辑上B是A的"一部分(a part of)",A需要使用B的功能,而A和B又不属于同一类的范畴, 
                  比如CCompanyStaff(员工)类聚合CEducation(学历)类,Line(线段)类聚合Point(点)类. 
                  轿车类内嵌发动机的对象,两者不能继承,不属于一类,只能聚合,让轿车使用发动机的功能.

原创粉丝点击