软件工程-面向对象-类图
本文梳理了面向对象类图的结构、六大类间关系(依赖、关联、泛化、实现、聚合、组合),并给出装饰器模式的核心结构与代码示例,方便快速掌握面向对象建模与设计模式考点。
📌 UML类图与面向对象关系速览
1. 类图基础
类图是描述软件系统结构的静态建模方法,核心是展示类的结构与类间关系。
- 结构三部分:类名(必填)、属性、操作
- 可见性符号:
+:public(公共)-:private(私有)#:protected(受保护)
- 属性格式:
可见性 属性名 : 类型 [= 默认值] - 操作格式:
可见性 操作名(参数列表) : 返回值类型
2. 类间关系详解
| 关系类型 | 核心定义 | 代码表现 | 示例 |
|---|---|---|---|
| 依赖(Dependency) | 临时使用关系,类A使用类B的服务,生命周期短暂 | 方法参数、局部变量、返回值类型 | People 类的 eat(Food food) 方法 |
| 关联(Association) | 长期、平等的强依赖,语义级关系 | 类B作为类A的成员变量 | Customer 包含 Address address |
| 泛化(Generalization) | 继承关系,父类与子类的“一般-特殊”关系 | extends 关键字 |
Student extends Person |
| 实现(Realization) | 类与接口的关系,类实现接口声明的操作 | implements 关键字 |
Car implements Vehicle |
| 聚合(Aggregation) | 强关联的“整体-部分”,部分可脱离整体存在 | 成员变量 + 构造/setter注入 | Car 包含 Engine engine,引擎可单独存在 |
| 组合(Composition) | 更强的“整体-部分”,部分与整体生命周期绑定 | 成员变量在构造器中直接实例化 | Head 包含 Mouth mouth,头销毁则嘴也销毁 |
3. 设计模式示例(装饰器模式)
- 核心思想:在不修改原有类的前提下,动态给对象添加新功能。
- 结构:
Component:抽象组件,定义核心操作ConcreteComponent:具体组件,实现核心功能Decorator:装饰器抽象类,继承Component并持有组件引用ConcreteDecorator:具体装饰器,给组件添加额外功能
- 代码结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public abstract class Component {
public abstract void Operation();
}
public class ConcreteComponent extends Component {
public void Operation() { /* 核心功能 */ }
}
public abstract class Decorator extends Component {
protected Component component;
public Decorator(Component component) {
this.component = component;
}
}
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
public void Operation() {
/* 额外功能 */
component.Operation();
/* 额外功能 */
}
}
💡 记忆技巧
- 依赖 vs 关联:依赖是“临时用一下”,关联是“长期持有”
- 聚合 vs 组合:聚合是“可拆分”,组合是“不可拆分,同生共死”
- 泛化 vs 实现:泛化是类继承类,实现是类实现接口