【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.mfbz.cn/a/717881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.类,方法,对象

1.1.2. 面向对象程序设计的三大特征 1.1.2.1. 封装 面向对象编程核心思想之一就是将数据和对数据的操作封装在一起,形成一般的概念,比如类的概念。 1.1.2.2. 继承 继承体现了一种先进的编程模式。子类可以继承父类的属性和方法。 1.1.2.3. 多态 多…

Novartis诺华制药社招综合能力性格动机问卷入职测评笔试题库答案及包过助攻

【华东同舟求职】由资深各行业从业者建立的一站式人才服务网络平台,现阶段目标是“提升全市场各行业岗位信息的流动性和透明度”。我们接受众多行业机构的直接委托发布,并尽力通过各种方法搜寻高价值岗位信息。事实上,我们以发现不为人知的优…

HQChart实战教程73-仿tradingview指标MACD

HQChart实战教程73-仿tradingview指标MACD MACD![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/84d180b5620940f6b9fe08c6f10eb0f3.png)麦语法脚本实心MACD指标脚本效果 空心MACD指标脚本效果图 自定义指标添加到系统指标里HQChart插件源码地址 MACD tradingview中…

多模态LLM 跨越语言与视觉的边界

一、引言 在数字时代的浪潮中,我们被由语言和视觉等多种模态构成的信息海洋所包围。人类大脑以其卓越的多模态上下文理解能力,在日常任务中游刃有余。然而,在人工智能领域,如何将这种能力赋予机器,尤其是如何在语言模…

HarmoneyOS星河版 安装和启动

一、下载和安装DevEco Studio 官网链接:OpenAtom OpenHarmony 1.1 找到对应的操作系统进行下载 创建安装Harmony的文件夹: 1.2 下载后进行安装 1.3 分别安装Node、Ohpm、SDK 分别安装Node、Ohpm和SDK 二、.创建一个新项目并运行 2.1 选择[OpenHarmon…

复旦发布开源版本的EMO,只需输入一段音频和一张照片就可以让人物开始说话。

之前和大家介绍过阿里的EMO,用户只需要提供一张照片和一段任意音频文件,EMO即可生成会说话唱歌的AI视频。最长时间可达1分30秒左右。感兴趣的小伙伴可以点击下面链接阅读。 近日,复旦发布了一个开源版本的 EMO。 通过输入音频让面部照片开始…

【MySQL基础随缘更系列】AB复制

文章目录 mysql AB复制实战一、mysql AB复制二、AB复制原理三、master服务器设置3.1、安装mysql并启动3.2、关闭防火墙,selinux3.3、设置时间服务器3.4、修改配置文件 设置server-idN3.5、创建slave连接master的账号,用于取SQL语句 四、slave设置4.3、修改配置文件 …

数据可视化在智慧水利中的关键应用

数据可视化是如何在智慧水利中应用的?在现代水利管理中,面对复杂的水资源数据和动态变化的水文情况,数据可视化技术通过将繁杂的数据转化为直观、易理解的图表和图形,极大地提升了水利管理的效率和决策的科学性。智慧水利利用数据…

植物ATAC-seq文献集锦(四)——生物和非生物胁迫篇

ATAC-seq在植物研究领域的应用我们已经介绍3期了,最后一期我们聚焦ATAC-seq技术在生物和非生物胁迫方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 植物ATAC-s…

自动采集软件||自动采集主流电商商品详情SKU数据价格功能实现||电商API接口的应用

实现自动化淘宝商品数据采集的方法有多种,一种常见的方式是利用网络 Python 技术。您可以编写一个网络 Python程序,通过模拟浏览器发送请求,获取淘宝商品页面的数据,并对数据进行解析和提取,最终存储到数据库或文件中。…

Android Compose 文本输入框TextField使用详解

一、 TextField介绍 TextField 允许用户输入和修改文本,也就是文本输入框。 TextField 分为三种: TextField是默认样式OutlinedTextField 是轮廓样式版本BasicTextField 允许用户通过硬件或软件键盘修改文本,但不提供提示或占位符等装饰&a…

车企高管组团“出道”,汽车营销已经Next level了?

汽车进入了“卷”老板、“卷”高管的时代! 谁能想到,雷军凭一己之力,在一定程度上重塑了汽车的竞争策略。价格战之外,车市又开启了流量之战。 云略曾在《雷军20天吸粉500w!……》一文中,提到继雷军之后&…

【问题记录】Ubuntu提示: “E: 软件包 gcc 没有可安装候选“

Ubuntu提示: "E: 软件包 gcc 没有可安装候选" 一,问题现象二,问题原因&解决方法 一,问题现象 在虚拟机Ubuntu中进行安装gcc命令时报错:“E: 软件包 gcc 没有可安装候选”: 二,问题原因&解决方法 …

树莓派 Thonny使用

在python中新建了虚拟环境,需要Thonny使用虚拟环境,在python executable中选中虚拟环境路径下的python3即可

银河麒麟4.0.2安装带有opengl的Qt5.12.9

银河麒麟4.0.2下载地址:银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载:Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1)安装完后安…

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户,但微软疯狂地将人工智能融入一切,让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑,所以我对MacOS一直不太适应。虽然Windows 11有其缺点,但总的来说&am…

车载ADAS面试题,零基础也能看得懂!

周一来刷刷ADAS相关的面试题吧!相信看完这些题目,你会对ADAS有个更清晰的认识,即使你是零基础也可以轻松明白! 1、描述 ADAS 系统的基本组成和功能 答案:高级驾驶辅助系统(ADAS)是一套融合了多种…

如何通过Appium连接真机调试

1、打开appium,点击启动appium服务器(如图1) 2、appium启动成功后,点击放大镜启动检查会话(如图2) 3、填写真机设备信息和APP的package、activity,点击启动会话(如图3) 4、打开运行A…

过拟合与正则化

Location Beijing 过拟合 对于一个模型 A A A,解向量空间为 θ \theta θ,误差函数用式1表示 J ( θ ) J a c c [ y θ ( x ) − y ] 2 (1) J(\theta)J_{acc}[y_\theta(x)-y]^2\tag{1} J(θ)Jacc​[yθ​(x)−y]2(1) 首先我们考虑用模型 A A A拟合下…

整合第三方技术-整合JUnit

黑马程序员Spring Boot2 文章目录 名称:SpringBootTest类型:测试类注解位置:测试类定义上方作用:设置JUnit加载的SpringBoot启动类范例: