UML类图

136 阅读2分钟

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战

UML类图简介

在 Java 或其它面向对象设计模式中,类与类之间主要有 6 种关系,他们分别为:依赖,关联,聚合,组合,继承,实现。他们的耦合度依次增强。

依赖

 如果一个对象的活动中要依赖另一个对象,则两者之间是依赖关系。

依赖.png

class Driver {
    //通过形参方式发生依赖关系 
    public void drive1(Car car) {
		car.run();
    }
     //通过局部变量发生依赖关系
    public void drive2() {
		Car car = new Car();
		car.run();
    }
    //通过静态变量发生依赖关系
    public void drive3() {
		Car.run();
    }
}

public class Car {    
    public static void run(){
        System.out.println("汽车在跑");
    }
}

关联

如果一个对象需要知道另一个对象,则对象之间是一种关联的关系。关联可以是单向的,即一个对象知道另一个对象,而另一个对象不知道该对象,也可以是双向的,即两个对象相互知道。

关联.png

class Driver {
    private Car car = new Car();
    public void drive() {
		car.run();
    }
}
class Car {
    public void run(){
        System.out.println("汽车在跑");
    }
}

聚合

表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在,整体和局部生命周期不一样。

聚合.png

class Driver {
    private Car car = null;
    public void drive() {
		car.run();
    }
    public void setCar(Car c){
		car = c;
    }
}
class Car {
    public void run(){
         System.out.println("汽车在跑");
    }
}

组合

和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了,整体和局部生命周期一样。

组合.png

class Driver {
    private Car car = null;
    public Driver(Car car) {
		this.car = car;
    }
    public void drive() {
		car.run();
    }
}
class Car {
    public void run(){
        System.out.println("汽车在跑");
    }
}

继承

在面向对象的编程思想中,继承是指子类继承了父类的所有功能,并且能够在父类的基础上扩展自己的功能,在 Java 中使用 extends 关键字。

继承.png

class Animal {
    public void eat(){}
    public void sleep(){}
}
class People extends Animal {
    public void study(){}
}

实现

实现的概念和继承有些类似。但是接口中不会有已经写好的操作或者方法,接口中声明的操作都需要再实现类中实现,在 Java 中使用 implement 关键字。

实现.png

interface IPeople {
    public void eat();
    public void study();
}
class People implements IPeople {
    public void eat(){
    }
    public void study(){
    }
}