组合关联聚合的区别.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

组合,关联,聚合的区别

类间关系

在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的

类协作,创造⽐单独⼯作更⼤的语义。在UML类图中,关系⽤类框之间的连线来表⽰,连线上和连线端头处的不同修饰符表⽰不同的关

系。类之间的关系有继承(泛化)、关联、聚合和组合。

(1)继承:指的是⼀个类(称为⼦类)继承另外的⼀个类(称为基类)的功能,并增加它⾃⼰的新功能的能⼒,继承是类与类之间最常见

的关系。类图中继承的表⽰⽅法是从⼦类拉出⼀条闭合的、单键头(或三⾓形)的实线指向基类。例如,图3.2给出了MFC中CObject类和

菜单类CMenu的继承关系。

图3.2类的继承

类的继承在C++中呈现为:

classB{}

classA:publicB{}

(2)关联:指的是模型元素之间的⼀种语义联系,是类之间的⼀种很弱的联系。关联可以有⽅向,可以是单向关联,也可以是双向关联。

可以给关联加上关联名来描述关联的作⽤。关联两端的类也可以以某种⾓⾊参与关联,⾓⾊可以具有多重性,表⽰可以有多少个对象参与关

联。可以通过关联类进⼀步描述关联的属性、操作以及其他信息。关联类通过⼀条虚线与关联连接。对于关联可以加上⼀些约束,以加强关

联的含义。

关联在C++中呈现为:

classA{...}

classB{...}

A::Function1(Bb)//或A::Function1(Bb)//或A::Function1(B*b)

即⼀个类作为另⼀个类⽅法的参数。

(3)聚合:指的是整体与部分的关系。通常在定义⼀个整体类后,再去分析这个整体类的组成结构。从⽽找出⼀些组成类,该整体类和组

成类之间就形成了聚合关系。例如⼀个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动⼒攻击潜艇等。需求描述中“包含”、“组

成”、“分为…部分”等词常意味着聚合关系。

(4)组合:也表⽰类之间整体和部分的关系,但是组合关系中部分和整体具有统⼀的⽣存期。⼀旦整体对象不存在,部分对象也将不存

在。部分对象与整体对象之间具有共⽣死的关系。

聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表⽰整体与部分的关系⽐较弱,⽽组合⽐

较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的⽣存期⽆关,⼀旦删除了聚合对象不⼀定就删除了代表部分事物的对象。组

合中⼀旦删除了组合对象,同时也就删除了代表部分事物的对象。

我们⽤浅显的例⼦来说明聚合和组合的区别。“国破家亡”,国灭了,家⾃然也没有了,“国”和“家”显然也是组合关系。⽽相反的,计

算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独⽴存在,还可以接在别的计算机上。在聚合

关系中,部分可以独⽴于聚合⽽存在,部分的所有权也可以由⼏个聚合来共享,⽐如打印机就可以在办公室内被⼴⼤同事共⽤。

在C++语⾔中,从实现的⾓度讲,聚合可以表⽰为:

classA{...}

classB{A*a;}

即类B包含类A的指针;

⽽组合可表⽰为:

classA{...}

classB{Aa;...}

即类B包含类A的对象。

准确的UML类图中⽤空⼼和实⼼菱形对聚合和组合进⾏了区分。

图3.4聚合和组合

聚合,关联,组合是对象之间的三种关系。从某种意义上说,继承是⼀种类的纵向关系,⽽聚合,关联,组合是对象的横向关系。

其关系强弱为关联聚合组合

关联和聚合的区别主要在语义上,关联的两个对象之间⼀般是平等的,例如你是我的朋友,聚合则⼀般不是平等的,例如⼀个公司包含了很

多员⼯,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其⽣命期有很⼤的关联,被组合的对象

是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。⼀般来说被组合对象不能脱离组合对象独⽴存在,⽽且也只能属于

⼀个组合对象,例如⼀个⽂档的版本,必须依赖于⽂档的存在,也只能属于⼀个⽂档。聚合则不⼀样,被聚合的对象可以属于多个聚合对

象,例如⼀个员⼯可能可以属于多个公司。

我想举个通俗的例⼦。

你和你的⼼脏之间是composition关系(⼼脏只属于⾃⼰)

你和你买的书之间是aggregation关系(书可能是别⼈的)

你和你的朋友之间是association关系

文档评论(0)

192****8719 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档