【设计相关】UML类图和时序图介绍
创始人
2025-05-30 14:48:18

文章目录

  • 一、 什么是UML
    • UML的定义
    • UML的应用场景
    • 类图(Class Diagrams)
    • 类关系
      • 继承关系
      • 记忆技巧
    • 案例
      • 汽车关系
      • 购票机
        • 类说明
        • 方法说明
    • 时序图(Sequence Diagrams)

一、 什么是UML

UML的定义

​ 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产

品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。

UML 使用面向对象设计的的建模工具,但独立于任何具体程序设计语言。

UML的应用场景

​ UML 是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品

的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软

件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以

图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附

加信息之用的文本。这些虽简单却非常重要,在 UML 规则中相互联系和扩展。

​ UML 的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。

其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机

械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系

统或工业过程等。总之,UML 是一个通用的标准建模语言,可以对任何具有静态结构和

动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统

完成后的测试和维护。

​ UML2.0 一共有 13 种图形(UML1.5 定义了 9 种,2.0 增加了 4 种)。分别是:用例

图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图 9 种,包图、

时间图、组合结构图、交互概览图 4 种。

用例图(Usecase Diagrams):用来描述用户的需求,从用户的角度描述系统的功能,

并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。

类图(Class Diagrams):用于定义系统中的类。

对象图(Object Diagrams):是类图的一个实例,描述了系统在具体时间点上所包含

的对象以及各个对象之间的关系。

构件图(Component Diagrams):一种特殊的 UML 图来描述系统的静态实现视图。

部署图(Deployment Diagrams):定义系统中软硬件的物理体系结构。

状态图(State Chart Diagrams):用来描述类的对象所有可能的状态以及时间发生时

状态的转移条件。

协作图(Collaboration Diagrams):描述对象之间的合作关系,更侧重和用户对象说

明哪些对象有消息的传递。

活动图(Activity Diagrams):用来描述满足用例要求索要进行的活动以及活动间的约

束关系。

时序图(Sequence Diagrams):描述对象之间的交互顺序,着重体现对象间消息传递

的时间顺序,强调对象之间消息的发送顺序,同时显示对象之间的交互过程。

包图(Package Diagrams):对构成系统的模型元素进行分组整理的图。

组合结构图(Composite Structure Diagrams):表示类或者构建内部结构的图。

时间图(Timing Diagrams):用来显示随时间变化,一个或多个元素的值或状态的更

改,也显示时控事件之间的交互和管理它们的时间和期限约束。

交互概览图

Interaction Overview Diagrams):用活动图来表示多个交互之间的控制

关系的图

事物关系描述

关联(Association):是一种拥有的关系,具有方向性,如果一个类单方向的访问另一

个类,则称为单向关联(用一个箭头的实线表示);如果两个类对象可以互相访问,则

称为双向关联(用两个箭头或不用箭头的实线表示);一个对象能访问关联对象的数目

叫做“多重性”。用带普通箭头的实线表示 ,箭头指向被拥有者,或不用箭头的实线表示 。

聚合(Aggregate):是整体与部分的关系。当某个实体聚合成另一个实体时,该实体

还可以是另一个实体的部分。用带空心菱形的实线表示 ,菱形指向整体,箭头指向个体。

组合(Combination):整体与部分的关系,组合比聚合更加严格,当某个实体组合成

另一个实体时,二者具有相同的生命周期,例如手臂和人之间存在的是组合关系。

用带实心菱形的实线表示 ,菱形指向整体,箭头指向个体。

泛化(Generalization):表示一个更泛化的元素和一个更具体的元素之间的关系,与继

承是同一个概念。用带三角箭头的实线表示 ,箭头指向父类。

实现(Realization):类与接口的关系,类实现接口。用带三角箭头的虚线表示 ,箭头指向父接口。

依赖(Dependency):如果一个类的改动会影响到另一个类,则两个类之间存在依赖关系,一般而言,依赖是单向的。用带普通箭头的虚线表示 ,箭头指向被依赖者。事物关系描述

