UML关系
# 依赖
依赖 (Dependency) 关系:依赖关系表示一个事物 (独立事物) 对另一个事物 (依赖事物) 的语义有依赖关系,当独立事物发生变化时,依赖事物的语义可能会受到影响。依赖关系在图示中一般用带箭头的虚线表示,箭头指向被依赖的事物。
带箭头的虚线指向被使用者
/**
* 在当前类中需要用到其他的类,说明他们直接存在依赖关系
* 1) 类中用到了对方 2) 如果是类的成员属性 3) 如果是方法的返回类型
* 4) 是方法接收的参数类型 5) 方法中使用到
*/
public class PersonServiceBean {
private PersonDao personDao;// 类
public void save(Person person) {
}
public IDCard getIDCard(Integer personid) {
}
public void modify() {
Department department = new Department();
}
}
public class PersonDao {
}
public class IDCard {
}
public class Person {
}
public class Department {
}
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
28
29
30
# 泛化(继承)
泛化 (Generalization) 关系:泛化关系表示一个事物 (子事物) 继承另一个事物 (父事物) 的属性和行为。子事物可以通过继承获得父事物的特性,并且可以添加新的特性或修改继承的特性。泛化关系在图示中一般用带空心箭头的实线表示,箭头指向父事物。
带三角形箭头的实线指向父类
/**
* 1) 泛化关系实际上就是继承关系2) 如果A类继承了B类,我们就说A和B存在泛化关系
*/
public abstract class DaoSupport {
public void save(Object entity) {
}
public void delete(Object id) {
}
}
public class PersonServiceBean extends Daosupport {
}
2
3
4
5
6
7
8
9
10
11
12
13
# 实现
实现 (Realization) 关系:实现关系表示一个事物 (类元) 实现了一个接口或者符合一个协议。在图示中,实现关系一般用带空心箭头的虚线表示。
带三角形箭头的虚线指向接口
public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Interger id) {
}
}
2
3
4
5
6
7
8
# 关联
关联 (Association) 关系:使一个类知道另一个类的属性和方法,表示它们之间有关联和相互作用。关联关系可以是双向的或单向的,并且可以具有角色 (Role)、导航和重复度 (Multiplicity) 等属性。
- 导航性:即双向关系或单向关系
- 重复度:如 “1”(表示有且仅有一个),“0...”(表示 0 个或者多个), “0,1”(表示 0 个或者一个),“n...m”(表示 n 到 m 个都可以),“m...*”(表示至少 m 个)
带箭头的实线指向被拥有者,如果是双向关联就实现无箭头
//单向一对一关系
public class Person {
private IDCard card;
}
public class IDCard {
}
//双向一对一关系
public class Person {
private IDCard card;
}
public class IDCard {
private Person person;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 聚合
聚集 (Aggregation):在聚合关系中,整体对象拥有并包含了部分对象,但是部分对象可以在不同的整体对象之间共享。这意味着部分对象可以出现在多个整体对象中,并且可以被多个整体对象共同引用。与此同时,部分对象的生命周期可以独立于整体对象而存在,这意味着整体对象的创建或销毁不会直接影响部分对象的存在。此外,聚合关系中的部分对象也可以脱离整体对象而单独存在。也就是说,当整体对象被销毁时,部分对象仍然可以保持独立存在。聚合关系是关联关系的特例。
如:一台电脑由键盘 (keyboard)、显示器 (monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示:
- 带空心菱形的实线指向整体
# 组合
组合关系是一种较为强的 "拥有" 关系,整体对象完全控制着其中的部分对象,包括它们的生命周期。如果整体对象被销毁,那么其中的部分对象也会随之被销毁。组合关系特别强调整体对象对部分对象的控制权。
- 带实心菱形的实线指向整体
//在程序中我们定义实体:Person与IDCard、Head, 那么 Head 和
//Person 就是组合,IDCard 和 Person 就是聚合。
//但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时
//连同IDCard一起删除,那么IDCard 和 Person 就是组合了.
public class Person {
private IDCard card;
private Head head = new Head();
}
public class IDCard {
}
public class Head {
}
2
3
4
5
6
7
8
9
10
11
12
13
14