UML类图

了解UML类图中的各类关系,有助于进行分析和设计模式的理解。

一、UML类图(Class Diagram)

image

类的集合与之间的关系

1.1 依赖关系 (Dependency)

image

Use-a的关系,学生使用自行车,学生依赖自行车

依赖关系可以是:

  • A是B的(某方法的)局部变量
  • A向B发送消息,引起了B的变化
1
2
3
4
5
6
7
8
9
10
11
public class Student {
public void student(Bike bike) {
bike.move();
}
}

public class Bike {
public void move() {
//自行车动
}
}

1.2 泛化关系 (Generalization)

image

泛化关系就是继承,由里式替换原则

  • 父类具有的方法、属性,子类都应该有
  • 实现父类的地方能用子类替换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Car {
protected String brand;

public void move() {

}
}

//子类实现父类,并有其他特性和方法
public class Suv extends Car {

public void move() {

}
//四驱
public void allWheelDrive() {

}
}

1.3 实现关系 (Implementation)

image

可以理解为抽象类。在JAVA中有接口这个概念,规定了与实体接口的关系,接口是方法或者操作的集合。与继承不同的是,接口只提供类与类之间的协议(实现方法),没有具体实现。要实现接口就得遵从协议,并实现接口中的方法,在代理中常用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//规定接口
public interface Vehicle {
public void move();
}

//实现接口中的方法
public class Car implements Vehicle {
public void move() {

}
}

public class Bike implements Vehicle {
public void move() {

}
}

1.4 关联关系 (Association)

image

这种关联可以是单向也可以是双向的,这里是has-a的关系,学生拥有身份证。

1
2
3
4
5
6
7
8
public class Student {
private IDCard idcard;

}

public class IDCard {

}

1.5 聚合和组合关系(Aggregation,Composition)

组合关系

image


聚合关系

image

组合关系是整体和组成的关系描述,is-part-of,这里轮胎和发动机是小汽车的组成部分。

聚合关系也有is-part-of的关系,但是与组合关系不同的是,用生命周期来看,小汽车销毁,轮胎和发动机也会跟着销毁。但是班级解散了,学生依然存在,学生的生命周期不随班级结束而结束。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

//聚合关系
public class Class {
private Student student;
public Class(Student student) {
this.student = student;
}

public void setStudent(Student student) {
this.student = student;
}
}
public class Student {

}


1
2
3
4
5
6
7
8
9
10
11
12
//组合关系
public class Car {
private Wheel wheel;
//这里新建了实例,生命周期和Car一样
public Car() {
this.wheel = new Wheel();
}
}

public class Wheel {

}



参考资料

看懂UML类图和时序图

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现