【UML用户指南】-17-对基本行为建模-交互

目录

1、消息的可视化表示

2、对象与角色

3、链和连接件

4、消息

5、序列

6、创建、修改和撤销

7、表示法

8、常用建模技术

8.1、对控制流建模

8.1.1、基于时间的控制流

8.1.2、基于结构的控制流


在任何有意义的系统中,对象都不是孤立存在的,它们相互之间通过传递消息进行交互。

交互是一种行为,这种行为由语境中的一组对象为达到某一目的而交换的一组消息构成。

这些角色表示类、接口、构件、结点和用况的原型实例。

可以用两种方式来对一个交互建模:

一种方式着眼于消息是如何按照时间顺序调度的;

另一种方式则着眼于交互中对象间的结构关系,并考虑消息是如何在这个结构的语境中被传递的。

交互图分为

1、顺序图:强调消息的时间顺序

2、通信图/协作图:侧重于发送和接收消息的对象之间的组织结构

1、消息的可视化表示

UML提供了对消息的图形化表示,如图所示。这种可视化的消息表示法强调了消息的最

重要的部分:名称、参数(若有的话)和顺序。在图形上,把消息表示为一条有向直线,

并且通常还包含相应的操作名。

85baadaf34db4c4abb6f834838e7d98f.png

2、对象与角色

参与交互的对象既可以是具体的事物,又可以是原型化的事物。作为具体的事物,一个对

象代表现实世界中的某个东西,例如,p作为类Person的一个实例,代表一个特定的人;而

作为原型化的事物,p可以代表类Person的任何实例【角色】。

可以把对象图看作是对交互的静态方面的表示,它通过说明所有一起工作的对象来设置交

互的场所。交互则通过引入可以沿着连接这些对象的链传递的消息的动态序列来进一步展

示交互。

对象图 + 消息传递 = 交互图

3、链和连接件

链是对象之间的语义连接。一般来说,链是关联的实例。如下图所示,在一个类与另一

个类之间有关联的情况下,这两个类的实例之间就可能有链;在两个对象之间有链存在的

情况下,一个对象就能向另一个对象发送消息。

e359ba09ffbd4b4dba30370066282f45.png

1)图的顶部是一个类图,其中声明了类Person和Company以及这两个类之间的多对多关联 employee-employer。

2)图的中部展示了协作 WorkAssignment的内容:

为某个员工分配某个工作。这个协作包括两个角色以及二者之间的一个连接件。

3)图的底部是该协作的一个实例,其中有分别绑定到角色和连接件的对象和链。底部的一个具体消息表示在该协作中的原型消息的声明。
 

链指明了一个对象向另一个对象(或自身)发送消息的路径。多数时候,指明存在着这样

一个路径就足够了。如果需要更精细地表示路径是如何存在的,可以用下面任意一种约束

来修饰链的有关端点。

 关联(association)  

说明对应的对象对关联是可见的。

 自身(self)     

说明对应的对象因为是本操作的调遣者,所以是可见的。

 全局(global)    

说明对应的对象在全局范围内可见。

 局部(local)     说明对应的对象在局部范围内可见。

 参数(parameter)   说明对应的对象因为是一个参数,所以是可见的。

4、消息

在传送一个消息时,对消息的接收通常会产生一个动作。这个动作可能引发目标对象以及

该对象可以访问的其他对象的状态改变。

动作分类:

  • 调用(call)调用某个对象的一个操作。对象也可以给自己发送消息,引起本地的操作调用。【实心箭头】过程控制
  • 返回(return)给调用者返回一个值。【虚线箭头】
  • 发送(send)向对象发送一个信号。【普通箭头】 单调异步
  • 创建(create)创建一个对象
  • 撤销(destroy)撤销一个对象。对象也可以撤销自身。

ef43497eb51e4cab88a1bc5e1dad4a1c.png

创建和撤销是用衍型显示的

5、序列

当一个对象向另一个对象发送消息(实际上是将某个动作委派给了消息的接收者)时,接

收对象可能接着会向另一个对象发送消息,这个对象又可能发送消息给下一个不同的对象

,如此一直传下去。这个消息流形成了一个序列。任何序列都有开始,每个消息序列都是

从某个进程或线程开始的。而且只要进程或线程还在活动,消息序列也就会继续。一个不

间断的系统(如实时的设备控制),只要它在其上运行的结点没关闭,它就会一直执行。

系统中的每个进程和线程都定义了一个清晰的控制流。

在每一个流中,消息是按时间顺序排列的。为了在图形上更好地可视化一个消息的序列,可以显式地对消息在序列开始后的次序建模,

每个消息的前面加上一个用冒号隔开的序号作为前缀。

通信图展示一个协作中角色之间的消息流。如下图所示,消息沿着协作中的连接流动。

通常可以用带填充箭头的实线来表示过程式的或嵌套的控制流,

其中消息findAt的序号为2.1,表示它是嵌套在第2个消息里的第1个消息。

1)过程式序列:【调用方式】
 

4e7cfdc9acc04b458a4507aaf4c459cb.png

