关联, 聚合, 组合关系
发布时间:2020-05-24 13:12:30 所属栏目:程序设计 来源:互联网
导读:类间关系 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示
|
图3.2 类的继承 类的继承在C++中呈现为: class B { } class A : public B{ } (2)关联:指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联的作用。关联两端的类也可以以某种角色参与关联,角色可以具有多重性,表示可以有多少个对象参与关联。可以通过关联类进一步描述关联的属性、操作以及其他信息。关联类通过一条虚线与关联连接。对于关联可以加上一些约束,以加强关联的含义。 关联在C++中呈现为: class A{...} class B{ ...} A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b) 即一个类作为另一个类方法的参数。 (3)聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
class B { A* a; .....} 即类B包含类A的指针; 而组合可表示为: class A{...} class B{ A a; ...} 即类B包含类A的对象。 准确的UML类图中用空心和实心菱形对聚合和组合进行了区分。
其关系强弱为 关联<聚合<组合 关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。 我想举个通俗的例子。 你和你的心脏之间是composition关系(心脏只属于自己) 你和你买的书之间是aggregation关系(书可能是别人的) 你和你的朋友之间是association关系 聚合与组合的区别:聚合∶分散的聚集到一起 组合∶几个独立部分组成的整体 由上可见,聚合就像将不同的水果放到一个玻璃果盘里,玻璃果盘摔坏,并不影响水果。 Trackback:http://blog.csdn.net/baobeiSimple/archive/2007/06/12/1648617.aspx 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/guopengzhang/archive/2009/11/23/4853993.aspx (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