在这里插入图片描述

类图(Class Diagrams)

在 UML 2.0 的 13 种图形中,类图是使用频率最高的 UML 图之一。类图是描述系统

中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有

一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、

接口和它们之间的协作关系,用于系统设计阶段。

类图用三个矩形表示,最上面的部分标识类的名称;中间的部分标识类的属性;最下

面的部分标识类的方法,如下图所示:

​ + 表示 public

​ - 表示private

​ # 表示protected

​ ~ 表示default 可以省略不写

​ 字段和方法返回值的数据类型非必须。

​ 抽象类或抽象方法用斜体表示

​ 静态类或静态方法加下划线

​ 如果是接口在类名上加<>

类关系

继承关系

​ 继承关系,子类继承父类所有功能,所有属性。子类除了父类的关系以外还拥有自己的属性

在这里插入图片描述

实现关系

接口(包括抽象类)是方法的集合,在实现关系中,类实现了接口,类中的方法实现

了接口声明的所有方法。例如:汽车和轮船都是交通工具,而交通工具只是一个可移动

工具的抽象概念,船和车实现了具体移动的功能。

在这里插入图片描述

组合关系

组合关系表示类之间整体与部分的关系,整体和部分有一致的生存期。一旦整体对象

不存在,部分对象也将不存在,是同生共死的关系。例如:人由头部和身体组成,两者

不可分割,共同存在。

在这里插入图片描述

聚合关系

聚合关系也表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员

对象可以脱离整体对象独立存在。例如:公交车司机和工衣、工帽是整体与部分的关系,

但是可以分开,工衣、工帽可以穿在别的司机身上,公交司机也可以穿别的工衣、工帽。

关联关系

关联关系是类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系。

组合、聚合也属于关联关系,只是关联关系的类间关系比其他两种要弱。

关联关系有四种:双向关联、单向关联、自关联、多重数关联。例如:汽车和司机,

一辆汽车对应特定的司机,一个司机也可以开多辆车

在这里插入图片描述

在多重性关系中,可以直接在关联直线上增加一个数字,表示与之对应的另一个类的

对象的个数。

1…1:仅一个

0…*:零个或多个

1…*:一个或多个

0…1:没有或只有一个

m…n:最少 m、最多 n 个 (m<=n)

依赖关系

大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事

物,在需要表示一个事物使用另一个事物时使用依赖关系。

例如:汽车依赖汽油,如果没有汽油,汽车将无法行驶。

在这里插入图片描述

记忆技巧

+ 表示 public
- 表示private
# 表示protected
~ 表示default 可以省略不写
字段和方法返回值的数据类型非必须。
抽象类或抽象方法用斜体表示
静态类或静态方法加下划线
如果是接口在类名上加<>


继承:父类属性子类继承,车->汽车 三角空心实线
实现:一个抽象概念,需要被实现:移动->汽车移动 三角空心虚线
组合:不可分割的关系:人->头 四角实心实线
聚合:可以分离的关系:人->衣服 四角空心实线
关联:两类事物有关系:汽车跟司机 无头实线
依赖关系:一个事物依赖另外一个事物:如汽车依赖汽油 箭头虚线

个体指向实体
依赖指向被依赖
子类指向父类

案例

汽车关系

给出下列对象,请用对应关系组合

人,头,身体;司机,汽车司机,衣服,帽子;运输器,汽车,公交车,的士,船,油;

在这里插入图片描述

购票机

实现自动购票机的类图

在这里插入图片描述

售票机面板相关部件的作用如下所述:

(1) 在身份证识别区放入二代身份证。

(2) 显示屏显示所有的车次、车票种类(单程票、多次往返票和座席种类)。

(3) 乘客选择车次和座位类型确定下单。

(4) 继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买

多张票。

(5) 插卡口接受 PayCard(银行卡)和纸币槽接受现金。

(6) 打印机用于输出车票。

