类图
# 类图
类图——显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。
# 三个空间
类图中的类包含了三个隔间,分别为:
- 顶部隔间:存放*类的名称*,以粗体居中打印
- 中部隔间:存放*类的属性*,左对齐
- 底部隔间:存放*类的方法*,左对齐
# 修饰符
在JAVA
中,修饰符有
修饰符 | 当前类 | 同一个包 | 子孙类 | 其他包 |
---|---|---|---|---|
default | √ | √ | × | × |
private | √ | × | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
对应的UML图中的可见度符号为:
修饰符 | 符号 |
---|---|
default | ~ |
private | - |
protected | # |
public | + |
代码如:
public class Temp {
int t1;
private int t2;
protected int t3;
public int t4;
}
2
3
4
5
6
图如:
# 关系
# 依赖关系(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();
}
}
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
图如:
# 关联关系(Association)
关联——类与类之间的联接,是对象之间的一种引用关系,表示一个类和另外一个类之间的联系。
表示方法:实线+箭头
表示定义:箭头指向被使用的类
如:双向关联;一个老师可以有多个学生,一个学生也可以有多个老师
代码如:
class Teacher {
private List<Student> studentList;
}
class Student {
private List<Teacher> teacherList;
}
2
3
4
5
6
7
图如:
如:单向关联;学生可以有很多的课程,但课程是抽象的,不能拥有学生。
class Student {
private List<Course> courseList;
}
class Course {
}
2
3
4
5
图如:
# 聚合关系(Aggregation)
聚合——是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。部分也可以脱离整体而存在。
表示方法:空心菱形+实线
表示定义:空心菱形指向整体
如:一辆汽车由四个轮子组成
class Car {
private List<Wheel> wheelList;
}
class Wheel {
}
2
3
4
5
图如:
# 组合关系(Composition)
组合——是关联关系的一种,是比聚合关系强的关系。部分对象不能脱离整体对象而单独存在。
表示方法:实心菱形+实线
表示定义:菱形指向整体
如:人类的身体和大脑之间的关系,大脑不能脱离人体单独存在
class Body {
private Brain brain;
}
class Brain {
}
2
3
4
5
图如:
# 实现关系(Realization/Implementation)
实现——是关联关系的一种,是比聚合关系强的关系。接口和实现类之间的关系。类实现了接口中的抽象方法。
表示方法:三角箭头+虚线
表示定义:箭头指向被实现的对象
如:A中学和B中学,实现了T中学的接口
interface T {
}
class A implements T {
}
class B implements T {
}
2
3
4
5
6
图如:
# 泛化关系(Inheritance)
泛化——其实就是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。
表示方法:三角箭头+实线
表示定义:箭头指向被继承的对象
class T {
}
class A extends T {
}
class B extends T {
}
2
3
4
5
6
图如:
# 总结
六种关系中,从弱到强依次是: 依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系