UML中的各种关系


各种关系

UML中的各种关系一览表
名称 英文名称 符号 描述 实现方法 耦合强度 举例 关键词 备注
依赖 dependency 1.当类与类之间有使用关系
时就属于依赖关系;2.依赖
不具有“拥有关系”
,而是
一种“相识关系”;3.一个
类的实现需要另一个类的协助?
如果类A访问类B的属性或者方法,
或者类A负责实例化类B
,具体地,
被依赖者B是依赖者A的:1.成员
函数返回值、2.形参、3.局部
变量、4.静态方法调用?
★? 学生使用电脑
驾驶员使用车?
使用关系?  
关联 association 一种常识上的拥有关系,但
双方又在逻辑上各自独立?
通过成员变量来实现:
被关联者是关联者的数据成员?
★★? 老师和学生是
双向关联?
拥有关系
has-a?
细分为:单向关联、
双向关联、
自身关联、多维关联?
聚合 aggregation 整体与部分的关系,且部分
可脱离整体而单独存在
?
同“关联”? ★★★? 汽车和轮胎? 整体与部分
单独存在
contains-a?
 
组合 composition 整体与部分的关系,但部分
不能离开整体而单独存在?
同“关联”? ★★★★? 人和头颅? 整体与部分
不能单独存在?
 
泛化 generalization 类与类之间的继承关系,一般
与特殊
的关系,is a?
类继承? ★★★★★? 动物和猫? 一般与特殊
is-a?
 
实现 implementation 类与接口之间的实现关系? 接口实现? ★★★★★? 鸡和鸭都实现
下蛋接口?
   

 

联系与区别

依赖与关联

  • 依赖者不会将被依赖者作为自己的数据成员,但关联会。
  • 依赖强调使用,关联强调拥有
  • 关系产生时机不同:依赖关系是仅当类的方法被调用时而产生,伴随着方法的结束而结束。关联关系当类实例化的时候产生,当类对象销毁的时候关系结束。

关联与聚合

  • 聚合关系是关联关系的一种,是强的关联关系。
  • 逻辑关系/层次不同:关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
  • 联和聚合在语法上无法区分,必须考察具体的逻辑关系。

聚合与组合

  • 整体与部分有相同的生命周期,其中代表整体的对象负责代表部分的对象的生命周期。
  • 构造函数不同:聚合类的构造函数中包含另一个类的实例作为参数,组合类的构造函数包含另一个类的实例化
  • 信息的封装性不同:聚合关系中,客户端可以同时了解“整体类”与“部分类”;组合关系中,客户端只认识“整体类”,“部分类”被严密封装在“整体类中”,对客户端不可见。

参考

[1] 认识 UML 类关系——依赖、关联、聚合、组合、泛化_恋喵大鲤鱼的博客-CSDN博客
[2] 解析UML类图符号意义_devillyd2018的博客-CSDN博客
[3]