1. 关联关系(Association)
- 定义:关联关系是一种结构化关系,它描述了对象之间的连接,表明一个对象对另一个对象的依赖。关联可以是单向的,也可以是双向的。
- 代码示例:
// 学生类
class Student {private Teacher teacher;public Student(Teacher teacher) {this.teacher = teacher;}public Teacher getTeacher() {return teacher;}
}// 教师类
class Teacher {// 这里未体现关联,但如果是双向关联,可添加对应的学生引用
}
- UML 表示:在 UML 图中,关联关系用一条直线表示。直线两端可以有箭头表示方向,如果没有箭头则表示双向关联。可以在直线旁边标注关联的名称和多重性(如 1 对 1、1 对多、多对多等)。例如,一个学生对应一个老师,可标注为 “1 - 1”;一个老师可以教多个学生,可标注为 “1 - *”。
2. 聚合关系(Aggregation)
- 定义:聚合是关联关系的一种特殊形式,它代表整体与部分的关系,部分可以脱离整体而存在。
- 代码示例:
import java.util.ArrayList; import java.util.List;// 图书馆类 class Library {private List<Book> books;public Library() {this.books = new ArrayList<>();}public void addBook(Book book) {books.add(book);}public List<Book> getBooks() {return books;} }// 书籍类 class Book {public Book() {// 书籍可以独立于图书馆存在} }
- UML 表示:在 UML 图中,聚合关系用一条带空心菱形的直线表示,空心菱形指向整体。例如,图书馆是整体,书籍是部分,空心菱形指向图书馆。
3. 组合关系(Composition)
- 定义:组合也是整体与部分的关系,但部分不能脱离整体而存在。部分的生命周期与整体的生命周期一致。
- 代码示例:
// 汽车类 class Car {private Engine engine;public Car() {this.engine = new Engine();}public Engine getEngine() {return engine;} }// 发动机类 class Engine {public Engine() {// 发动机不能脱离汽车存在} }
- UML 表示:在 UML 图中,组合关系用一条带实心菱形的直线表示,实心菱形指向整体。例如,汽车是整体,发动机是部分,实心菱形指向汽车。
4. 泛化关系(Generalization)
- 定义:泛化关系也就是继承关系,它表示一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展父类的功能,也可以重写父类的方法。
- 代码示例:
// 动物类(父类) class Animal {public void eat() {System.out.println("Animal is eating.");} }// 狗类(子类) class Dog extends Animal {@Overridepublic void eat() {System.out.println("Dog is eating.");}public void bark() {System.out.println("Dog is barking.");} }
- UML 表示:在 UML 图中,泛化关系用一条带空心三角形的直线表示,空心三角形指向父类。例如,狗类继承自动物类,空心三角形指向动物类。
5. 实现关系(Realization)
- 定义:实现关系用于接口和实现该接口的类之间。类实现了接口中定义的方法。接口定义了一组抽象的操作,而实现类负责具体的实现。
- 代码示例:
// 可飞行接口 interface Flyable {void fly(); }// 鸟类实现可飞行接口 class Bird implements Flyable {@Overridepublic void fly() {System.out.println("Bird is flying.");} }
- UML 表示:在 UML 图中,实现关系用一条带空心三角形的虚线表示,空心三角形指向接口。例如,鸟类实现了可飞行接口,空心三角形指向可飞行接口。
6. 依赖关系(Dependency)
- 定义:依赖关系表示一个类使用另一个类的服务。通常是一个类的方法使用了另一个类的对象作为参数、局部变量或调用了另一个类的静态方法。
- 代码示例:
// 客户类 class Customer {public void placeOrder(Order order) {// 使用Order对象System.out.println("Customer places an order: " + order.getOrderNumber());} }// 订单类 class Order {private String orderNumber;public Order(String orderNumber) {this.orderNumber = orderNumber;}public String getOrderNumber() {return orderNumber;} }
- UML 表示:在 UML 图中,依赖关系用一条带箭头的虚线表示,箭头指向被依赖的类。例如,客户类依赖于订单类,箭头指向订单类。