Java集合源码分析(一)-UML类图

220 阅读3分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

UML 简介

UML 即 统一建模语言(Unified Modeling Language),主要用于描述模型

  • 用例图:描述角色与用例之间的关系
  • 类图:描述类与类之间的关系
  • 对象图:描述对象与对象之间的关系
  • 活动图:描述用例要进行的活动
  • 状态图:描述对象的状态状态之间的转移及转移条件
  • 时序图:描述交互步骤(方法执行顺序)
  • 协作图:描述对象之间的动态合作关系
  • 构件图:描述代码组件之间的关联关系
  • 部署图:描述建模系统的物理部署

类图(Java)主要关系

  • 依赖-方法形参
  • 泛化-继承
  • 关联-变量数据类型
  • 聚合-变量数据类型
  • 组合-变量数据类型
  • 实现-实现

从 Java 看 UML 类图常见关系

依赖(Dependence)-方法形参

依赖关系:即某个类中依赖了另外一个类,在 Java 中表现为方法形参的数据类型

依赖关系通过 IDEA 类图显示为黑色虚线箭头

泛化(Generalization)-继承

泛化关系:即两个类(类 A 和类 B)具有相似的地方,但类 B 具有更加特别的行为,在 Java 中表现为继承关系(类 B 继承类 A),类 B 将继承父类 A 的所有属性、方法,可以通过重载的方式实现其特别的方法

泛化关系通过 IDEA 类图,显示为蓝色实线箭头

关联(Association)-变量数据类型

关联关系:即两个类(整体和部分)之间存在相互关联的关系,在 Java 中表现为成员变量的数据类型

聚合(Aggregation)-变量数据类型

聚合关系:聚合关系是关联关系的一种,从代码中无法区分,在 Java 中表现为成员变量的数据类型

聚合关系和关联关系的区别在于,聚合关系是一种强关联关系

聚合关系虽然在使用上和关联关系一样是表现为成员变量的数据类型,但是与关联关系的弱关联不同,聚合关系是一种弱关系,考虑是否聚合关系是否成立,应当考虑当部分不存在时是否会影响整体

组合(Composition)-变量数据类型

组合关系:组合关系是关联关系的一种,从代码中无法区分,在 Java 中表现为成员变量的数据类型

组合关系和聚合关系的区别在于,聚合关系中整体和部分可以分开,而组合关系中整体和部分不可以分开,部分的生命周期取决于整体的生命周期

组合关系虽然在使用上和关联关系,聚合关系一样是表现为成员变量的数据类型,但是组合关系中的部分应当是内部类

实现(Implementation)-实现

实现关系:即通过规定接口和实现接口达到,在 Java 中表现为类实现接口

实现关系通过 IDEA 类图,显示为绿色虚线箭头

使用 intellij idea 生成类图

右键 -> Diagrams -> Show Diagrams -> Java Classes

IDEA分析类图.gif