可以用枝杈形箭头表示的单调控制流来描述非过程式控制的每一步。

在下图中,消息assertCall的序号为2,表明它是序列中第二个消息。

2)单调序列:【发送方式】


3cc601c4256b4c9b8308b39c653f0289.png

1)对包含多重控制流的交互建模时,指明发送某一特定消息的进程或线程是很重要的。在UML

中,可以把位于该序列根部的进程或线程的名称加到消息的序号之前,以此区分不同的控

制流。例如,表达式:

D5 : ejectHach(3)

表明作为序列中第五个消息的操作ejectHatch(具有实参3)以进程或线程D为根。

2)下面的表达式所示,具有实参“Rachelle”的操作find的返回值是p。这是一个嵌套的

序列,表明第二个消息嵌套于第三个消息中,而第三个消息又嵌套于第一个消息中。在同

一张图中,p还可以在其他的消息中作为实际参数使用。

1.3.2 : p := find (“Rachelle”)

6、创建、修改和撤销

        在某些交互中对象可以被创建(由create消息来说明)和撤销(由destroy消息来说明)。

链也是一样:对象之间的关系可以建立(come)和消失(go)。

为了指明一个对象或链在一个交互过程中是否出现和/或消失,可以在通信图中为它的角色附加一个注解。

在交互过程中,对象的属性值、状态和角色是经常改变的。可以通过在顺序图的生命线上

显示对象的状态或者值来反映对象的改变。

        在顺序图中,对象或角色的生命期、创建与撤销都通过其生命线的垂直延伸而显式地表示

出来。在通信图中,必须使用注解表示创建和撤销。如果展示对象的生命期是重要的,就

使用顺序图。

7、表示法

        在为交互建模时,通常既包括角色(每个角色代表交互实例中的对象),又包括消息(每

个消息都代表对象之间的通信活动,并导致某些动作发生)。

        可以采用两种方式来可视化地表示交互中所涉及的角色和消息:一种方式是强调消息的时

间顺序,另一种方式是强调发送和接收消息的角色的结构组织。在UML中,第一种表示法称

