【设计相关】UML类图和时序图介绍
文章目录
- 一、 什么是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 | 显示屏类 |
… |
方法说明
类名 | 方法名 | 说明 |
---|---|---|
Component | init | 初始化部件 |
Component | doSelfTest | 自检 |
时序图(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、从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明
每个消息的特性(如参数等)。
时序图画线记忆技巧
同步调用:三角实心实线
异步调用:箭头实线
返回:箭头虚线
【设计相关】UML类图和时序图介绍相关推荐
- Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图
文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...
- java进阶之UML类图和时序图
目录 UML概述 UML图分类 类图和时序图 类图 类图概述 类图的结构 类图中的关系 时序图 时序图概述 组成元素 示例图 UML概述 统一建模语言(英语:Unified Modeling Lang ...
- 看懂UML类图和时序图
看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...
- 用gif图展示UML中箭头和线条的含义,及搞懂UML类图、时序图和用例图
前言 新进入一家公司,应对 日常的软件开发工作和交流,要能看懂别人写的代码各个类之间的关系,那就需要您能看懂类图uml中各个类之间的线条.箭头代表什么意思? UML的类图中,一共有以下六大关系: 泛化 ...
- UML的类图、时序图表示方法以及惯例
UML 类图图示样例(总图) 一.类图 类图分三层: 第一层显示类的名称. 如果是抽象类,则就用斜体显示 .第二层是类的特性,通常就是字段和属性. 第三层是类的操作,通常是方法或行为. 注意前面的符号 ...
- eclipse下生成Java类图和时序图,生成UML图
0.美图 最近老板让我做类图和时序图 1. 安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好. eclipse在线安装GEF的地 ...
- UML造型——使用EA时序图工具的开发实践和经验
Enterprise Architect(下面简称EA)是一款基于OMG UML的可视化模型与设计工具.提供了对软件系统的设计和构建.业务流程建模和基于领域建模的支持,被企业和组织不仅应用于对系统的建 ...
- UML学习笔记——顺序图(时序图)
文章目录 顺序图(时序图) 顺序图的引入 顺序图的概念 顺序图的组成 ①对象( Object) ②生命线( Lifeline ) ③激活(Activation) (控制焦点focus of contr ...
- UML建模之交互图——时序图、协作图
UML建模之交互图--时序图.协作图 一. 时序图 (Sequence Diagram) 1.时序图的概念 2. 时序图组成 二. 协作图 (Collaboration Diagram) 动态图概念 ...
最新文章
- 零基础入门jQuery视频教程
- 简说创业公司的技术选型,从BearyChat的开发说起
- 基于ServletJsp的网上书店设计(二)
- 通过栈(Stack)实现对树的遍历
- Loading 遮蔽层 简单实现。
- bzoj 1083: [SCOI2005]繁忙的都市
- openstack初探
- win7 64位系统没有语音识别,该如何解决?
- 【王道计组笔记】输入/输出设备磁盘
- Java jdk下载及安装
- 安装sql server2008R2
- TinyPNG压缩图片的网站
- 构造器模式(Builder模式)
- 【Kaggle Quick, Draw!】涂鸦识别,AI与你同在
- Wellcome Sanger研究所选择Arima Genomics作为HiC技术合作伙伴; 公司宣布针对高覆盖HiC的抢先体验活动
- Java 结构化数据处理开源库 SPL
- IKVM.NET的妙手偶得
- miui系统备份恢复失败(一招解决,,无需技术也行)
- pdfmake支持html,pdfMake前端导出pdf
- 使用matlab绘制条形图、面积图、饼图、柱状图
热门文章
- “压缩(zipped)文件夹“G:\Program\Wechat WeChatFiles(wxid cqpx72n77z9x22 FileStorage\File 2022-12 基...
- 常见互联网34个术语解释
- python docx 合并文档 图片_python玩转pdf全攻略
- Java项目源码SSM宿舍管理系统|寝室
- UCSC下载ENCODE数据
- MT7620设置GPIO输入中断
- HTML、CSS实现手风琴效果
- 微信小程序------登录
- 幸运的人更幸运 - 节选
- 你好,女神节有个给你的惊喜请查收