UML关系

485 阅读2分钟

      

    最近在梳理UML关系的时候,发现不少小伙儿对部分细节概念理解不是很清晰,整理了下UML类关系


你将了解:

  • UML关系分类

  • 关系之间的区别

一. 概述

UML类关系主要分为:实现、泛化、依赖、关联、聚合、组合,总体来说都是类之间的关联关系,是语义级别区分,无法直接从代码层面区分,只是耦合程度不同。耦合强弱程度:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖



二. 关系区别


依赖

关联

组合

聚合

概念

类A依赖B:类A使用到了类B,该使用关系是具有偶然性的、临时性的、非常弱的,但B类的变化会影响到A体现的是两个类之间语义级别的一种强依赖关系;这种关系比依赖更强,一般是长期性的,而且双方的关系一般是平等的组合是关联关系的一种特例,他体现整体与部分间的关系,但整体与部分是不可分聚合是关联关系的一种特例,他体现的是整体与部分的关系,整体与部分之间是可分离的,他们可以具有各自的生命周期

生命周期

方法被调用时产生实例化时产生,销毁时结束实例化时产生,销毁时结束互不影响

关系

use,非从属关系relation,非从属关系contains-a,从属关系has-a,从属关系

代码表现

方法返回值

方法形参

方法局部变量

静态方法

属性

关联类

属性

属性

通常利用构造方法、Setter方法或业务方法的参数注入

备注

单向,依赖某个类的变化单向或双向(建议转化为单向),对其他对象的引用关注的问题域不同,组合和聚合关系可能相互转化

实例不能形成聚合回路

依赖倒置(变化类)

说明:UML关系仅从语义上区别,实际的代码无法直接区分


三. UML 表示方法

  • 泛化(继承)


  • 实现


  • 依赖


  • 关联

1.1 单向关联


1.2 双向关联


1.3 自关联


1.4 多重关联



  • 聚合


  • 组合



参考:

https://www.kancloud.cn/digest/xing-designpattern/143734

https://cloud.tencent.com/developer/article/1176331

书籍:《UML精粹》、《UML for java programer》