为顺序图;第二种表示法称为通信图。顺序图和通信图都属于交互图。(UML还有一种名为

定时图的特殊交互图,它展示角色之间交换消息的准确时间。

        顺序图允许对一个对象的生命线建模。一个对象的生命线代表该对象在某一特定时间内的存在,并可能覆盖该对象的创建和撤销。通信图允许对交互的对象之间可能存在的结构上的链建模。
 

8、常用建模技术

8.1、对控制流建模

8.1.1、基于时间的控制流

1c1d296ad95e4f54a291cda3da73f880.png

展示了在一个发行和订阅机构语境中进行交互的一组角色(观察者设计模式的一个实例)。图中包括 3个角色:p(StockQuotePublisher 的实例)、s1 和 s2(都是StockQuoteSubscriber的实例)。该图是一个顺序图,强调消息的时间顺序。

8.1.2、基于结构的控制流

ff394849efd5458381c5b09b63fd641a.png

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

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

相关文章

Gitlab SSH无法连接但是HTTP可以连接

项目场景: Gitlab在docker中布置好之后测试,发现SSH无法连接但是HTTP可以连接 提示:这是一个无效的源路径 问题描述 http可以识别为git项目,而ssh无法识别成git项目。 原因分析: 三种猜想 端口号被占用 尝试查看…

韩兴国/姜勇团队在《Trends in Plant Science》发表植物根系氮素再分配的观点文章!

氮素是陆地生态系统中的关键限制性营养元素,通过生物固氮和土壤氮供应通常远低高等植物的氮需求。当土壤氮素供应无法充分满足植物茎叶生长需求时,植物会通过自身营养器官(如根或根茎)再分配来实现氮的内部循环和再利用。尽管植物…

SaaS产品运营|一文讲清楚为什么ToB产品更适合采用PLG模式?

在数字化时代,ToB(面向企业)产品市场的竞争愈发激烈。为了在市场中脱颖而出,许多企业开始转向PLG(产品驱动增长)模式。这种模式以产品为核心,通过不断优化产品体验来驱动用户增长和业务发展。本…

RAG未来的出路

总有人喊RAG已死,至少看目前不现实。 持这个观点的人,大多是Long context派,老实说,这派人绝大多数不甚理解长上下文的技术实现点,就觉得反正context越长,越牛B,有点饭圈化 ,当然我并不否认长上下文对提升理解力的一些帮助,就是没大家想的那么牛B而已(说个数据,达到…

2024年ERP软件公司排名前十!

在当今的商业环境中,ERP(企业资源规划)系统已成为企业日常运营不可或缺的一部分。然而,如何在这众多的ERP系统软件中筛选出最适合自己的一款,成为许多企业共同面临的挑战。今天,我将带大家盘点erp软件公司的…

李沐:用随机梯度下降来优化人生!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— 优化 算法。吴恩达:机器学习的六个核心算法! 梯度下降优化算法是机器…

Java共享台球室无人系统支持微信小程序+微信公众号

共享台球室无人系统 🎱 创新台球体验 近年来,共享经济如火如荼,从共享单车到共享汽车,无一不改变着我们的生活方式。而如今,这一模式已经渗透到了更多领域,共享台球室便是其中之一。不同于传统的台球室&a…

从中概回购潮,看互联网的未来

王兴的饭否语录里有这样一句话:“对未来越有信心,对现在越有耐心。” 而如今的美团,已经不再掩饰对未来的坚定信心。6月11日,美团在港交所公告,计划回购不超过20亿美元的B类普通股股份。 而自从港股一季度财报季结束…

Hue Hadoop 图形化用户界面 BYD

软件简介 Hue 是运营和开发 Hadoop 应用的图形化用户界面。Hue 程序被整合到一个类似桌面的环境,以 web 程序的形式发布,对于单独的用户来说不需要额外的安装。

SBT30100VFCT-ASEMI大功率肖特基SBT30100VFCT

编辑:ll SBT30100VFCT-ASEMI大功率肖特基SBT30100VFCT 型号:SBT30100VFCT 品牌:ASEMI 封装:TO-220 最大平均正向电流(IF):30A 最大循环峰值反向电压(VRRM)&#xf…

服务器----阿里云服务器重启或关机,远程连接进不去,个人博客无法打开

问题描述 在使用阿里云免费的新加坡服务器时,发现重启或者是关机在开服务器后,就会出现远程连接不上、个人博客访问不了等问题 解决方法 进入救援模式连接主机,用户名是root,密码是自己设置的 点击访问博客查看更多内容

AcWing 1273:天才的记忆 ← ST算法求解RMQ问题

【题目来源】https://www.acwing.com/problem/content/1275/【题目描述】 从前有个人名叫 WNB,他有着天才般的记忆力,他珍藏了许多许多的宝藏。 在他离世之后留给后人一个难题(专门考验记忆力的啊!),如果谁…

CSS选择符和可继承属性

属性选择符&#xff1a; 示例&#xff1a;a[target"_blank"] { text-decoration: none; }&#xff08;选择所有target"_blank"的<a>元素&#xff09; /* 选择所有具有class属性的h1元素 */ h1[class] { color: silver; } /* 选择所有具有hre…

配置文件-基础配置,applicationproperties.yml

黑马程序员Spring Boot2 文章目录 1、属性配置2、配置文件分类3、yaml文件4、yaml数据读取4.1 读取单个数据4.2 读取全部属性数据4.3 读取引用类型属性数据 1、属性配置 SpringBoot默认配置文件application.properties&#xff0c;通过键值对配置对应属性修改配置 修改服务器端…

浏览器必装插件推荐:最新版Simple Allow Copy,解除网页复制限制!

经常在网上找资料的朋友&#xff0c;尤其是学生党&#xff0c;总会遇到一个问题&#xff1a;很多资料网站的文字是禁止复制的。于是大家通常会使用各种文字识别软件来图文转换&#xff0c;或者直接手打。 今天这款小工具&#xff0c;可以轻松复制各种氪金网站上的任何文字&…

视频监控平台:通过网络SDK对TCL网络摄像机进行PTZ控制 的源代码介绍及分享

目录 一、视频监控平台介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;视频接入能力介绍 &#xff08;三&#xff09;功能介绍 二、TCL网络摄像机 &#xff08;一&#xff09;360度全景自动旋转&#xff1a; &#xff08;二&#xff09;高清夜视和全彩…

Tustin变换,连续传递函数离散化

Tustin变换&#xff0c;连续传递函数离散化 举例 上述说明了&#xff0c;不要盲目相信ChatGPT f_vehspd 12; phase_vehspd 120; f_res f_vehspd / tan((360-phase_vehspd) * pi/(4*180) );%连续传递函数 num [1 -2*f_res f_res^2]; den [1 2*f_res f_res^2]; sys tf(num…

示例:WPF中绑定枚举到ComboBox的方式

一、目的&#xff1a;在开发过程中&#xff0c;经常会需要把枚举绑定到ComboxBox下拉列表中&#xff0c;其实方法有很多&#xff0c;这里面通过MarkupExtension扩展GetEnumSourceExtension去绑定到列表 二、实现 定义GetEnumSourceExtension类 public class GetEnumSourceExte…

Part 4.2 背包动态规划

->背包模型模板(0/1,分组&#xff0c;完全&#xff0c;多重)<- [NOIP2018 提高组] 货币系统 题目背景 NOIP2018 提高组 D1T2 题目描述 在网友的国度中共有 n n n 种不同面额的货币&#xff0c;第 i i i 种货币的面额为 a [ i ] a[i] a[i]&#xff0c;你可以假设每…

算法03 二分查找算法【C++实现】

二分查找的概念 二分查找又称为折半查找&#xff0c;主要用于查找一个有序数组中某一个数的位置。 主要思想如下&#xff1a; 在一个有序数组中&#xff0c;取数组的中间值与要查找的数进行比较&#xff1b; 若要查找的数等于中间值&#xff0c;查找成功。 二分查找的步骤 …