余姚微信网站建设策划书封面
以下是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) { // 临时依赖Formatterfmt.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; // 大脑不可独立存在
};