开发中使用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)对象封装了属性,以及操作的方法,仅对外透露公开操作。因此,系统分析员要特别注意,在分析规划对象的方法时,如果需要与其他对象交互,甚至是使用到对象本身的属性或操作时,切记严守下列三项条件:

  •   不得直接提及对象的属性
  •   也不得假设对象的执行方法
  •   仅能够使用对象的操作

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

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

相关文章

关于线扫相机的使用和注意事项

引言 线扫相机作为工业视觉系统中的核心设备之一,以其高分辨率和高速成像的特点被广泛应用于印刷质量检测、电子元件检测、纺织品缺陷检测等领域。本文从线扫相机的基本原理出发,探讨其使用方法,并总结在实际应用中的注意事项,为…

UE5 像素流进行内网https证书创建

确定证书需求 内网 HTTPS 通信通常需要以下内容: 自签名证书(适用于内网环境,不需要通过公开的证书颁发机构 CA) 或者通过内部的企业 CA 签发的证书(更安全)。 生成自签名证书 使用工具(如 Ope…

QNX的IPC通信

资料参考: QNX官网文档 QNX内核名义上提供了四种服务:进程调度、IPC通信、底层网络通信、中断处理,而提供给进程的IPC通信种类有三种:Message、Pulse和Signal Message QNX最基本也是最核心的IPC方式,通常用于C/S架构的软件模式,是一对多的关系 添加图片注释,不超过 …

Python酷库之旅-第三方库Pandas(259)

目录 一、用法精讲 1226、pandas.tseries.offsets.Week.name属性 1226-1、语法 1226-2、参数 1226-3、功能 1226-4、返回值 1226-5、说明 1226-6、用法 1226-6-1、数据准备 1226-6-2、代码示例 1226-6-3、结果输出 1227、pandas.tseries.offsets.Week.rule_code属性…

springboot/ssm国风彩妆网站Java代码web项目化妆品购物商城系统

springboot/ssm国风彩妆网站Java代码web项目化妆品购物商城系统 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&#xff1a…

Java语言使用Proxy类进行更灵活的代理ip设置(Java1.5 及以上)

使用Proxy类来设置代理可以更加灵活,。以下是一个示例: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL;import java.net.…

Kubernetes架构原则和对象设计

云原生学习路线导航页(持续更新中) 快捷链接 Kubernetes常见问题解答 本文从 Google Borg系统的架构设计开始,深入讲解Kubernetes架构及组件的基本原理 1.什么是云计算 1.1.传统行业应用 假设有10台服务器,两个应用。小规模管…

组件中的回调方法

文章目录 1. 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Flutter中如何使用三方包相关的内容,本章回中将介绍Widget的生命周期.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 本章回中介绍的生命周期是指Widget从创建到结果的整个过程,这里提到的Widget是一个…

【LINUX】Linux 下打包与部署 Java 程序的全流程指南

文章目录 一、Java 程序打包1. 使用 Maven 打包2. 使用 Gradle 打包 二、运行 JAR 文件1. 前台运行2. 后台运行方法 1:使用 & 符号方法 2:使用 nohup 三、关闭运行中的程序1. 查找程序 PID2. 关闭程序 四、使用 Shell 脚本管理程序1. 创建 Shell 脚本…

【人工智能数学基础篇】线性代数基础学习:深入解读矩阵及其运算

矩阵及其运算:人工智能入门数学基础的深入解读 引言 线性代数是人工智能(AI)和机器学习的数学基础,而矩阵作为其核心概念之一,承担着数据表示、变换和运算的重任。矩阵不仅在数据科学中广泛应用,更是神经网…

工程企业劳务管理软件有哪些内容?

工程劳务管理软件是专门用于管理和优化工程项目中劳务队伍的工具,其核心内容通常围绕劳务人员的招募、考勤、工资结算、安全培训、工时管理以及合规性管理展开。以下是工程劳务管理软件常见的内容模块: 1. 人员信息管理 内容: 劳务人员的基…

管理服务器遇到的一些问题(开机进入Grub、版本升级、扩容等)

2024 年 12 月 3 日,服务器由于误操作被删了一些数据,重新整理服务器的时候遇到了一些问题,记录下来。 工作内容 卸载系统 需求 在双 Linux 系统下卸载其中一个。将其分配的磁盘删除并格式化。 解决方法 安装 gparted 进行可视化操作。…

w~深度学习~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12663254 #Motion Plan 代码 github.com/liangwq/robot_motion_planing 轨迹约束中的软硬约束 前面的几篇文章已经介绍了,轨迹约束的本质就是在做带约束的轨迹拟合。输入就是waypoint点list,约束…

docker容器简单使用

docker-compose 链接: https://pan.baidu.com/s/17uy4v3QPoxN2YzSb-WuDkw?pwdgzyv 提取码: gzyv --来自百度网盘超级会员v1的分享 chmod -x /usr/local/bin/compose-docker //给文件执行权限 docker -up d //启动目录下的容器 docker ps…

MR30分布式IO模块赋能喷水织机

纺织行业作为我国传统支柱产业,历经数千年的演变,如今仍面临着诸多困境,在纺织行业中,每一次技术的飞跃都是对行业边界的勇敢探索。在纺织行业,喷水织机作为关键生产设备,其性能直接影响到产品质量和产能。…

【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分

目录 1. 硬件选型1.1 esp32硬件型号1.2 TMC2209 硬件型号 2 原理接线图2.1 esp32接线2.2 TMC2209接线2.2.1 单向通讯 不配置地址2.2.2 单向通讯 配置地址2.2.3 双向通讯 单UART 【本文采用】2.2.4 双向通讯 多UART 3. 成品效果 1. 硬件选型 1.1 esp32硬件型号 采用的是微雪ES…

组件中的生命周期

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Flutter中如何使用三方包相关的内容,本章回中将介绍Widget的生命周期.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 本章回中介绍的生命周期是指Widget从创建到结果的整个过程,这里提到的Widget是一个泛…

MongoDB的简单使用

MongoDB(文档数据库)的简单使用 MongoDB最好的学习资料就是他的官方文档:SQL 到 MongoDB 的映射图表 - MongoDB 手册 v8.0 1.SQL到MongoDB的映射表 下表列出各种SQL术语和概念以及相应的MongoDB术语和概念 传统关系型数据库中SQL术语/概念NoSQL型MongoDB数据库术…

【英一】1998年

阅读1 suffering. 苦难at the mercy of. 完全受...的支配do ones bidding. 服从某人threaten to. 可能...(发生不好的事情)do more harm than good. 弊大于利strive to. 争取,努力assert. 主张cement. 巩固bid for. (尤指许下诺言)企图获得&…

Zookeeper集群数据是如何同步的?

大家好,我是锋哥。今天分享关于【Zookeeper集群数据是如何同步的?】面试题。希望对大家有帮助; Zookeeper集群数据是如何同步的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper集群中的数据同步是通过一种称为ZAB(Zo…