UML顺序图的建模方法及应用示例

《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书

顺序图是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中的行为顺序。顺序图将交互关系表示为一个二维图,横轴代表在协作中各独立对象的类元角色;纵轴是时间轴,时间沿竖线向下延伸。使用顺序图对系统建模时,可以遵循如下策略:

(1)设置交互语境,这些语境可以是系统、子系统、操作、类、用例和协作的一个脚本。

(2)通过识别对象在交互中扮演的角色,根据对象的重要性,将其按从左到右的顺序放置在顺序图中。

(3)设置每个对象的生命线。一般情况下,对象存在于交互的整个过程,但它可以在交互过程中创建和撤销。

(4)从引发某个交互的信息开始,在生命线之间按从上往下的顺序画出随后的信息。

(5)设置对象的激活期,这可以可视化实际计算发生时的时间点、可视化消息嵌套等。

(6)如果需要设置时间或空间约束,可以为每个消息附上合适的约束。

(7)给控制流的每个消息附上前置或后置条件,这可以更详细地说明这个控制流。

根据以上策略,画顺序图的一般步骤是:

(1)确定交互的范围。

(2)确定参与交互过程的活动者与对象。

(3)确定活动者、对象的生命周期。

(4)确定交互中产生的消息。

(5)细化消息的内容。

【例6.1】家用汽车都会配备那种能够遥控锁车、开锁、打开后备箱的钥匙。当按下“锁车”按钮时,汽车会闪动一下车灯并发出一声蜂鸣,说明车门上锁了。这里涉及3个类:CarOwner(车主)、CarKey(车钥匙)和Car(车)。现在我们就用这样一个实例介绍顺序图的设计。

1)应用场景

该建模场景的描述如下:

(1)从CarOwner到CarKey的请求,要求CarKey实现getButtonPress(b)操作,登记CarOwner按下的按钮(通常用b引用)。

(2)CarKey发送消息给Car,通知Car实现其pressKeyMessage(b)操作,如果按下的按钮b是“lock”,Car就会向它自己发送执行lock()操作的请求。然后,Car发送两个信号BlinkLights和Beep给CarOwner。

2)实现

首先,绘出3个匿名对象,它们分别是CarOwner、CarKey和Car的实例。然后,把它们放在顺序图的最顶层,再为每个对象绘制一条生命线,如图6.17所示。

图6.17  顺序图的初始

根据场景描述,绘制的顺序图如图6.18所示。

图6.18  汽车和车钥匙顺序图

【例6.2】ATM取款看起来是件很简单的事情,首先插入银行卡,然后按照提示输入密码,再选择“取款”,接着输入数额,最后提出现金,但是整个过程中各个对象之间要涉及很多的消息。

1)应用场景

ATM取款应用场景描述如下:

(1)银行储户将银行卡插入读卡机insertCard()。

(2)读卡机将信息传给客户管理acceptCard()。

(3)客户管理提出查询密码checkPass()。

(4)显示屏要求银行储户输入密码inputPassRequest()。

(5)储户在输入设备输入密码inputPass()。

(6)输入设备将输入的密码传递给客户管理transPass()。

(7)客户管理请求事务管理确认密码的合法性requestPassLegal()。

(8)事务管理确认密码的合法性并返给客户管理passLegal()。

(9)客户管理通过显示屏询问服务类别queryKind()。

(10)显示屏要求储户输入服务类别请求showServiceRequest()。

(11)储户输入取款请求inputTakeRequest()。

(12)输入设备向客户管理发出取款请求takeRequest()。

(13)客户管理提出取款金额qureyMoney()。

(14)显示屏向银行储户发出取款数额请求showMoneyRequest()。

(15)储户输入取款数额inputMoney()。

(16)输入设备将储户输入的数额传递给客户管理transMoney()。

(17)客户管理确认取款额数并返给显示屏queryMoney()。

(18)显示屏呈现给储户确认信息showOKRequest()。

(19)储户输入确认信息inputOK()给输入设备。

(20)输入设备将确认信息传递给客户管理OKInformation()。

(21)客户管理请求事务管理确认数额的合法性requestMoneyLegal()。

(22)事务管理确认数额的合法性并返给客户管理moneyLegal()。

(23)事务管理向点钞机发出出钞请求requestTake()。

(24)点钞机出钞票outMoney()。

(25)储户取出钞票takeMoney。

(26)取卡outCard()。

2)实现

在整个场景中,用到7个对象,分别是“银行储户”“读卡机”“显示屏”“输入设备”“客户管理”“点钞机”和“事务管理”。它们之间通过消息传递保障其功能正常运行。对应的顺序图如图6.19所示。

