Skip to content
On this page

UML

UML(类图 Class Diagram)是现实模式的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分

类图的作用

  • 在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了系统人员对系统的了解。

  • 类图是系统分析和设计阶段的重要产物,是系统编码和测试重要模型

类图表示法

类的表示方式

在UML类图中,类使用包含类名、属性(field)和方法(method)且带有分隔线的矩形来表示比如下图表示一个Employee类,包含了name、age和address这3个属性,以及word()方法

image-20220903232257789

属性、方法名称前的(+ - #)表示这个属性、方法的可见性,UML类图表示可见性的符号有如下三种:

  • +:表示public
  • -:表示privtae
  • #:表示protected

属性的完整表示方式是:可见性 属性名称 :类型 [ = 默认值]

方法的完整表示方式是:可见性 方法名称(参数列表) [ :返回类型]

注意:

  1. 中括号的内容表示是可选的
  2. 也有将类型方法属性名前面,返回值类型放在方法名前面

类与类之间关系的表示方式

关联关系

关联关系是对象之间的一种引用关系,用来表示一类对象与另一类对象之间的联系,如:老师与学生、师傅与徒弟、丈夫与妻子等。关联关系是类于类之间最常用的一种关联关系,分为:一般关联关系(单项关联、双向关联、自关联)、聚合关系和组合关系

一般关联关系
单向关联
  • 在UML类图中单项关联用一个带箭头的实线表示。下图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类的实现

image-20220904101202659

双向关联
  • 在UML类图中,双线关联用一个不带箭头的直线表示。如下图所示,双向关联就是双方各自持有对方类型的成员变量,Customer类中万户一个List<Product>,表示一个顾客可以购买多个商品;在product类中维护一个Customer类型的成员变量,表示这个产品被哪个顾客所购买

image-20220904115652177

自关联
  • 自关联在UML类图中用一个带箭头且指向自身的线表示。下图的意思就是Node类包含类型为Node的成员变量,也就是"自己包含自己"

image-20220904102046608

聚合关系
  • 聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系

  • 聚合关系也是通过成员变量来实现的,其中成员变量是整体对象的一部分,但是成员变量可以脱离整体对象而独立存在。例如:学校与老师的关系,学校包含老师,但是吐过学校停办了,老师依然存在。

  • 在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。如下图所示:大学和教师的关系

image-20220904112126644

组合关系
  • 组合表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系
  • 在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如:头部和嘴巴
  • 在UML类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。如下图:头部和嘴巴的关系图

image-20220904112748519

依赖关系
  • 依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性关联。在代码中,某个类的方法通过局部变量、方法的参数或者静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。
  • 在UML类图中,依赖关系使用带箭头的虚线来表示,箭头指向被依赖的类。如下图所示:司机和汽车的关系图,司机驾驶汽车

image-20220904113938654

继承关系
  • 继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类的关系,是一种继承关系
  • 在UML类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实线中,使用面向对象的继承机制来实线泛化关系。例如:Student类和Teacher类都是Person类的子类

image-20220904114734816

实现关系
  • 实现关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作
  • 在UML类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如:汽车和船实现了交通工具,其类图如下所示

image-20220904115357003