UML 类图总结

类的表示

UML中类的表示

从上到下:类名、属性、方法、内部类

若类名为斜体则表示其为虚类

标示符前的符号含义如下:

符号 含义
+ public
- private
# protected

标示符的冒号后表示:属性类型或返回类型

类间关系

关联 Association

关联关系例1

在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。

class LoginForm {  
    private JButton loginButton; //定义为成员变量  
}  
class JButton {}

双向关联

关联关系例2

public class Customer {  
    private Product[] products;
}  

public class Product {  
    private Customer customer;
}  

单向关联

关联关系例3

public class Customer {  
    private Address address;  
}  
public class Address {}  

自关联

关联关系例4

public class Node {  
    private Node subNode;  
}  

多重性关联

关联关系例5

public class Form {  
    private Button[] buttons; //定义一个集合对象  
}  
public class Button {}  

聚合 Aggregation

在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。

成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。

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

组合 Composition

组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。

在整体类的构造方法中直接实例化成员类。

public class Head {  
    private Mouth mouth;  
  
    public Head() {  
        mouth = new Mouth(); //实例化成员类  
    }  
}  
public class Mouth {}  

依赖 Dependency

一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。

将一个类的对象作为另一个类中方法的参数

class Driver {
    public drive(Car car) {
        car.move();
    }
}

class Car {
    public void move();
}

在一个类的方法中将另一个类的对象作为其局部变量

Class Main {
    pubilc static void main(String[] args) {
        File file = new File(args[0]);
        Scanner scanner = new Scanner(file);
        ...
    }
}

在一个类的方法中调用另一个类的静态方法

Class Main {
    pubilc static void main(String[] args) {
        System.out.println("hello");
    }
}

泛化 Generalization

即继承关系。

//父类  
public class Person {  
    protected String name;  
    protected int age;  
  
    public void move() {} 
    public void say() {}  
}  
  
public class Student extends Person {  
    private String studentNo;  
  
    public void study() {}  
}  
  
public class Teacher extends Person {  
    private String teacherNo;  
  
    public void teach() {}  
}  

实现 Realization

public interface Vehicle {  
    public void move();  
}  
  
public class Ship implements Vehicle {  
    public void move() {}  
}  
  
public class Car implements Vehicle {  
    public void move() {}
}
原文地址:https://www.cnblogs.com/sequix/p/8573524.html