UML之序列图的消息

序列图表现各参与者之间为完成某个行为而发生的交互及其时间顺序,序列图中的交互通过消息实现。消息是从一条生命线到另一条生命线的通信,它们通常是水平或倾斜向下的箭头,从发送方生命线离开,到达接收方生命线。如果需要,在这些消息中可以传递参数值,但要注意确保参数类型与参数值与接收生命线角色所定义的操作相匹配。

  • 同步消息及其返回消息

带有实心箭头的实线表示同步消息。发送方生命线向接收方生命线发送同步消息,然后发送方等待返回。同步消息的返回消息使用带有V形箭头的虚线表示,它由接收方生命线指向发送方生命线。

通常同步消息通过发送方调用接收方的操作来实现。图 1展示了同步消息的发送及返回过程。

图 1 同步消息

发送方向接收方发送同步消息后需要等待返回结果,但这并不意味着发送方必然被阻止发送或接收其他消息,UML序列图允许非阻塞的同步行为。建模者务必明白,序列图中的参与者不是实例而是角色,因而发送方可能有多个部分或包含线程,而当前等待可能只是阻塞其中的一个。

如果发送的同步消息已经可以明确其返回消息的信息,或者在当前所表达的行为中不需要特意表达返回消息时,在序列图中可以省略返回消息的描画。

如果建模的是一个概念性的序列图,那么同步消息仅仅意味着发送者确保接收者收到了消息。否则,它表示发送者正在调用接收者的一个操作,并且发送者将等待响应。消息名称放置在箭头上方,并遵循接收者定义的操作语法。被调用的操作必须是接收者“操作”的成员,或者是从接收者的超类中继承而来的。操作的参数可以根据场景给出适当的值。

  • 异步消息

带有V形箭头的实现表示异步消息。发送异步消息时,发送方不会等待回复。而接收方必须是一个活动类,异步消息可以是硬件或软件中断。大多数基于Web的交互都是从浏览器到服务器的异步消息,随后是另一个方向的异步消息。

异步消息可以是异步方式调用的操作(许多编程语言提供了异步操作定义机制),也可以是发送的信号。由于无法回复,异步消息不可以有返回值或输出参数。图 2展示一个唤醒信号(Wakeup),信号只能有输入参数,可以将这些参数列在信号的独立分隔栏中。在图 2中,唤醒信号的参数是message:String。信号也可以在状态图和活动图中展示。

图 2 信号

图 3则展示了一个系统类。它是一个活动类(可选地通过双竖线边框表示)。在其单独分隔的“接收(RECEPTIONS)”栏中,展示该类可以接收的信号,形式上它类似操作的格式。在图 3中展示了唤醒(Wakeup)信号。

图 3 活动类

在序列图中使用信号的示例如图 4所示,生命线Lifeline1向System发送了一条异步消息,该消息为上述所定义的信号Wakeup。异步消息必须是接收者“接收”的成员,或者从接收者的超类中继承而来。

图 4 发送信号

如果建模的是一个概念性的序列图,那么异步消息仅仅意味着发送者不等待响应。

此外,接收者类必须是一个活动类,尽管一些建模者在建模时并不会特意将接收者使用表示“活动”的表示符号(即双竖线边框)。

  • 自消息

自消息表示来自参与者自身的消息,可能是发送给其独立的内部部分或线程。自消息从一条生命线上发出并到达同一生命线。自消息可以是同步或异步的,建模时可以像同步消息或异步消息那样通过箭头类型进行区分。对于同步的自消息还可能存在类似同步消息的虚线返回箭头。

图 5所示的序列图在Lifeline1上展示了同步自消息,在Lifeline2上展示了异步自消息。

图 5 自消息

UML – 光头颜说IThttps://gtyan.com/archives/category/uml

UML之序列图的参与者与生命线-CSDN博客

UML之扩展用例_将这两个用例扩展语议,扩展为“用例实现”-CSDN博客

UML之包含用例_一个包含第三方调用的用例图-CSDN博客