图6.19  ATM取款顺序图

【例6.3】在前面几章我们以图书管理系统为例进行了分析,并且已经对其静态图进行了建模。

由于图书管理员、系统管理员以及借阅者这3个参与者的参与,以及对图书的操作内容较多,因此图书管理系统中的顺序图相对较多,比如有图书管理员处理借书顺序图、图书管理员处理还书顺序图、借阅者查询书目顺序图、系统管理员添加图书顺序图、系统管理员删除书目顺序图、系统管理员添加借阅者账户顺序图等。

下面分别介绍这几种顺序图的创建。

1)图书管理员处理借书顺序图

图书管理员收到借阅者的借书申请时,首先验明借阅者的身份,如果没有问题,则查找借阅书目,如果借阅者没有超出最大借阅数量,则开始借阅并更新图书列表信息,借阅成功。图书管理员处理借书的顺序图如图6.20所示。

图6.20  图书管理员处理借书顺序图

2)图书管理员处理还书顺序图

在图书管理系统中,图书管理员处理还书时,首先是借阅者向图书管理员发出还书请求,图书管理员将读者的信息和所要归还的图书信息发送到数据库,由系统检查用户的合法性,当借阅者的信息和图书的信息都得到确认后,图书管理员修改图书信息和借阅者信息,将结果显示处理,完成还书操作。图书管理员处理还书的顺序图如图6.21所示。

图6.21  图书管理员处理还书顺序图

3)借阅者查询图书顺序图

在图书管理系统中,借阅者可以登录页面,查询图书。借阅者查询图书的顺序图如图6.22所示。

图6.22  借阅者查询图书顺序图

4)系统管理员添加图书顺序图

在图书管理系统中,要添加一本新的图书时,系统管理员需要在页面上进行添加操作,页面会将管理员的请求发送到书目中进行搜索,确认该书是否为新书,如果为新书,则将其加入图书列表中。系统管理员添加图书的顺序图如图6.23所示。

图6.23  系统管理员添加图书顺序图

5)系统管理员删除书目顺序图

当图书需要报废处理时,系统管理员可以登录到后台,查找对应的书目,在图书列表中进行删除操作,该书目对象将被彻底销毁。系统管理员删除书目的顺序图如图6.24所示。

图6.24  系统管理员删除书目顺序图

6)系统管理员添加借阅者账户顺序图

在图书管理系统中,如果有新的借阅者,则由系统管理员登录后台页面,添加借阅者信息。系统管理员添加借阅者账户的顺序图如图6.25所示。

图6.25  系统管理员添加借阅者账户顺序图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21928.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 安装jenkins

使用docker 容器安装jenkins比较方便,但是细节比较重要,这里实战安装了一遍,可用: 拉取最新的jenkins镜像 docker pull jenkins/jenkins 如果没有翻墙的话,可以会有下面的报错: Error response from dae…

My Metronome for Mac v1.4.2 我的节拍器 支持M、Intel芯片

应用介绍 My Metronome 是一款适用于 macOS 的专业节拍器应用程序,旨在帮助音乐家、作曲家、学生和任何需要精确节奏控制的人进行练习。无论是进行乐器练习、音乐创作还是演出排练,My Metronome 都能为用户提供精准的节拍支持和灵活的功能,确…

第1章大型互联网公司的基础架构——1.12 多机房:主备机房

除了要考虑机房内的各个组件,也要考虑机房自身的高可用问题。使用单机房架构搭建互联网应用后台,虽然接入层、业务服务层、存储层均具备高可用架构,但由于机房是单点,所以还是避免不了机房故障会造成整个应用无法访问的问题。可能…

EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代

在数字化浪潮的席卷下,智能硬件已成为我们日常生活的重要组成部分,从智能家居到智能穿戴,从工业物联网到远程协作,设备间的互联互通已成为不可或缺的趋势。然而,高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…

项目设置内网 IP 访问实现方案

在我们平常的开发工作中,项目开发、测试完成后进行部署上线。比如电商网站、新闻网站、社交网站等,通常对访问不会进行限制。但是像企业内部网站、内部管理系统等,这种系统一般都需要限制访问,比如内网才能访问等。那么一个网站应…

ProfiNet转EtherNet/IP罗克韦尔PLC与监控系统通讯案例

一、案例背景 在新能源产业蓬勃发展的当下,大型光伏电站作为绿色能源的重要输出地,其稳定高效的运行至关重要。某大型光伏电站占地面积广阔,内部设备众多,要保障电站的稳定运行,对站内各类设备进行集中监控与管理必不可…

