首页 > 其他分享 >开发中使用UML的流程_08 PIM-4:定义操作及方法

开发中使用UML的流程_08 PIM-4:定义操作及方法

时间:2024-12-04 20:57:41浏览次数:9  
标签:调用 PIM 对象 08 序列图 消息 操作 UML

目录

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

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

标签:调用,PIM,对象,08,序列图,消息,操作,UML
From: https://blog.csdn.net/soarfeng/article/details/144223581

相关文章

  • 28 基于51单片机的两路电压检测(ADC0808)
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,通过ADC0808获取两路电压,通过LCD1602显示二、硬件资源基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。编辑三、程序编程#include <REGX52.H>#include "int......
  • [1080] Remove duplicated records based on a specific column in GeoPandas
    ToremoveduplicatedrecordsbasedonaspecificcolumninGeoPandas,youcanusethedrop_duplicatesmethod.Here'showyoucandoit:ExampleScriptimportgeopandasasgpdfromshapely.geometryimportPoint#SampleGeoDataFramedata={......
  • [1081] The syntax and usage for the drop_duplicates and duplicated functions in
    Certainly!Here'sthesyntaxandusageforthedrop_duplicatesandduplicatedfunctionsinaGeoDataFrameinGeoPandas.drop_duplicatesFunctionThedrop_duplicatesmethodremovesduplicaterowsbasedononeormorecolumns.Syntax:GeoDataFrame.drop......
  • 208. 开关问题
    //208.开关问题.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://www.acwing.com/problem/content/210/有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相......
  • springboot网络教学管理系统-计算机毕业设计源码40879
    目 录摘要1绪论1.1选题背景与意义1.2开发现状1.3论文结构与章节安排2 开发环境及相关技术介绍2.1MySQL数据库2.2 Tomcat服务器2.3 Java语言2.4 SpringBoot框架介绍3 网络教学管理系统系统分析3.1可行性分析3.1.1技术可行性分析3.1.2 ......
  • node.js论坛系统-计算机毕业设计源码41083
    摘 要本文设计并实现了一个基于微信小程序云开发的论坛系统。通过借助微信小程序的云开发能力,我们构建了一个功能完善的论坛平台,用户可以在该平台上进行帖子发布、评论、点赞等操作。首先,我们使用微信小程序提供的云开发能力搭建后端服务。云开发可以方便地实现数据存储、......
  • 08 数据类型
    数据类型的作用:区分不同的数据,不同的数据的类型应该有不同的操作数字:+-*/数字分为:整数(int),小数(float)文字:展示字符串:(str)重要程度5颗星表示:可以使用单引号或者双引号"我是谁"'我是谁'"""我是谁"""操作:+(左右两端必须是字符串,表示字符串连接操作)-*(一个字符......
  • 2024-2025-1 20241308 《计算机基础与程序设计》第十周学习总结
    班级链接https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10作业目标信息系统数据库与SQL人工智能与专家系统人工神经网络模拟与离散事件排队系统天气与地震模型图形图像教材学习内容......
  • 108. 将有序数组转换为二叉搜索树
    问题描述给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵平衡二叉搜索树。分析二叉查找树BinarySearchTree,又叫:二叉搜索树,二叉排序树,其中序遍历是升序的,因此本题等同于根据中序遍历的序列恢复二叉搜索树与二分有区别,二分是不断查找答案所在区域的中间值......
  • 请分析020-088=?的过程及结果
    Theexpression020-088inafront-enddevelopmentcontext(JavaScript,specifically)leadstosomeinterestingbehaviorduetohowJavaScriptinterpretsnumberswithleadingzeros.020isinterpretedasoctal(base-8).Theleadingzerosignifiesano......