UML&类之间的关系

!!! note 目录

在Java中,类之间可以通过不同的关系进行连接和交互。以下是一些常见的类之间的关系:

  1. 继承关系(Inheritance)/泛化关系(is a)

    • 在Java中,一个类可以继承另一个类。被继承的类称为父类或超类,继承的类称为子类。
    • 子类可以继承父类的属性和方法,并且可以重写父类的方法或添加新的方法。
    • 通过继承,可以实现代码的重用和层次化的设计。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Animal {
    void eat() {
    System.out.println("Animal is eating");
    }
    }

    class Dog extends Animal {
    void bark() {
    System.out.println("Dog is barking");
    }
    }
  2. 实现关系(Implementation)

    • 在Java中,一个类可以实现一个接口或者扩展一个抽象类。
    • 通过实现接口或抽象类,子类必须提供接口或抽象类定义的所有方法的具体实现。
    • 实现关系使得多个类可以共享相同的行为,同时具备自己的特定实现。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    interface Shape {
    double calculateArea();
    double calculatePerimeter();
    }

    class Circle implements Shape {
    double radius;

    Circle(double radius) {
    this.radius = radius;
    }

    public double calculateArea() {
    return Math.PI * radius * radius;
    }

    public double calculatePerimeter() {
    return 2 * Math.PI * radius;
    }
    }
  3. 关联关系(Association)

    • 关联表示不同类之间的关联关系,通常是通过一个类中的成员变量引用另一个类的对象来实现的。
    • 关联关系可以是单向的或双向的。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Car {
    Engine engine;

    Car(Engine engine) {
    this.engine = engine;
    }
    }

    class Engine {
    // Engine class definition
    }
  4. 依赖关系(Dependency)

    • 依赖关系表示一个类(或方法)依赖于另一个类(或方法)来完成其工作,但它们之间的关系比关联关系更弱。
    • 通常表现为一个类作为另一个类的方法参数、局部变量或静态方法调用等。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Car {
    void drive(Engine engine) {
    // Method implementation
    }
    }

    class Engine {
    // Engine class definition
    }
  5. 聚合关系(Aggregation)

    • 聚合关系表示整体和部分之间的关系,整体对象和部分对象之间是“包含”的关系,但它们之间的生命周期可以不同。
    • 聚合关系是一种弱的“拥有”关系,部分对象可以脱离整体而存在。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class University {
    List<Student> students;

    University(List<Student> students) {
    this.students = students;
    }
    }

    class Student {
    // Student class definition
    }
  6. 组合关系(Composition)

    • 组合关系也表示整体和部分之间的关系,但与聚合关系不同,组合关系中部分对象与整体对象具有相同的生命周期。
    • 整体对象被销毁时,其部分对象也会被销毁。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class House {
    Room kitchen;
    Room bedroom;

    House() {
    kitchen = new Room();
    bedroom = new Room();
    }
    }

    class Room {
    // Room class definition
    }

这些类之间的关系可以帮助我们在设计和组织Java程序时更好地理解和建模不同类之间的交互。