类与类之间的关系(UML图解)

1.概述

海纳百川,有容乃大。世间万物皆有联系,“随风潜入夜,润物细无声”,描述的是春风、细雨与万物之间的联系。

在Java的世界里,类与类之间又有着怎样的关系呢?

在Java中,类与类之间主要有6种关系,分别是:依赖关联聚合组合继承实现,并且耦合度依次增强。

2.依赖关系

依赖关系在Java中的表现就是:类A的对象使用类B的对象,其中类B的对象作为类A的方法参数、局部变量,或者直接在类A中调用类B的静态方法。

**【箭头及指向】:**在UML类图中,以虚线箭头表示,箭头指向被依赖的类。

类与类之间的关系(UML图解)_第1张图片

代码示例:

public class Computer {
    // Mouse作为Computer中move方法的形参,建立起依赖关系
    public void move(Mouse mouse) {
        mouse.move();
    }
}

public class Mouse {
    public void move() {
    }
}

3.关联关系

关联关系分为单向关联与双向关联,在Java中的表现是:一个类中包含有另一个类。

  • 单向关联:类A中包含有类B。
  • 双向关联:类A中包含有类B,类B中包含有类A。

**【箭头及指向】:**在UML类图中,以实线箭头表示,箭头指向被关联的类。

类与类之间的关系(UML图解)_第2张图片

单向关联示例代码:

public class Computer {
    private SdCard sdCard;
}

public class SdCard {
}

4.聚合关系

从定义上来看,聚合关系是关联关系的一种,也是一个类中包含有另一个类,但是聚合关系强调的是**“整体-个体”**之间的相互关系,例如计算机与硬盘之间的关系,计算机作为一个整体,包含有硬盘,但是硬盘可以脱离计算机这个整体而单独存在。

**【箭头及指向】:**在UML类图中,以带空心菱形的实线表示,菱形指向整体。

类与类之间的关系(UML图解)_第3张图片

代码示例:

public class Computer {
    private Disk disk;

    // 聚合关系,通常使用setter方法来维护其成员变量值
    public void setDisk(Disk disk) {
        this.disk = disk;
    }
}

public class Disk {
}

5.组合关系

从定义上来看,组合关系是关联关系的一种,也是一个类中包含有另一个类,但是组合关系强调的是“整体-部分”之间的共存亡关系,整体与部分具有相同的生命周期,部分不能与脱离整体而单独存在,有种唇亡齿寒的感觉哈。

**【箭头及指向】:**在UML类图中,以带实心菱形的实线表示,菱形指向整体。

类与类之间的关系(UML图解)_第4张图片

代码示例:

public class Computer {
    private Cpu cpu;

    // 组合关系,通常使用构造方法来维护其成员变量值
    public Computer(Cpu cpu) {
        this.cpu = cpu;
    }
}

public class Cpu {
}

6.继承关系

继承关系在Java表示的类与类(接口与接口)之间的父子关系,表示子类在具有父类特性的同时,还具有自己独特的特性。在Java中,用extends关键字表示继承关系。

**【箭头及指向】:**在UML类图中,以带三角箭头的实线表示,箭头指向父类。

类与类之间的关系(UML图解)_第5张图片

示例代码:

public class Computer {
}

// 继承关系
public class PersonalComputer extends Computer{
}

7.实现关系

实现关系在Java中表现的是类与接口之间的关系,接口中定义了抽象的特性,类则是该接口特性的具体实现。

**【箭头及指向】:**在UML类图中,以带三角箭头的虚线表示,箭头指向接口。

类与类之间的关系(UML图解)_第6张图片

示例代码:

// 实现关系
public class Computer implements Calculate{
}

public interface Calculate {
}

8.耦合度

这几种类与类之间的关系,耦合度也是依次增强的:依赖 < 关联 < 聚合 < 组合 < 继承 < 实现

你可能感兴趣的:(java,java)