文章目录
- 一、UML介绍
- 二、UML类图中常见的关系
- 1.泛化关系(Generalization)
- 2.实现关系(Realization)
- 3.组合关系(Composition)
- 4.聚合关系(Aggregation)
- 5.关联关系(Association)
- 6. 依赖(Dependency)
- 三、总结
一、UML介绍
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
二、UML类图中常见的关系
1.泛化关系(Generalization)
表示类与子类的继承关系。泛化关系使用空心三角形箭头表示,箭头指向父类,例如,一个猫类继承自动物类,可以用如下图所示的泛化关系表示:
2.实现关系(Realization)
表示类实现一个接口或抽象类。实现关系使用带空心箭头的虚线表示,箭头指向接口或抽象类,例如,一个图形类实现了可绘制接口,可以用如下图所示的实现关系表示:
3.组合关系(Composition)
表示整体与部分之间的强关系,即一个类对象包含另一个类对象,并且包含的对象的生命周期与该类对象相同。组合关系是一种比较紧密的关系,整体对象和部分对象的生命周期是相同的,部分对象不能独立于整体对象而存在。例如,如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系通常使用实心菱形箭头表示 (整体与部分,不能单独存在,一种强关联)
可以用如下图所示的组合关系表示:
组合关系示例
4.聚合关系(Aggregation)
表示整体与部分之间的关系,即一个类对象包含另一个类对象。聚合关系是一种比较松散的关系,整体和部分可以独立存在,但整体对象可以包含多个部分对象。例如,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系通常使用空心菱形箭头表示
以用如下图所示的聚合关系表示:
5.关联关系(Association)
表示一个类对象与另一个类对象之间的关系,即一个类对象引用另一个类对象。关联关系是一种比较松散的关系,两个类对象可以独立存在,没有强依赖关系。例如:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。关联关系通常使用普通箭头表示 ,双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头
可以用如下图所示的关联关系表示:
6. 依赖(Dependency)
依赖表示的是类与类之间的调用关系,通常是一个类的方法的参数类型是另一个类。依赖关系也是类与类之间的关联 。依赖总是单向的。依赖关系在 Java语言中体现为局部变量、方法的参数或者对静态方法的调用。总的来说:依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不要使用双向的相互依赖
三、总结
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
关系 | 符号表示 | 箭头指向 | 代码表现 |
泛化关系 | 空心三角形+实线 | 箭头指向父类 | extends关键字 |
实现关系 | 空心三角形+虚线 | 箭头指向接口 | implements关键字 |
组合关系 | 实心菱形+实线箭头 | 菱形指向整体 | 成员变量 |
聚合关系 | 空心菱形+实线箭头 | 菱形指向整体 | 成员变量 |
关联关系 | 实线箭头 | 指向被拥有者 | 成员变量 |
依赖关系 | 虚线箭头 | 指向被使用者 | 局部变量、方法的参数或者对静态方法的调用 |