UML如何描述类之间的关系(二)
作者:Balan
2,聚集关系(Aggregation)
聚集者和被聚集者之间是一种灵活 的平台分享关系。一个类提供平台,把另外一个类集成过来,如下图BankService将其他Services集成进来,统一为客户提供风格一致的服务。我们面对银行的一个普通柜台工作人员,可以存取款项,可以委托理财,可以查询账户余额,可以委托代交电费,还可以挂失或销户,这些服务都是在一个地点由同一个用户服务接口(BankService)完成的。类似的例子还有计算机和外设之间的关系:计算机可以聚集U盘、扫描仪、打印机、手机等硬件,统一为用户提供服务,这种服务大大丰富了计算机本身的功能,也便于用户统一使用。
ATM也是一种BankService实例,我们面对ATM,也可以享受多种自助服务(温馨提示:当然,要冒着被终身监禁的风险,呵呵)。
3, 构成关系(Composition)
构成关系也是一种平台分享关系,但是这种平台是垄断的、强制的。如身体和头之间是一种构成关系,头只能在身体上,离开这个平台,就没有继续存在的机会了。
构成关系有两层含义:1,整体(父元素)和部分(子元素)之间的关系;2,部分(子元素)的生命周期隶属于整体(父元素)的生命周期,父元素消亡,子元素级联消亡。
如何区分关联关系、聚集关系和构成关系?
关联关系、聚集关系和构成关系,都属于广义的关联关系,三种关系的在面向对象的编程语言中表现方式是一致的(参考:1,关联关系 关联的实质 )。但是它们的本质区别是存在的:
实质 | 元素生命周期 | 举例 | |
关联关系 | 所属关系 | 彼此独立 | 用户与订单 |
聚集关系 | 灵活平台分享 | 彼此独立 | 主板与内存条 |
构成关系 | 强制平台分享 | “国破家亡” | 身体和脑袋;脑袋和耳朵 |