开发中使用UML的流程_08 PIM-4:定义操作及方法
目录
1、序列图概述
2、序列图调用方式
3、创建消息与销毁消息
4、几项建议
1、序列图概述
在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之二(另一张是类图)。程序员通常会按照序列图的内容,编写出方法的源代码雏形。
此外,PIM-1的系统用例叙述和PIM-3的类图,对PIM-4的序列图,有不可或缺的贡献。从PIM-1的系统用例叙述中,系统分析员可以分析出系统流程。而在PIM-3的类图中,系统分析员定义出系统内部的静态结构。随后,到了PIM-4的序列图时,则结合了系统用例及静态结构两者
序列图内有数个对象(Object),执行者对象启动系统用例时,对象会遵照箭头方向传送消息(Message)给另一个对象,也因此而引发了接收消息之对象的某一项操作。随后,接收对象在执行操作的期间,可能需要其他对象的协助,所以也传送消息给其他对象,并且引发该接收对象的操作。整个对象之间,传送一连串消息并引发操作的过程,形成一群对象的交互模样
序列图的主要组成元素包括:对象、调用消息(Call Message)、执行规格(Execution Specification)和生命线(LifeLine)
2、序列图调用方式
1)调用消息和对象:
2)除了传送调用消息给其他对象之外,对象也可以传送调用消息给自己,以便引发执行自己的操作,这样的调用消息又称为”自我调用“(Self Call Message)
3)调用消息是一种同步消息(Synchronous Messages),序列图提供另一种”异步消息“(Asynchronous Message)。发送对象在发送异步消息后,不等接受对象执行完毕,就自顾自地往下执行,不等待。同步消息与异步消息的图标差异在于箭头处,前者为带实心箭头的实线,后者为带开放箭头的实线。
3、创建消息与销毁消息
创建消息(Creation Message)的图标是一条带开放箭头的虚线,指向创建的对象,意味着对象是在发出创建消息之际,才刚诞生,在此之前,此对象是不存在的。
销毁消息(Destruction Message)的图标则是在消息箭头端打上大叉叉,而且生命终止与大叉叉处。因为对象在收到销毁消息之后,就被销毁了,不存在了,所以生命线也就终止了。
4、几项建议
在建构PIM-4的序列图时,系统分析员可以参考下列几项建议:
1)主要流程与其他流程分置于不同的序列图中。千万别再一张序列图里表达多条流程,避免造成图面过于复杂,难以阅读。
2)扮演启动者的执行者对象放置于序列图最左方;扮演支持者的执行者对象放置于序列图的最右方。消息方向尽量由左指向右,符合横式书写与阅读的习惯。
3)自有消息可以引发接受对象自身的公开操作或者私有操作,但是,一般消息只能引发公开操作,不能引发私有操作。
4)对象之间优先通过静态关系传递消息,否则可于操作中建立暂时性的关系,以便传递消息
通过上图类之间的关联关系,类所产生之对象之间可以传递消息。请看下图9-8的估算现值,基金账户对象可以传递消息给申购交易对象,而申购交易对象也可以传递消息给基金对象,之间都是通过关联关系所产生的链接来传递消息。图中的大方框成为“循环片段(Loop Fragment),系统分析员可以用它来围住需要执行循环(Loop)的消息。
下图9-9是另外一种估算现值的方法,基金账户对象传递消息给申购交易对象与基金对象。
不过基金账户与基金两个类之间没有关联关系,所以他们所生成的对象之间可于执行操作期间建立暂时性的链接,以便传递信息。在类图中,可以使用带箭头虚线的”依赖“(Dependency),表达基金账户对象将”使用“基金对象。
5)显示消息序号,有助于撰写说明。
6)两个对象之间具有组合关系时,其他对象仅能看到Whole对象,不能直接使用Part对象。
7)传递对象,而非属性,维持对象的封装性。基金对象想申购交易对象查询最新净值。此时申购交易对象并非传回一项”最新净值“的数据参数,而是传回基金对象的地址(out:基金),让申购交易对象自己调用基金对象的操作,取得最新净值的数据。如下图:
8)对象封装了属性,以及操作的方法,仅对外透露公开操作。因此,系统分析员要特别注意,在分析规划对象的方法时,如果需要与其他对象交互,甚至是使用到对象本身的属性或操作时,切记严守下列三项条件:
- 不得直接提及对象的属性
- 也不得假设对象的执行方法
- 仅能够使用对象的操作
相关文章:
开发中使用UML的流程_08 PIM-4:定义操作及方法
目录 1、序列图概述 2、序列图调用方式 3、创建消息与销毁消息 4、几项建议 1、序列图概述 在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计…...
软件设计 —— 检测按键单击、多击、长按或组合动作
目 录 按键单一动作识别按键组合动作识别 按键单一动作识别 带有按键的作品设计时,按键动作检测是必不可少的,如何判断按键是单击、双击、三击和长按动作呢? 1、定时器定时一个10ms周期 2、把按键检测函数放到这个周期内执行,即…...
【GPT】主要影响代谢的因素
代谢的快慢受到多种因素的影响,包括遗传、生活习惯和健康状况等。以下是主要影响代谢的因素: 1. 年龄 影响:年龄增长会导致基础代谢率(BMR)逐渐降低,这是因为随着年龄增加,肌肉量减少ÿ…...
LLM Agents can Autonomously Hack Websites 论文阅读
paper:LLM Agents can Autonomously Hack Websites abstract:近年来,大型语言模型(llm)已经变得越来越有能力,现在可以与工具交互(例如,调用函数),读取文档,并递归地调用自己。因此,这些llm现在可以作为代理自主运行。随着这些代理能力的提高,最近的工作推测了LLM代…...
STM32标准库-FLASH
FLASH模仿EEPROM STM32本身没有自带EEPROM,但是自带了FLASH存储器。 STM32F103ZET6自带 1M字节的FLASH空间,和 128K64K的SRAM空间。 STM32F4 的 SPI 功能很强大,SPI 时钟最高可以到 37.5Mhz,支持 DMA,可以配置为 SPI协…...
【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法
ID3(Iterative Dichotomiser 3)是决策树的一种构造算法,由 Ross Quinlan 在 1986 年提出。它主要用于分类问题,通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征,且不支持连续型数据。 1. 核心思想 划分标…...
nginx配置http及https
nginx配置http及https 1.动静分离2.负载均衡3.配置https4.请求重定向5.常用参数配置介绍 现在日常工作中的项目大多数都是采用前后端分离,就用到了nginx进行反向代理、处理静态资源等;因此,记录整理了nginx一些常用的配置; 1.动静…...
威联通-001 手机相册备份
文章目录 前言1.Qfile Pro2.Qsync Pro总结 前言 威联通有两种数据备份手段:1.Qfile Pro和2.Qsync Pro,实践使用中存在一些区别,针对不同备份环境选择是不同。 1.Qfile Pro 用来备份制定目录内容的。 2.Qsync Pro 主要用来查看和操作文…...
柔性数组详解+代码展示
系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…...
【oracle数据库提示oracle initialization or shutdown in process】
问题如下截图: 解决方案: 1.进入sqlplus,下图中红圈即处理方式 备注:redo03.log是数据库路径“E:\app\Administrator\oradata\MKDB3D\”下最新的归档日志文件 2.alter database open resetlogs 3.netmanager测试登录是否成功&am…...
面试题-RocketMQ的基本架构、支持的消息模式、如何保证消息的可靠传输
相关问题 1、RocketMQ的基本架构是怎样的?请简述各组件的作用。 2、RocketMQ支持哪几种消息模式(如点对点、发布/订阅)?请简要说明它们的区别。 3、如何使用Java客户端实现一个简单的消息生产者和消费者? 4、RocketMQ…...
VUE脚手架练习
脚手架安装的问题: 1.安装node.js,配置环境变量,cmd输入node -v和npm -v可以看到版本号(如果显示不是命令,确认环境变量是否配置成功,记得配置环境变量之后重新打开cmd,再去验证) 2.在安装cnmp时…...
在Scala中栈的认识
package gjhs114import scala.collection.mutableobject fx {队列 // def main(args: Array[String]): Unit { // val q1 mutable.Queue(1) // q1.enqueue(2) // q1.enqueue(3) // q1.enqueue(4) // // println(q1.dequeue())//出队 1 // println(q1.dequ…...
小程序-基于java+SpringBoot+Vue的音乐播放器小程序设计与实现
项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:…...
在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)
人无完人,持之以恒,方能见真我!!! 共同进步!! 文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr的使用和模拟实现五、strtok函数的使用六、strerror和perr…...
oracle to postgresql使用Oracle Golden Gate同步数据
参考 https://www.ktexperts.com/replication-to-gcp-postgresql-using-oracle-goldengate/ https://www.ktexperts.com/how-to-change-remote-trail-file-location-in-oracle-goldengate/...
基于Java Springboot校园导航微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开发…...
【软件安全专题文档】系统安全设计规范,网络与信息系统安全设计规范,信息系统安全架构方案设计规范(Word原件)
1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件项目全周期文档清单部分文件概览&a…...
【青牛科技】SCU2N60E/SCD2N60E N沟道增强型功率场效应晶体管采用Silicore先进的VDMOS技术生产
描述: 这些N沟道增强型功率场效应晶体管采用Silicore先进的VDMOS技术生产,为设计人员提供了卓越的开关性能、坚固的器件设计、低导通电阻和成本效益。 特点: 在VGS10V时,600V,2.0A,Rdson4.5Ω(…...
常见限流算法介绍 和 Spring Cloud Sentinel使用方式
sentinel 限流及熔断 为什么要限流呢?对于一些突发流量,如双11大促,甚至恶意攻击,这时系统的访问量远远超出系统的承受能力,如果不做任何保护措施, 服务器资源会耗尽,进而系统不可用。 限流就…...
工业齐套管理虚拟现实仿真模拟软件
工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件,借助身临其境的虚拟现实环境,无需停止生产线,即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业,安全…...
HarmonyOS(60)性能优化之状态管理最佳实践
状态管理最佳实践 1、避免在循环中访问状态变量1.1 反例1.2 正例 2、避免不必要的状态变量的使用3、建议使用临时变量替换状态变量3.1 反例3.2 正例 4、参考资料 1、避免在循环中访问状态变量 在应用开发中,应避免在循环逻辑中频繁读取状态变量,而是应该…...
Qt5语法的connect指定多个重载信号槽函数中的具体某一个
Qt5新语法的connect函数,使用起来更加简洁明了,但如果信号槽有同名的多个重载函数,只用类名和函数名就无法绑定,这时,可以使用qOverload来指定参数类型,例如: connect(ui->comboBox, qOverlo…...
Mysql远程工具Navicat Premium连接报错1130、2003解决方案
这里写自定义目录标题 1130报错:2003报错: 1130报错: 原因: 连接异常 1130,没有远程登录权限。 解决方案ÿ…...
ShardingSphere介绍
1. ShardingSphere简单介绍 ShardingSphere是一款目前业内比较流行的分库分表框架,到现在为止有接近十年的开发历程了,其 已经不仅仅只是⽤来做分库分表,⽽是形成了⼀个围绕 分库分表核⼼的技术⽣态。他的核⼼功能已经包括了数据分⽚、分布式…...
操作系统 | 学习笔记 | 王道 | 2.2处理机调度
2.2 处理机调度 文章目录 2.2 处理机调度2.2.1 调度的概念2.2.2 调度的目标2.2.3 调度的实现2.2.4 典型的调度算法错题总结: 2.2.1 调度的概念 调度的基本概念 处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效的原则&…...
我们项目要升级到flutter架构的几点原因
一、探索 Flutter打造卓越移动应用的新时代框架 在移动应用开发的世界里,Flutter已经成为了一个炙手可热的话题。诞生于Google的怀抱,Flutter以其独特的优势和理念,正在引领一场全球范围内的应用开发 ** 。本文将深入探讨Flutter项目的特点、…...
Solidity开发智能合约
05-Solidity开发智能合约 0 Solidity和智能合约 Solidity开发可运行的智能合约步骤: 源代码通过编译成字节码(Bytecode),同时会产生二进制接口规范(ABI) 通过交易将字节码部署到以太坊网络,部署…...
bind实验
服务端 查看域名 [rootclient yum.repos.d]# hostname client 设置域名 [rootclient yum.repos.d]# hostnamectl set-hostname dns1.openlab.edu [rootclient yum.repos.d]# cd [rootclient ~]# hostname dns1.openlab.edu 安装bind包 [rootclient ~]# yum install bind -y…...
ARM架构下安装新版docker及docker-compose
一、常见CPU 架构: 二、环境信息 CPU架构操作系统配置HUAWEI Kunpeng 920 5220 aarch64openEuler 22.03 (LTS-SP3)64C128g15T 三、安装docker 3.1 二进制包下载 docker-ce 社区下载地址: wget https://mirrors.nju.edu.cn/docker-ce/linux/static/s…...
自锁/非自锁开关原理笔记
前言:编写不易,请勿搬运,感谢理解,仅供学习。 开关介绍 6指针开关,这种开关分为自锁和非自锁开关,自锁开关有两种状态,按下和松开的状态,非自锁开关在按下过后,按键会复…...
基于SpringBoot+Vue的论坛网站-无偿分享 (附源码+LW+调试)
目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 (1)问题反…...
基于SSM的博客系统+LW参考示例
1项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理,博文分类管理,博文信息管理,话题分类管理,热议话题管理,私信管理,敏感词管理,系统管理等&am…...
[241129] Docker Desktop 4.36 发布:企业级管理功能、WSL 2 增强 | Smile v4.0.0 发布
目录 Docker Desktop 4.36 发布:企业级管理功能、WSL 2 和 ECI 增强Smile v4.0.0 发布!Java 机器学习库迎来重大升级 Docker Desktop 4.36 发布:企业级管理功能、WSL 2 和 ECI 增强 Docker Desktop 4.36 带来了强大的更新,简化了…...
webpack5开发环境、生产环境配置 (三)
开发环境:就是我们开发代码时使用的模式。 这个模式我们做两件事情: 1、编译代码,使浏览器能识别运行 2、代码质量检查,树立代码规范 生产环境:开发完成代码后,我们需要得到代码将来部署上线。 这个模式…...
一次Kafka启动失败引出的问题
背景 Some time,有个现场童鞋说咱的Kafka实例有个broker一直crash,还截图给我看了,大致是Kafka启动加载topic分区日志文件的时候,然后就没了,连个WARN都没有。当然,光看这个截图咱啥都不知道,因…...
[Linux] 进程间通信——匿名管道命名管道
标题:[Linux] 进程间通信——匿名管道&&命名管道 水墨不写bug (图片来源于网络) 目录 一、进程间通信 二、进程间通信的方案——匿名管道 (1)匿名管道的原理 (2)使用匿名管道 三、进…...
人机交互中的状态交互、趋势交互
在人机交互中, 状态交互 和 趋势交互 是两种重要的交互方式,它们分别涉及到用户与系统之间不同的交互模型和机制。 1. 状态交互 状态交互主要聚焦于用户与系统之间的状态转换及其反馈机制。在这种交互模式下,系统会根据用户的输入或行为发生状…...
基于Java Springboot房屋租赁App且微信小程序
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…...
golang的wails框架在macos下的问题
1、前言 之前练手写了格调用ollama api的web应用,想找个容器打包下,于是找到wails来打包,windows下都是很正常的,因为就是普通的http调用,也没遇到cors跨域问题,但是到了macos下使用wails dev命令启动的客户…...
编程设计模式助记顺口溜
1、顺口溜 创建型,工厂多,单例建对象,抽象工厂做。建造者分步做,原型克隆最不愁。 结构型,适配器,桥接组合都不错,装饰外观飞享元,代理再添一把火。 行为型,责任链&…...
java网络通信(三):TCP通信、实现客户端-服务端消息通信
目录 1、什么是 TCP协议? 2、代码实现TCP协议的一发一收 2.1、客户端 2.2、服务端 2.3 结果演示 3、代码实现TCP协议的多发多收 3.1 客户端 3.2 服务端 3.3 结果演示 简介:本文章主要是演示如何用java代码以及TCP协议实现网络通信,实…...
mybatis-plus 对于属性为null字段不更新
MyBatis-Plus 默认情况下会根据字段的值是否为 null 来决定是否生成对应的 UPDATE 语句。这是由 更新策略 决定的,默认的行为是 忽略 null 值,即如果字段值为 null,该字段将不会出现在 UPDATE 语句中。 默认行为分析 MyBatis-Plus 默认的 Fi…...
GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记
1 Overall GAGAvatar(Generalizable and Animatable Gaussian Avatar),一种面向单张图片驱动的可动画化头部头像重建的方法,解决了现有方法在渲染效率和泛化能力上的局限。 旋转参数 现有方法的局限性: 基于NeRF的方…...
《数据挖掘:概念、模型、方法与算法(第三版)》
嘿,数据挖掘的小伙伴们!今天我要给你们介绍一本超级实用的书——《数据挖掘:概念、模型、方法与算法》第三版。这本书是数据挖掘领域的经典之作,由该领域的知名专家编写,系统性地介绍了在高维数据空间中分析和提取大量…...
springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
前言 完整版演示 http://120.26.95.195/ 开发版演示 http://120.26.95.195:8889/ 在之前的开发进程中,我们完成订单的挂单和取单功能,今天我们完成购物车关联服务人员,用户计算门店服务人员的提成。 1.商品关联服务人员 服务人员可以选择 一…...
lua闭包Upvalue
闭包 lua任何函数都是闭包,闭包至少带1个upValue; CClosure是使用Lua提供的lua_pushcclosure这个C-Api加入到虚拟栈中的C函数,它是对LClosure的一种C模拟 如string.gmatch就是cclosure 定义: #define ClosureHeader \CommonH…...
下载maven 3.6.3并校验文件做md5或SHA512校验
一、下载Apache Maven 3.6.3 Apache Maven 3.6.3 官方下载链接: 二进制压缩包(推荐): ZIP格式: https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zipTAR.GZ格式: https://archive.apache.org/dist/…...
深入探索Flax:一个用于构建神经网络的灵活和高效库
深入探索Flax:一个用于构建神经网络的灵活和高效库 在深度学习领域,TensorFlow 和 PyTorch 作为主流的框架,已被广泛使用。不过,Flax 作为一个较新的库,近年来得到了越来越多的关注。Flax 是一个由Google Research团队…...
vue项目中单独文件的js不存在this.$store?.state怎么办
在Vue项目中,如果你在单独的文件(比如插件、工具函数等)中遇到this.$store不存在的情况,这通常是因为this上下文不指向Vue实例,或者Vuex store没有被正确地注入到Vue实例中。以下是几种可能的解决方案: 确保…...