类图

原创💡 Abner Mai 2021-09-01 UML
  • UML
大约 4 分钟

# 类图

类图——显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

# 三个空间

类图中的类包含了三个隔间,分别为:

  • 顶部隔间:存放*类的名称*,以粗体居中打印
  • 中部隔间:存放*类的属性*,左对齐
  • 底部隔间:存放*类的方法*,左对齐

# 修饰符

JAVA中,修饰符有

修饰符 当前类 同一个包 子孙类 其他包
default × ×
private × × ×
protected ×
public

对应的UML图中的可见度符号为:

修饰符 符号
default ~
private -
protected #
public +

代码如:

public class Temp {
    int t1;
    private int t2;
    protected int t3;
    public int t4;
}
1
2
3
4
5
6

图如:

image-20210902102420101

# 关系

# 依赖关系(Dependency)

依赖——是一种弱关联关系,是类与类之间的连接,标识一个类依赖于另一个类的定义。如A依赖于B,则B体现为局部变量、方法的参数、或静态方法的调用。

表示方法:虚线+箭头

表示定义:箭头指向被依赖的一方

代码如:

// 局部变量
class TempA {
    private TempB tempB;
}

class TempB {

}

// 方法参数
class TempA {
    public void optA(TempB tempB) {
        tempB.optB();
    }
}

class TempB {
    public void optB() {

    }
}
// 静态方法的调用
class TempA {
    public void optA() {
        TempB.optB();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

图如:

image-20210902102624870

image-20210902102721676

# 关联关系(Association)

关联——类与类之间的联接,是对象之间的一种引用关系,表示一个类和另外一个类之间的联系。

表示方法:实线+箭头

表示定义:箭头指向被使用的类

如:双向关联;一个老师可以有多个学生,一个学生也可以有多个老师

代码如:

class Teacher {
    private List<Student> studentList;
}

class Student {
    private List<Teacher> teacherList;
}
1
2
3
4
5
6
7

图如:

image-20210902102850483

如:单向关联;学生可以有很多的课程,但课程是抽象的,不能拥有学生。

class Student {
    private List<Course> courseList;
}
class Course {
}
1
2
3
4
5

图如:

image-20210902103400547

# 聚合关系(Aggregation)

聚合——是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。部分也可以脱离整体而存在。

表示方法:空心菱形+实线

表示定义:空心菱形指向整体

如:一辆汽车由四个轮子组成

class Car {
    private List<Wheel> wheelList;
}
class Wheel {
}
1
2
3
4
5

图如:

image-20210902103510290

# 组合关系(Composition)

组合——是关联关系的一种,是比聚合关系强的关系。部分对象不能脱离整体对象而单独存在。

表示方法:实心菱形+实线

表示定义:菱形指向整体

如:人类的身体和大脑之间的关系,大脑不能脱离人体单独存在

class Body {
    private Brain brain;
}
class Brain {
}
1
2
3
4
5

图如:

image-20210902103623586

# 实现关系(Realization/Implementation)

实现——是关联关系的一种,是比聚合关系强的关系。接口和实现类之间的关系。类实现了接口中的抽象方法。

表示方法:三角箭头+虚线

表示定义:箭头指向被实现的对象

如:A中学和B中学,实现了T中学的接口

interface T {
}
class A implements T {
}
class B implements T {
}
1
2
3
4
5
6

图如:

image-20210902103933034

# 泛化关系(Inheritance)

泛化——其实就是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。

表示方法:三角箭头+实线

表示定义:箭头指向被继承的对象

class T {
}
class A extends T {
}
class B extends T {
}
1
2
3
4
5
6

图如:

image-20210902103946569

# 总结

六种关系中,从弱到强依次是: 依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系




上次编辑于: 2021年9月3日 19:07