专家解析 UML依赖和聚集关系有何异同

开发 架构
UML中有关联,依赖,聚集,组成,泛化和实现等关系,你对它们的区别和联系是否熟悉,这里就向大家介绍一下UML中UML依赖和UML聚集关系的异同。

本节向大家介绍一下UML中UML依赖和UML聚集关系的异同,UML中大致有六种关系,每种关系都有各自的特点,这里和大家分享一下UML依赖和UML聚集关系有什么区别,希望本节的学习对你的学习有所帮助。

UML中UML依赖和UML聚集关系的异同

1.关联:连接模型元素及链接实例,用一条实线来表示;
2.依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;
3.聚集:表示整体与部分的关系,用一条实线加空心菱形来表示;
4.组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;
(关联,依赖,聚集,组成的异同见后描述)
5.泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;
6.实现:表示类与接口的关系,用一条虚线加空心箭头来表示;

UML依赖和UML聚集的异同:(《Java面向对象编程》一书,作者:孙卫琴来源:www.javathinker.org)
在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A和对象B之间存在依赖、关联或聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。

1.UML依赖关系的特征

对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车Bicycle和打气筒Pump,自行车通过打气筒来充气。图1-39为Bicycle类与Pump类的类框图。

图1-39Bicycle类与Pump类的UML依赖关系


Bicycle类和Pump类之间是依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:
publicclassBicycle{
/**给轮胎充气*/
publicvoidexpand(Pumppump){
pump.blow();
}
}
在现时生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:
myBicycle.expand(pumpFromRepairShed1);//到第一个修车棚里充气
myBicycle.expand(pumpFromRepairShed2);//若干天后,到第二个修车棚里充气。看完了UML依赖的特征再来看一下UML聚集的特征看看它们有什么不同。
 

2.UML聚集关系的特征

当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A之间为聚集关系。例如自行车和它的响铃、龙头、轮胎、钢圈以及刹车装置就是聚集关系,因为响铃是自行车的组成部分。而人和自行车不是聚集关系,因为人不是由自行车组成的,如果一定要研究人的组成,那么他应该由头、躯干和四肢等组成。由此可见,可以根据语义来区分关联关系和聚集关系。
聚集关系和关联关系的区别还表现在以下方面:

(1)对于具有关联关系的两个对象,多数情况下,两者有独立的生命周期。比如自行车和他的主人,当自行车不存在了,它的主人依然存在;反之亦然。但在个别情况下,一方会制约另一方的生命周期。比如客户和订单,当客户不存在,它的订单也就失去存在的意义。

(2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如小王的自行车被偷了,那么自行车的所有组件也不存在了,除非小王事先碰巧把一些可拆卸的组件(比如车铃和坐垫)拆了下来。
不过,在用程序代码来表示关联关系和聚集关系时,两者比较相似。图1-41为自行车Bicycle与响铃Bell的聚集关系。

以下例程1-6是Bicycle类的源程序。
例程1-6Bicycle.java
publicclassBicycle{
privateBellbell;
publicBellgetBell(){
returnbell;
}
publicvoidsetBell(Bellbell){
this.bell=bell;
}
/**发出铃声*/
publicvoidalert(){
bell.ring();
}
}
在Bicycle类中定义了Bell类型的成员变量,Bicycle类利用自身的bell成员变量来发出铃声,这和在Person类中定义了Bicycle类型的成员变量,Person类利用自身的bicycle成员变量去上班很相似。本节关于UML依赖和聚集异同介绍到这里。
 

【编辑推荐】

  1. 几种UML关联关系的区别详解
  2. UML关联符号用法剖析
  3. UML依赖和UML关联关系的异同点解析
  4. 解析UML类图符号意义
  5. 九大UML视图专家解析

 

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-06-12 15:21:19

UML关联

2010-06-13 09:18:28

UML依赖

2010-07-09 10:36:14

UML类图关系

2010-06-13 09:42:05

UML依赖

2010-06-13 10:19:24

面向对象技术与UML

2010-06-29 13:11:40

UML类图依赖关系

2010-07-05 13:38:39

Java与UML交互图

2010-07-08 15:28:39

UML类图依赖关系

2024-01-08 09:36:47

管理库代码

2010-06-11 10:31:19

UML部署图

2023-03-26 18:56:40

toBtoC业务

2023-01-03 11:39:06

2010-07-09 10:26:35

UML类图关系

2010-06-13 10:56:13

UML文献

2010-06-11 18:09:26

UML对象图

2010-07-02 14:04:24

UML图

2010-06-11 11:28:00

UML视图

2010-06-17 10:05:35

UML动态建模

2010-06-29 12:55:44

UML类图依赖关系

2022-05-30 00:08:43

元宇宙区块链Web3
点赞
收藏

51CTO技术栈公众号