UML之泛化用例_用例图泛化-CSDN博客

UML之参与者(Actor)_uml actor-CSDN博客

UML之发现用例-CSDN博客

UML之泛化、特化和继承_uml中泛化-CSDN博客

UML之组合与聚合_uml聚合和组合-CSDN博客

UML之关联_uml 关联 包含 连线-CSDN博客

UML之集合类型-CSDN博客

UML之属性与参数的多重性_类图多重性-CSDN博客

UML之模型、包及包的版型(构造型)_包体系结构-CSDN博客

UML之包的导入与访问_uml的包使用-CSDN博客

UML之类型_在uml中,日期属于什么类型-CSDN博客

UML之修饰符_图框架标题类型之谬-CSDN博客

UML之类与类图-CSDN博客

UML之图框架标题类型之谬_框架标题是什么-CSDN博客

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

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

相关文章

UniAD:自动驾驶的统一架构 - 创新与挑战并存

引言 自动驾驶技术正经历一场架构革命。传统上,自动驾驶系统采用模块化设计,将感知、预测和规划分离为独立组件。而上海人工智能实验室的OpenDriveLab团队提出的UniAD(Unified Autonomous Driving)则尝试将这些任务整合到一个统一…

如何写好合同管理系统需求分析

引言 在当今企业数字化转型的浪潮中,合同管理系统作为企业法律合规和商业运营的重要支撑工具,其需求分析的准确性和完整性直接关系到系统建设的成败。本文基于Volere需求过程方法论,结合江铃汽车集团合同管理系统需求规格说明书实践案例&…

libevent服务器附带qt界面开发(附带源码)

本章是入门章节,讲解如何实现一个附带界面的服务器,后续会完善与优化 使用qt编译libevent源码演示视频qt的一些知识 1.主要功能有登录界面 2.基于libevent实现的服务器的业务功能 使用qt编译libevent 下载这个,其他版本也可以 主要是github上…

八、自动化函数

1.元素的定位 web自动化测试的操作核心是能够找到页面对应的元素,然后才能对元素进行具体的操作。 常见的元素定位方式非常多,如id,classname,tagname,xpath,cssSelector 常用的主要由cssSelector和xpath 1.1 cssSelector选择器 选择器的功能&#x…

Web三漏洞学习(其二:sql注入)

靶场:NSSCTF 、云曦历年考核题 二、sql注入 NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过,但为了学习sql,整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判…

单片机非耦合业务逻辑框架

在小型单片机项目开发初期,由于业务逻辑相对简单,我们往往较少关注程序架构层面的设计。 然而随着项目经验的积累,开发者会逐渐意识到模块间的耦合问题:当功能迭代时,一处修改可能引发连锁反应。 此时,构…

Zookeeper三台服务器三节点集群部署(docker-compose方式)

1. 准备工作 - 服务器:3 台服务器,IP 地址分别为 `10.10.10.11`、`10.10.10.12`、`10.10.10.13`。 - 安装 Docker:确保每台服务器已安装 Docker 和 Docker Compose。 - 网络通信:确保三台服务器之间可以通过 IP 地址互相访问,并开放以下端口: - `2181`:Zookeeper 客户…

Mac关闭sip方法

Mac关闭sip方法 导航 文章目录 Mac关闭sip方法导航完整操作流程图详细步骤 完整操作流程图 这东西是我在网上搬运下来的,但是我在为业务实操过程中,根据实操情况还是有新的注意点的 详细步骤 1.在「关于本机」-「系统报告」-「软件」;查看SIP是否开启…

C++| 深入剖析std::list底层实现:链表结构与内存管理机制

引言 std::list的底层实现基于双向链表,其设计哲学与std::vector截然不同。本文将深入探讨其节点结构、内存分配策略及迭代器实现原理,揭示链表的性能优势和潜在代价。 1. 底层数据结构:双向链表 每个std::list节点包含: 数据域…

汉诺塔问题——用贪心算法解决

