持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
类的关系总览
uml语言可以用来画类图,idea中就可以通过【show diagram】来看一个包中各个类和接口之间的关系,很方便,但是我对uml一窍不通,所以整理一份简洁,要点突出的攻略,来应对uml中常见但抽象的用来表示类之间关系的各种符号。
首先总览uml中用来表示类关系的各种符号:
类的关系详细介绍
继承(inheritance)
- 白色箭头实线

实现(Realization)
- 接口实现
- 虚线实心箭头
关联(association)
- 黑色实线
- 同级别类之间的关系
- 一个类的对象是另一个类的属性
- has a关系(举例:顾客与地址)
- 下图是双向关联
- 下图是单项关联:(classA的对象持有一个classB类的实例属性)
- 还有自关联(类持有自身的实例属性)
依赖(Dependency)
- 虚线箭头
- use a关系(举例:学生与电脑)
- 表现为类1对象的成员方法中使用了类2的对象。而且这个对象没有被设为属性。(局部变量)
- 或者类1的方法的参数可以传入一个类2对象(方法参数)
- 还可以表现为类1方法中调用了类2的静态方法(静态方法调用)
- 一种特殊的关联
聚合(Aggregation)
- 白色菱形实线
- 一种特殊的关联,实现上与关联一样,类1持有类2作为实例属性。
- has a 关系(举例:公司与员工)
- class1是整体,class2是部分
- 一对多关系
- 生命周期不相关(所以类1一般不会在初始化时期进行显式赋值类2的实例!)
idea聚合关系图
public class AggregationTest {
public static void main(String[] args) {
B b = new B(new A());
}
}
class A{}
class B{
A a;
B(A a){
this.a = a;
}
}
组合(Composition)
- 黑色菱形实线
- contains a 关系(举例:人类和大脑)
- 更严格的聚合关系,生命周期同生共死
- class1是整体,class2是部分
idea组合关系图
public class CompositionTest {
public static void main(String[] args) {
B b = new B();
}
}
class A{}
class B{
A a;
B(){
this.a = new A();
}
}