(7) 所有部件均可实现自检并恢复到初始状态。

类说明

类名说明
Component抽象类部件
KeyBoard抽象键盘类
ActionKeyBoard继续/取消键盘类
Screen显示屏类

方法说明

类名方法名说明
Componentinit初始化部件
ComponentdoSelfTest自检

时序图(Sequence Diagrams)

​ 时序图描述对象之间消息的发送顺序,强调时间顺序。时序图是一个二维图,横轴表

示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。用箭头

表示消息、用竖虚线表示对象生命线。

时序图的作用

1、展示对象之间交互的顺序。将交互行为建模为消息传递,通过描述消息是如何在

对象间发送和接收的来动态展示对象之间的交互;

2、相对于其他 UML 图,时序图更强调交互的时间顺序;

3、可以直观的描述并发进程。

角色(Actor)

系统角色,可以是人、机器、其他系统、子系统;在时序图中用表示。

对象(Object)

1、对象的三种命名方式

第一种方式包括对象名和类名,例如:直播课时:课时,在时序图中,用“对象:类”

表示;

第二种方式只显示类名,即表示它是一个匿名对象,例如: :课程;在时序图中,用

“:类”表示;

第三种方式只显示对象名不显示类名,例如:讲师;在时序图中,用“对象”表示。

2、命名方式的选择

三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种。

3、对象的排列顺序

对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:把交

互频繁的对象尽可能的靠拢;把初始化整个交互活动的对象放置在最左端。

生命线(Lifeline)

在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

控制焦点(Focus of Control)

又称为激活期,表示时间段的符号,在这个时间段内对象将执行相应的操作。可以理

解为 Java 语言中一对大括号{ }中的内容;用小矩形表示。

消息(Message)

消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous

Message)和返回消息(Return Message)。

1、消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放

弃或者返回控制。用来表示同步的意义;

2、消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接

受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

3、返回消息表示从过程调用返回。

自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。

常用组合片段举例:

用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的 if…else…

1、抉择(Alt)

抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段

可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所

有临界都为 False 并且没有 else,则不执行任何片段。

在这里插入图片描述

2、选项(Opt)

包含一个可能发生或不发生的序列;

在这里插入图片描述

3、循环(Loop)

片段重复一定次数,可以在临界中指示片段重复的条件。

在这里插入图片描述

4、并行(Par)

在这里插入图片描述

时序图画法及实践

时序图的绘制步骤可简单总结如下:

1、划清边界,识别交互的语境;

2、将所要绘制的交互场景中的角色以及对象梳理出来;

3、从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明

每个消息的特性(如参数等)。

时序图画线记忆技巧

同步调用:三角实心实线

异步调用:箭头实线

返回:箭头虚线

在这里插入图片描述

相关内容

热门资讯

