速通用uml表示类中关系图

215 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

类的关系总览

uml语言可以用来画类图,idea中就可以通过【show diagram】来看一个包中各个类和接口之间的关系,很方便,但是我对uml一窍不通,所以整理一份简洁,要点突出的攻略,来应对uml中常见但抽象的用来表示类之间关系的各种符号。

首先总览uml中用来表示类关系的各种符号:

Relationships between classes

类的关系详细介绍

继承(inheritance)

  • 白色箭头实线
  • Inheritance (or Generalization)

实现(Realization)

  • 接口实现
  • 虚线实心箭头
  • Realization

关联(association)

  • 黑色实线
  • 同级别类之间的关系
  • 一个类的对象是另一个类的属性
  • has a关系(举例:顾客与地址)
  • 下图是双向关联
  • Simple Association
  • 下图是单项关联:(classA的对象持有一个classB类的实例属性)
  • img
  • 还有自关联(类持有自身的实例属性)

依赖(Dependency)

  • 虚线箭头
  • use a关系(举例:学生与电脑)
  • 表现为类1对象的成员方法中使用了类2的对象。而且这个对象没有被设为属性。(局部变量)
  • 或者类1的方法的参数可以传入一个类2对象(方法参数)
  • 还可以表现为类1方法中调用了类2的静态方法(静态方法调用)
  • 一种特殊的关联
  • Dependency
  • Dependency

聚合(Aggregation)

  • 白色菱形实线
  • 一种特殊的关联,实现上与关联一样,类1持有类2作为实例属性。
  • has a 关系(举例:公司与员工)
  • Aggregation
  • 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;
    }
}

image.png

组合(Composition)

  • 黑色菱形实线
  • contains a 关系(举例:人类和大脑)
  • 更严格的聚合关系,生命周期同生共死
  • Composition
  • 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();
    }
}

image.png