目录 一:起源 二:问题描述 三:规律 三:解决方案 递归算法 四:代码实现 复杂度分析 一:起源 汉诺塔(Tower of Hanoi)问题起源于一个印度的古老传说。在世界中心贝拿勒斯&#…

【Python】Python 100题 分类入门练习题 - 新手友好

Python 100题 分类入门练习题 - 新手友好篇 - 整合篇 一、数学问题题目1:组合数字题目2:利润计算题目3:完全平方数题目4:日期天数计算题目11:兔子繁殖问题题目18:数列求和题目19:完数判断题目21…

【linux】--- 进程概念

进程概念 1.认识冯诺依曼结构2. 操作系统(Operator system)2.1 概念2.2 设计OS的目的2.3 理解操作系统2.4 如何理解管理2.5 理解系统调用和库函数 3. 进程3.1 基本概念和基本操作3.1.1 描述进程 - PCB3.1.2 task_struct3.1.3 查看进程 3.2 进程状态3.2.1 运行&&…

算法堆排序记录

【算法】排序算法之堆排序 - 知乎 应用场景:获取第n个大或者小的数 操作步骤: 1、将数组构造成堆 2、调整根节点为最大堆 ->倒序对每个根节点执行最大化 ->根节点最大化过程中如果发生交换,需要保证子节点也为最大堆(执行…

STM32 模块化开发实战指南:系列介绍

本文是《STM32 模块化开发实战指南》系列的导读篇,旨在介绍整个系列的写作目的、适用读者、技术路径和每一篇的主题规划。适合从事 STM32、裸机或 RTOS 嵌入式开发的个人开发者、初创工程师或企业项目团队。 为什么要写这个系列? 在嵌入式开发中,很多人刚开始都是从点亮一个…

【眼底辅助诊断开放平台】项目笔记

这是一个标题 任务一前端页面开发:后端接口配置: 任务二自行部署接入服务 日志修改样式和解析MD文档接入服务 Note前端登陆不进去/更改后端api接口304 Not Modifiedlogin.cache.jsonERR_CONNECTION_TIMED_OUT跨域一般提交格式proxy.ts src/coponents 目录…

【后端开发】Spring MVC-计算器、用户登录、留言板

文章目录 前后端分离设计接口设计思路项目问题解决思路 计算器需求分析接口定义前端页面代码服务器代码 用户登录需求分析接口定义用户登录校验接口查询登录用户接口 前端页面代码用户登录校验查询登录用户 服务器代码前后端交互 留言版需求分析接口定义获取全部留言发布留言前…

在Ubuntu-22.04.5中安装ONLYOFFICE DocSpace(协作空间)【注意:安装失败,谨慎参考!】

1. 通过Docker安装 预计需要下载10G的镜像。 (1)下载docspace安装脚本 curl -fsSL https://download.onlyoffice.com/docspace/docspace-install.sh -o docspace-install.sh (2)修改docker compose的别名为docker-compose ali…

2025年计算机领域重大技术突破与行业动态综述

——前沿技术重塑未来,开发者如何把握机遇? 2025年第一季度,全球计算机领域迎来多项里程碑式进展,从量子计算到人工智能,从芯片设计到网络安全,技术革新与产业融合持续加速。本文梳理近三个月内最具影响力…

一、LLM 大语言模型初窥:起源、概念与核心原理

一、初识大模型 1.1 人工智能演进与大模型兴起:从A11.0到A12.0的变迁 AI 1.0时代(2012-2022年) 感知智能的突破:以卷积神经网络(CNN)为核心,AI在图像识别、语音处理等感知任务中超越人类水平。例如&#…

Redis 分布式锁+秒杀异步优化

文章目录 问题思路setnx实现锁误删问题和解决方案Redis Lua脚本问题引出解决方案 setnx实现的问题Redission快速入门redission可重入锁原理 秒杀优化(异步优化)异步秒杀思路秒杀资格判断Redis消息队列 问题 比如我们两个机器都部署了我们项目,这里nginx使用轮询的方…