一、什么是 UML 类图

UML 类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型,它用来描述系统中类的内部结构、类与类之间的关系,可以简化人们对系统的理解

 

二、UML 类图单个类的表示方式

单个类的类图使用包含类名、属性(field)和方法(method)且带有分割线的矩形来表示,例如下面的这个类图

UML 类图_类图

属性的完整表示方式: 可见性 名称 :类型 [ = 属性的默认值]
方法的完整表示方式: 可见性 名称(参数列表) : 返回值类型

属性/方法的可见性有四种表现方式

- : private

什么都不写: default

# : protected

+ : public

所以上面的类图可以使用如下代码来描述

public class User {
    private Integer id;
    String name;
    protected Integer age;
    public Double height;

    private void eat(){
        System.out.println("eat a lot of thing makes me stronger");
    }

    void drink(){
        System.out.println("I like drink a cup of tea");
    }

    protected String play(){
        return "play makes me happy";
    }

    public Integer think(){
        System.out.println("think make us clever");
        return 10086;
    }
}

  

三、UML 类图类与类关系的表示方式

1、关联关系

关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象

1.1、单向关联

一个类的属性是另外一个类的对象,表现为 单向箭头指向被使用的类

UML 类图_成员对象_02

1.2、双向关联

两个类的属性都持有对方类的对象,表现为 双向箭头或者是直线

UML 类图_父类_03

UML 类图_可见性_04

1.3、自关联

一个类的属性就是这个类的对象

 UML 类图_聚合关系_05

1.4、聚合关系

聚合关系也属于关联关系,是一种强关联关系,是整体和部分之间的关系

表现为: 空心菱形指向整体

聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在,例如学校与老师的关系,学校里面有很多老师,如果学校停办了,老师并不会受到影响,依然继续存在

UML 类图_父类_06

1.5、组合关系

组合关系类似于聚合关系,也是整体和部分之间的关系,它是一种更强烈的聚合关系,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,那么部分对象也将不存在,例如人的身体和手臂的关系,如果人的身体不存在了,那么手臂也不会存在

表现为: 实心菱形指向整体

UML 类图_成员对象_07

 1.6、依赖关系

依赖关系是一种使用关系,它是对象之间 耦合度最小 的一种关联方式,它是一种临时性的关联,在代码中某个类通过局部变量、方法的参数、或者静态方法的调用来使用另外一个类的某些方法来完成一些功能

UML 类图_类图_08

 

2、继承关系

继承关系是对象之间 耦合度最大 的一种关系,表示为一般和特殊的关系,是父类与子类的关系

表现为: 带空心三角箭头使用实线由子类指向父类

UML 类图_可见性_09

 

3、实现关系

实现关系是接口和实现类之间的关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有抽象操作

表现为: 带空心三角箭头使用虚线由子类指向父类

UML 类图_聚合关系_10