C++STL——map和set

C教学总目录 map和set 1、set1.1、set简介1.2、set接口简介1.3、set的使用1.4、set其他接口的使用1.5、multiset 2、map2.1、map简介2.2、pair使用2.3、map接口使用2.4、multimap 1、set 1.1、set简介 如图:set是类模板,参数T表示存储的数据类型&#x…

【Research Proposal】基于提示词方法的智能体工具调用研究——研究问题

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯研究问题1. 如何优化提示词方法以提高智能体的工具调用能力?2. 如何解决提示词方法在多模态任务中的挑战?3. 如何通过提示词优化智能体…

PLC数据采集网关(三格电子)

产品概述 PLC转Modbus网关型号SG-PLC-Private(PLC私有协议网关),是三格电子推出的工业级网关(以下简称网关),主要用于在不需要对PLC编程的情况下将PLC数据映射到Modbus TCP(映射的方式符合PLC工程师使用习惯…

【HBase】HBaseJMX 接口监控信息实现钉钉告警

目录 一、JMX 简介 二、JMX监控信息钉钉告警实现 一、JMX 简介 官网:Apache HBase ™ Reference Guide JMX (Java管理扩展)提供了内置的工具,使您能够监视和管理Java VM。要启用远程系统的监视和管理,需要在启动Java…

Qt开发⑥Qt常用控件_下_多元素控件+容器类控件+布局管理器

目录 1. 多元素控件 1.1 ?Widget 和 ?View 之间的区别 1.2 List Widget 纵向列表 1.3 Table Widget 表格 1.4 Tree Widget 树形控件 2. 容器类控件 2.1 Group Box 分组框 2.2 Tab Widget 标签页控件 3. 布局管理器 3.1 垂直布局QVBoxLayout 3.2 水平布局QHBoxLayo…

科普mfc100.dll丢失怎么办?有没有简单的方法修复mfc100.dll文件

当电脑频繁弹窗提示“mfc100.dll丢失”或应用程序突然闪退时,这个看似普通的系统文件已成为影响用户体验的核心痛点。作为微软基础类库(MFC)的核心组件,mfc100.dll直接关联着Visual Studio 2010开发的大量软件运行命脉。从工业设计…

并行计算考前复习整理

并行计算考前复习整理 (lwg老师会在最后一节课跟大家讲考点,考试考的东西不会在考点之外,这里面我整理的内容已经将考点全部囊括,最终100分) 一、向量求和函数 C语言的串行化实现 CUDA的并行化实现 1、问题一&am…

Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式

Windows(奇思妙想) - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式 前言 Windows启用OpenSSH客户端后就可以通过SSH的方式访问Windows了。但是通过SSH启动的程序: 无法显示图形界面会随着SSH进程的结束而结束 于是想到了一种通过执行“计划…

[C#]C# winform部署yolov12目标检测的onnx模型

yolov12官方框架:github.com/sunsmarterjie/yolov12 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.3 【效果展示】 【调用代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.…

51单片机-按键

1、独立按键 1.1、按键介绍 轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。 1.2、独立按键原理 按键在闭合和断开时,触点会存在抖动现象。P2\P3\P1都是准双向IO口,…

Baklib云智协同:数字资产赋能企业效能跃升

内容概要 在数字化转型加速的背景下,Baklib通过构建智能化的知识中台架构,为企业打造了贯穿知识采集、整合、应用的全链路解决方案。该平台以动态知识图谱为核心技术底座,支持文档、音视频、代码等20余种格式的数字资产全生命周期管理&#…

Windows10配置C++版本的Kafka,并进行发布和订阅测试

配置的环境为:Release x64下的环境 完整项目:https://gitee.com/jiajingong/kafka-publisher 1、首先下载相应的库文件(.lib,.dll) 参考链接: GitHub - eStreamSoftware/delphi-kafka GitHub - cloade…

基于云的物联网系统用于实时有害藻华监测:通过MQTT和REST API无缝集成ThingsBoard

论文标题 **英文标题:**Cloud-Based IoT System for Real-Time Harmful Algal Bloom Monitoring: Seamless ThingsBoard Integration via MQTT and REST API **中文标题:**基于云的物联网系统用于实时有害藻华监测:通过MQTT和REST API无缝集…

构建医疗Mini DeepSeek R1:用强化学习训练

构建 医疗迷你 DeepSeek R1:用强化学习训练 在当今快速发展的技术时代,大语言模型(LLMs)与医疗的结合带来了无限的机遇和独特的挑战。本文探索如何利用 Group Relative Policy Optimization(GRPO)——由 D…