UML类图

在UML类图中,常见的有以下几种关系: 继承(泛化)、实现、关联、依赖、聚合、组合

各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

依赖

依赖属于一种泛化的概念,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A

比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖

使用场景:在类中用到了对方、作为类的成员属性(聚合)、方法的返回值、方法的参数类型、方法中使用

带箭头的虚线,指向被使用者

java 关系表 java 调用关系图_java 关系表

继承(泛化)

继承是依赖关系的特例,其指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;

在Java中此类关系通过关键字extends明确标识。在UML类图中,用一种实线三角号表示继承关系,三角号指向父类

java 关系表 java 调用关系图_UML_02

实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识

在UML类图中,用虚线三角表示实现关系,三角号表示接口

java 关系表 java 调用关系图_设计模式_03

聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,举例:

class Engine{
}

class Car{
    Engine engine;//汽车和引擎可分离

    public Engine getEngine() {
        return engine;
    }

    public void setEngine (Engine engine) {
        this.engine = engine;
    }
}

聚合通过空心菱形箭头的直线表示,UML类图表示为带空心菱形的实心线,菱形指向整体

java 关系表 java 调用关系图_类图_04

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的

//部门
class Department{
}

//公司
class Corporation{
    Department department = new Department ();//不可分离的

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }
}

UML类图如下,UML类图表示为带空心菱形的实心线,菱形指向整体

java 关系表 java 调用关系图_java 关系表_05

关联

关联关系是一种拥有的关系,属于依赖关系的特例。它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

双向关联举例:

java 关系表 java 调用关系图_UML_06