文章目录

  • 一、UML介绍
  • 二、UML类图中常见的关系
  • 1.泛化关系(Generalization)
  • 2.实现关系(Realization)
  • 3.组合关系(Composition)
  • 4.聚合关系(Aggregation)
  • 5.关联关系(Association)
  • 6. 依赖(Dependency)
  • 三、总结


一、UML介绍

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

二、UML类图中常见的关系

1.泛化关系(Generalization)

表示类与子类的继承关系。泛化关系使用空心三角形箭头表示,箭头指向父类,例如,一个猫类继承自动物类,可以用如下图所示的泛化关系表示:

java 泛化 类之间的关系 泛化关系uml_类对象

2.实现关系(Realization)

表示类实现一个接口或抽象类。实现关系使用带空心箭头的虚线表示,箭头指向接口或抽象类,例如,一个图形类实现了可绘制接口,可以用如下图所示的实现关系表示:

java 泛化 类之间的关系 泛化关系uml_uml_02

3.组合关系(Composition)

表示整体与部分之间的强关系,即一个类对象包含另一个类对象,并且包含的对象的生命周期与该类对象相同。组合关系是一种比较紧密的关系,整体对象和部分对象的生命周期是相同的,部分对象不能独立于整体对象而存在。例如,如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系通常使用实心菱形箭头表示 (整体与部分,不能单独存在,一种强关联)

可以用如下图所示的组合关系表示:

组合关系示例

java 泛化 类之间的关系 泛化关系uml_类对象_03

4.聚合关系(Aggregation)

表示整体与部分之间的关系,即一个类对象包含另一个类对象。聚合关系是一种比较松散的关系,整体和部分可以独立存在,但整体对象可以包含多个部分对象。例如,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系通常使用空心菱形箭头表示

以用如下图所示的聚合关系表示:

java 泛化 类之间的关系 泛化关系uml_uml_04

5.关联关系(Association)

表示一个类对象与另一个类对象之间的关系,即一个类对象引用另一个类对象。关联关系是一种比较松散的关系,两个类对象可以独立存在,没有强依赖关系。例如:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。关联关系通常使用普通箭头表示 ,双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头

可以用如下图所示的关联关系表示:

java 泛化 类之间的关系 泛化关系uml_UML_05

6. 依赖(Dependency)

依赖表示的是类与类之间的调用关系,通常是一个类的方法的参数类型是另一个类。依赖关系也是类与类之间的关联 。依赖总是单向的。依赖关系在 Java语言中体现为局部变量、方法的参数或者对静态方法的调用。总的来说:依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不要使用双向的相互依赖

java 泛化 类之间的关系 泛化关系uml_java 泛化 类之间的关系_06

三、总结

各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

关系

符号表示

箭头指向

代码表现

泛化关系

空心三角形+实线

箭头指向父类

extends关键字

实现关系

空心三角形+虚线

箭头指向接口

implements关键字

组合关系

实心菱形+实线箭头

菱形指向整体

成员变量

聚合关系

空心菱形+实线箭头

菱形指向整体

成员变量

关联关系

实线箭头

指向被拥有者

成员变量

依赖关系

虚线箭头

指向被使用者

局部变量、方法的参数或者对静态方法的调用