首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

倚赖、关联、聚合、组合的区别(通俗易懂)

2013-10-27 
依赖、关联、聚合、组合的区别(通俗易懂)关联:有名的客户和订单的关系以及公司和员工的关系,都是关联关系。还

依赖、关联、聚合、组合的区别(通俗易懂)

 

 


 

关联:有名的客户和订单的关系以及公司和员工的关系,都是关联关系。还有就是我和我的单车的例子,他们都是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的,也可以使双向的。

从网上找到的公司和员工的UML图和代码 :

倚赖、关联、聚合、组合的区别(通俗易懂)

 

 


 

可见依赖于与关联亦有动静之别,关联的类“静态”地引用了被关联类的实例变量,而依赖的偶然性也正说明了它的动态性。

      2、 聚合与组合同出而异体

      聚合与组合其实都是关联的特例,都是整体和部分的关系。他们的区别在于聚合的两个对象之间是可分离的,他们具有各自的生命周期。而组合往往表现为一种唇齿相依的关系。

聚合:一种容纳或曰包含的关系,如同机场和飞机,汽车和轮胎的关系。其实仔细想想,前面的公司和员工的关系也有聚合的味道在里面。

组合:也可称之为强聚合,整体和部分是不可分的,整体的生命周期结束时也就是部分的生命周期到头时。很有名的就是桌子和桌子腿的关系。

      聚合的UML图:
倚赖、关联、聚合、组合的区别(通俗易懂)

组合的UML图:



倚赖、关联、聚合、组合的区别(通俗易懂)
 ########################################################################

根据上面的说明,再加上我对c++的理解,对依赖、关联、聚合、组合的区别再做个简单的总结:

依赖:A类的方法中,形参是B类的变量,或者B类指针或者B类的引用。则A类依赖于B类

关联:A类有成员变量是B类的类型,或者B类的指针类型。则A类关联于B类

组合:组合是关联中的一个特例,A类的成员变量是B类类型,非指针变量。则A类和B类是组合关系。

聚合:聚合是关联中的一个特例,A类的成员变量是B类类型指针,则A类和B类是聚合关系。

热点排行