UML类图中的六种关系

六种关系

  1. 依赖关系
  2. 泛化关系
  3. 实现关系
  4. 关联关系
  5. 聚合关系
  6. 组合关系

依赖关系

虚线箭头 ..>

依赖关系是一种通用的说法, 其他类型的关系都是依赖关系的特例

其他类直接使用或作为泛型:

  • 出现在域中
  • 出现在方法类型中
  • 出现在方法中
1
2
3
4
5
6
7
8
9
10
11
12
13
public class C {
private W w;

public X func(Y y) {
// ...
Z z = new Z();
// ...
}
}
// C ..> W
// C ..> X
// C ..> Y
// C ..> Z

泛化关系

实线三角箭头 --|>

子类 继承 父类

1
2
3
public class abstract B {}
public class D extends B {}
// D --|> B

实现关系

虚线三角箭头 ..|>

子类 实现 接口

1
2
3
public interface I {}
public class C implements I {}
// C ..|> I

关联关系

实线箭头 -->

具有 导航性

单向一对一

1
2
3
4
5
6
public class A {
private B b;
}
public class B {
}
// A --> B

双向一对一

1
2
3
4
5
6
7
public class A {
private B b;
}
public class B {
private A a;
}
// A <--> B

聚合关系

实线菱形空心箭头 --<>

表示整体和部分的关系, 整体与部分 可以 分开

具有 导航性多重性

1
2
3
4
5
6
7
8
9
public Class C {
private X x; // Nullable
private Y y; // Nullable

public void setX(X x) { this.x = x; }
public void setY(Y y) { this.y = y; }
}
// C <>-- X
// C <>-- Y

组合关系

实线菱形实心箭头 --<*>

表示整体和部分的关系, 整体与部分 不能 分开

具有 导航性多重性

1
2
3
4
5
6
public Class C {
private X x = new X(); // Notnull
private Y y = new Y(); // Notnull
}
// C <*>-- X
// C <*>-- Y