目录
聚合关系
聚合是一种较弱的"拥有"关系,表示整体与部分的关系,但部分可以独立于整体存在。例如,部门和员工之间的关系,一个部门可以包含多个员工,但员工可以离开这个部门。
java
// 员工类
class Employee {
private String name;
public Employee(String name) {
this.name = name;
}
// 省略其他属性和方法
}
// 部门类
class Department {
private String name;
private List<Employee> employees; // 部门包含多个员工,聚合关系
public Department(String name) {
this.name = name;
this.employees = new ArrayList<>();
}
public void addEmployee(Employee employee) {
employees.add(employee);
}
// 省略其他属性和方法
}
UML示例:
组合关系
组合是一种较强的"拥有"关系,表示整体与部分的关系,但部分不能独立于整体存在。通常,组合关系中的部分会在整体创建时创建,并在整体销毁时销毁。例如,公司和部门之间的关系,一个公司由多个部门组成,如果公司不存在了,部门也将不存在。
java
// 部门类
class Department {
private String name;
public Department(String name) {
this.name = name;
}
// 省略其他属性和方法
}
// 公司类
class Company {
private String name;
private List<Department> departments; // 公司包含多个部门,组合关系
public Company(String name) {
this.name = name;
this.departments = new ArrayList<>();
}
// 创建部门时,直接在Company类内部进行
public Department createDepartment(String deptName) {
Department department = new Department(deptName);
departments.add(department);
return department;
}
// 省略其他属性和方法
}
UML示例:
依赖关系
在Java中,依赖关系是类与类之间最弱的一种关系。当一个类的方法使用或操纵另一个类的对象时,我们就说第一个类依赖于第二个类。这种关系通常通过以下几种方式表现:
- 一个类的方法接收另一个类的对象作为参数。
- 一个类的方法返回另一个类的对象。
- 一个类的方法使用另一个类的对象进行某些操作。
下面是一个简单的Java代码示例,说明两个类之间的依赖关系:
java
// Car类表示汽车,依赖于Engine类
class Car {
// Car类的方法start需要Engine对象来启动汽车
public void start(Engine engine) {
if (engine != null) {
engine.start();
System.out.println("Car started with the engine.");
}
}
}
// Engine类表示发动机
class Engine {
// Engine类的方法start用于启动发动机
public void start() {
System.out.println("Engine started.");
}
}
// Main类用于演示依赖关系
public class Main {
public static void main(String[] args) {
// 创建Engine对象
Engine engine = new Engine();
// 创建Car对象
Car car = new Car();
// Car对象依赖于Engine对象来启动
car.start(engine);
}
}
UML示例:
继承关系
继承是子类继承父类的方法和属性的过程。在Java中,使用extends
关键字来实现继承关系。
java
// 父类
class Animal {
void eat() {
System.out.println("Animal is eating...");
}
}
// 子类继承Animal类
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking...");
}
}
// 测试类
public class TestInheritance {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // 继承自Animal类的方法
dog.bark(); // Dog类自己的方法
}
}
UML示例:
实现关系
实现是指一个类实现一个或多个接口的过程。接口定义了一组抽象方法,实现类必须提供这些方法的实现。在Java中,使用implements
关键字来实现接口。
java
// 定义一个接口
interface Animal {
void eat();
}
// 实现该接口的类
class Dog implements Animal {
public void eat() {
System.out.println("Dog is eating...");
}
void bark() {
System.out.println("Dog is barking...");
}
}
// 测试类
public class TestImplementation {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // 实现自Animal接口的方法
dog.bark(); // Dog类自己的方法
}
}
UML示例: