天天看点

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

作者:Java狂人

1.概述

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

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

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

2.依赖关系

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

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

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

依赖关系

代码示例:

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图解)

关联关系

单向关联示例代码:

public class Computer {
     private SdCard sdCard;
 }
 
 public class SdCard {
 }           

4.聚合关系

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

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

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

聚合关系

代码示例:

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

5.组合关系

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

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

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

组合关系

代码示例:

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

6.继承关系

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

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

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

继承关系

示例代码:

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

7.实现关系

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

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

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

实现关系

示例代码:

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

8.耦合度

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