# UML类图

  1. 详细说明UML类图是什么 (opens new window)
  2. 30min学会UML类图 (opens new window)

# 1、类的表示法

# 1、具体类

矩型框表示具体类

  • 第一层:类名字
  • 第二层:属性名
  • 第三层:类方法

成员属性和方法的访问修饰符:

  • “+”表示 public
  • “-”表示 private
  • “#”表示 protected
  • 不带符号表示 default

# 2、抽象类

类名和抽象方法用斜体

# 3、接口

  • 类名:<<interface>> + 类名
  • 第二层:方法

# 2、类的关系

6种类型:实现、泛化、关联、依赖、聚合、组合关系

  • 接口与类:实现关系。 --▶️
  • 对象和对象
    • 泛化关系:is a。-▶️
    • 关联关系
      • 聚合关系:has a 菱型(空) + 实线
      • 组合关系:contains a 菱型(实) + 实线
      • 依赖关系:use a 虚线 + 箭头

# 1、实现

接口及其实现类之间的关系(implement),用空心三角和虚线组成的箭头来表示,从实现类指向接口

# 2、泛化

对象与对象之间的继承关系(extends),泛化关系用空心三角和实线组成的箭头表示,从子类指向父类

# 3、关联关系

  • 对象和对象之间的连接,一个对象含有另一个对象的引用,关联关系有单向关联和双向关联

  • 双向关联关系用带双箭头的实线或者无箭头的实线双线表示,单向关联用一个带箭头的实线表示,箭头指向被关联的对象,关联关系又分为依赖关联、聚合关联和组合关联三种类型

  • 一个对象可以持有其它对象的数组或者集合。在UML中,通过放置多重性(multipicity)表达式在关联线的末端来表示。多重性表达式可以是一个数字、一段范围或者是它们的组合。多重性允许的表达式示例如下:

    • 数字:精确的数量
    • *或者0..*:表示0到多个
    • 0..1:表示0或者1个,在Java中经常用一个空引用来实现
    • 1..*:表示1到多个

# 4、依赖关系

  • 弱关联关系,如果对象A用到对象B,但是和B的关系不是太明显,如果对象A依赖于对象B,则 A “use a” B。比如驾驶员和汽车的关系,驾驶员使用汽车,二者之间就是依赖关系。

  • 依赖关系用一个带虚线的箭头表示,由使用方指向被使用方,表示使用方对象持有被使用方对象的引用

  • 依赖关系在Java中的具体代码表现形式为B为A的构造器方法中的局部变量方法或构造器的参数方法的返回值,或者A调用B的静态方法

# 5、聚合关系

  • 弱关联,整体与部分的拥有关系,即 “has a” 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享,所以聚合关系也常称为共享关系
  • 聚合关系用空心菱形加实线箭头表示,空心菱形在整体一方,箭头指向部分一方

# 6、组合关系

  • 强关联,体现整体与部分间的包含关系,即 “contains a” 的关系。但此时整体与部分是不可分的,部分也不能给其它整体共享,作为整体的对象负责部分的对象的生命周期。

  • 组合关系用实心菱形加实线箭头表示,实心菱形在整体一方,箭头指向部分一方

  • 在Java代码形式上,聚合和组合关系中的部分对象是整体对象的一个成员变量。但是,在实际应用开发时,两个对象之间的关系到底是聚合还是组合,有时候很难区别

Last Updated: 3/20/2022, 12:54:50 PM