【C语言】你真的了解结构体吗 引言✨我们知道C语言中存在着整形(int、short...),字符型(char)&#x...
一人一世界一叶一菩提什么意思,... 一人一世界一叶一菩提什么意思目录一人一世界一叶一菩提什么意思一花一世界,一叶一菩提的意思是什么?佛家...
国家的含义是什么 极速百科网 ... 国家的含义是什么目录国家的含义是什么国家的含义是什么对国家最本质的解释是什么?国家的含义是什么?国家...
如何用word制作宣传单,wo... 如何用word制作宣传单目录如何用word制作宣传单word业务传单在哪如何利用word排版制作广告...
怎么练习穿高跟鞋,很多女生穿不... 怎么练习穿高跟鞋目录怎么练习穿高跟鞋很多女生穿不惯高跟鞋,该如何舒适的驾驭高跟鞋呢?请问一下..怎么...
linux交换分区和逻辑卷 交换分区 查看交换分区: [root@localhost ~]# free ...
AGV小车的运动是怎么控制的呢... 随着市场的竞争加剧,有一家位于城市中心的酒店开始引入一些新的科技设备来提高服务水平&#...
火车票开售时间,火车票早上几点... 今天给各位分享火车票开售时间,火车票早上几点开售的知识,其中也会对火车票预订早上几点开始发售进行解释...
康熙容妃历史原型 极速百科网 ... 康熙容妃历史原型目录康熙容妃历史原型康熙容妃历史原型康熙大帝里面的容妃是历史上的真人真事吗?死后被追...
怎么鉴别镀银和纯银,纯银和镀银... 怎么鉴别镀银和纯银目录怎么鉴别镀银和纯银纯银和镀银怎么区别怎么能看出是纯银还是镀银如何鉴别银饰物品是...
麻辣烫的菜单有哪些,麻辣烫的菜... 麻辣烫的菜单有哪些目录麻辣烫的菜单有哪些麻辣烫的菜单麻辣烫的菜品有哪些?麻辣烫菜单(尽享中国特色小吃...
dhtmlx.Gantt 8.... 最新消息 如果您的当前版本的 dhtmlxGantt 早于 2.0,请查看从旧版本迁...
docker版jxTMS使用指... 本文讲解docker版jxTMS的数据查询,整个系列的文章请查看:doc...
Class文件解析 目录 Class文件格式总览 常量池(Constant Pool) 数据类型描述规则 成员变量描述规...
瑞士是什么之国,瑞士是什么之国... 瑞士是什么之国目录瑞士是什么之国瑞士是什么之国?意大利,加拿大,日本,瑞士,泰国的别称是什么?瑞士是...
带坏字的成语,带“坏”字的成语... 带坏字的成语目录带坏字的成语带“坏”字的成语有哪些?表示坏的成语?坏字开头的成语带坏字的成语 ...
伤痕累累怎么读,伤痕累累的拼音... 伤痕累累怎么读目录伤痕累累怎么读伤痕累累的拼音是什么伤痕累累的意思伤痕累累的累发什么音?伤痕累累怎么...
随车电话的咨询方法(随车电话是... 本篇文章极速百科给大家谈谈随车电话的咨询方法,以及随车电话是什么意思对应的知识点,希望对各位有所帮助...
九九乘法表-第14届蓝桥杯ST...  [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成࿰...
DS1307 RTC模块使用 主要特性DS1307是Maxim的串行、I2C实时时钟芯片。主要特性有:工作电压&#x...
Vue学习之Vue的生命周期详... Vue学习之Vue的生命周期详细解释概览详细解释每个生命周期的应用beforeCreate(创建前)...
手机键盘输入法怎么设置,手机输... 方法一: 2. 找到并点击“系统设置”。 3. 在“系统设置”中,点击“键盘与输入法”。...
水泥由什么组成,水泥组成材料有... 水泥由什么组成目录水泥由什么组成水泥组成材料有哪些水泥的主要成份是什么?它是用什么做的?水泥的主要成...
一个银行卡可以绑几个微信,银行... 一个银行卡可以绑几个微信目录一个银行卡可以绑几个微信银行卡能绑定几个微信号一张银行卡可以绑几个微信一...
表结构是什么(表结构是啥) 表... 本篇文章极速百科给大家谈谈表结构是什么,以及表结构是啥对应的知识点,希望对各位有所帮助,不要忘了收藏...
微信小程序实现多语言方案|中英... 不管哪个系统,多语言方案套路都是一样的 1、建立多语言映射库 2、记录并存储用户选...
管理技术债 管理技术债 Philippe Kruchten, Robert Nord, Ipek Ozkaya ...
Matlab中exp(x)函数... 目录1.语法2.说明3.示例e的数字表示形式欧拉恒等式为指数函数绘图4.参考来源: 1...
拯救会议纪要!快用这三个音频转... Hello,大家好,我是指尖科技君~不知道小伙伴们平时有录音的习惯吗&#...
八个字的成语励志,奋斗的八字成... 八个字的成语励志目录八个字的成语励志奋斗的八字成语有哪些励志的8字成语八个字的成语励志 志存高...