UML中各箭头符号解释
以下是UML图中常见箭头符号的总结(以类图为核心):
1. 继承(Generalization)
•符号:空心三角形箭头 + 实线
•方向:子类 → 父类
// C++
class Animal {};
class Dog : public Animal {}; // Dog → Animal
2. 实现(Realization)
•符号:空心三角形箭头 + 虚线
•方向:实现类 → 接口
•代码对应:class Class : public Interface {};
interface Flyable {
void fly();
}
class Bird implements Flyable {} // Bird → Flyable
3. 关联(Association)
•符号:普通实线箭头(可带导航性)
•方向:持有者 → 被引用者
•代码对应:成员变量持有对象
•示例: ClassA --> ClassB : 成员变量
// 双向关联
class Teacher {
Student* students; // 持有学生对象
};
class Student {
Teacher* teacher; // 持有教师对象
};
// 单向关联(导航性)
class Order {
Customer* owner; // Order→Customer单向持有
};
4. 依赖(Dependency)
•符号:虚线箭头
•方向:使用者 → 被依赖者
•代码对应:参数传递、局部变量等临时依赖
•示例: ClassA …> ClassB : 方法参数
class Report {
void print(Formatter fmt) { // 临时依赖Formatter
fmt.format(this);
}
};
代码示例(关联 vs 依赖)// 关联:成员变量持有对象(长期关系)
class Order {
private:
Customer* customer; // 关联关系
};
// 依赖:临时使用对象(短期关系)
class ReportGenerator {
public:
void generate(Data data) { // 依赖关系
data.process();
}
};
5. 聚合(Aggregation)
•符号:空心菱形 + 实线箭头
•方向:整体 → 部分
•特点:部分可独立存在(弱拥有)
•示例: Car o-- Wheel
class Car {
Wheel* wheels; // 车轮可独立存在
Engine* engine; // 引擎可更换
};
6. 组合(Composition)
•符号:实心菱形 + 实线箭头
•方向:整体 → 部分
•特点:部分与整体同生命周期(强拥有)
•示例: Human *-- Heart
class Human {
Heart heart; // 心脏随人体创建/销毁
Brain brain; // 大脑不可独立存在
};