状态建模.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
§3.4 空间直线的方程.
8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图
小学生游戏.
Oracle数据库 Oracle 子程序.
第14章 c++中的代码重用.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
M5U1 He is playing the suona ,but the phone rings.
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
研发内部系统 Pdc简要说明 2013年7月.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
CPU结构和功能.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
UML状态图 【学习目标】  定义状态图 为什么要建模状态图 学习状态图的标记符组件 学习如何指定状态的动作和事件 学习如何建模状态图.
VisComposer 2019/4/17.
第12章 系统动态特性与对象交互模型 系统的静态模型描述了系统的组成关系及结构,包括元素及其关系。偏重于描述了系统的全貌
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
分裂对象模型 C++ otcl.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
项目二:HTML语言基础.
Web安全基础教程
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
HSC高速输出例程 HORNER APG.
第12章 狀態機圖 12-1 狀態機圖的基礎 12-2 狀態機圖的符號 12-3 再談狀態與轉換 12-4 狀態機圖的塑模範例
Lync 2013 for Android 课程摘要卡 加入 Lync 会议 登录并开始使用 在会议中启动您的视频 更改状态或注销
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
《偏微分方程》第一章 绪论 第一章 绪论 1.1.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
§4.5 最大公因式的矩阵求法( Ⅱ ).
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
入侵检测技术 大连理工大学软件学院 毕玲.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

状态建模

状态模型 类模型表示系统静态的、结构化的“数据”层面。 状态模型表示系统时序的、行为的“控制”层面。 状态模型描述了与操作的时间和顺序相关的对象层面,标记变化的事件,界定事件上下文的状态,以及事件和状态的组织。 状态模型捕获控制,描述操作出现顺序的系统层面。

状态图 状态图(State diagram)主要用来描述对象、子系统、系统的生命周期。通过状态图可以了解到一个对象所能到达的所有状态以及对象收到的事件(收到消息,超时,错误,条件满足)对对象状态的影响等。 所有的类,只要它有可标记的状态和复杂的行为,都应该有一个状态图。状态图指定对象的行为以及根据不同的当前状态行为之间的差别。同时,它还能说明事件是如何改变一个类的对象的状态。 状态模型有多个状态图组成,每个类对应一个状态图,描述对应用程序来说是最重要的那些时序行为。

状态图

状态和迁移 所有对象均有状态:状态是对象操作的前一次活动的结果,通常情况下,状态由对象的属性值以及指向其它对象的链来决定的。类的状态由类中的指定属性来说明或对象的状态由对象中的通用属性的值来确定。下面举例说明对象的状态: 支票(对象)已付(状态)。 汽车(对象)停在那儿(状态)。 发动机(对象)正在运行(状态)。 吉姆(对象)正在卖货(状态)。 小王(对象)已婚(状态) 。 当某些事情发生时对象的状态发生改变,我们称改变对象状态的事情为“事件”,例如,付了支票,开始启动汽车,或结婚。

状态 状态(state)是对象取值和链接的抽象。根据对象的总体行为,将取值和链接的集合组成一个状态。状态经常对应着带有后缀“ing”(如Waiting、Dailing)的动词,或一些状态的持续时间。 事件和状态之间有某种对称性。事件表示时间点;状态表示时间段。状态对应着对象接收的两次事件之间的时间间隔。 状态是对象的生命周期中的一个条件或状况,在此期间将满足某些条件、执行某些活动或等待某些事件

状态 一个状态有以下几个部分: 1、名称(name ):将本状态与其它状态区分开的文本串 2、进入/退出效应(entry/exit effect):分别为进入和退出该状态时所执行的动作。 3、内部转移(internal transition):不导致状态改变的转移。 4、子状态(substate):状态的嵌套结构,包括非正交(顺序活动)和正交(并发活动)子状态。 5、延迟事件(deferred event):指在本状态下暂不处理,将推迟到该对象的另一个状态下排队处理的事件列表。

状态的不同描述 状态:AlamRinging 描述:手表上响铃以指示预定时间 产生状态的事件序列: 刻画状态的条件: 状态中接收的事件: setAlam(targetTime) 不包括ClearAlam的任何序列 When(currentTime=targetTime) 刻画状态的条件: Alarm=on,设定响铃时间为target Time,targetTime<=currentTime<=targetTime+20秒,在targetTime后按下按钮 状态中接收的事件: 事件 响应 下一状态 When(currentTime=targetTime+20) resetAlam normal buttonPushed(any button) resetAlam normal

事件 事件(event)是对一个在时间和空间上占有一定位置的有意义的发生的规约。在状态机中,一个事件是一次激励的发生,激励能够触发状态转移。 事件可以是内部的事件或外部的事件。外部的事件是在系统和它的参与者之间传送的事件。例如一个按钮的按下和来自膨胀传感器的中断是外部事件。内部事件是在系统内部的对象之间传送的事件。溢出异常是一个内部事件。

四类事件 可以用UML对四种事件进行建模 1、信号(signal):是一个具名对象,它由一个对象异步的发送,然后由另一对象接收。信号事件(signal event)是指发送或接收信号的事件。 2、调用事件(call event):一个调用事件表示对象接收到一个操作调用请求。调用事件可能触发状态机中的一个状态转移,或者调用目标对象的一个方法。 3、时间事件(time event):表示一段时间推移的事件或绝对时间上所发生的事件。例如:after 2 seconds。 4、变化事件(change event):表示状态的一个变化或某些条件得到满足的时间。例如:when altitude<1000

事件

迁移 迁移(transition)是指从一个状态到另一个状态的瞬间变化,表示对象在某个特定事件发生并且满足特定的条件满足时将在第一个状态中执行一定的动作,并进入第二个状态。当状态发生这样的变化时,迁移被称作激活了。在迁移激活之前,称对象处于源状态;激活后,称对象处于目标状态。

一个迁移由5部分组成 1、源状态(source state):即受转移影响的状态。 2、事件触发器(event trigger):是一个事件,源状态中的对象识别了这个事件,这在警戒条件满足的情况下激活迁移。 3、警戒条件(guard condition):是一个布尔表达式,当因事件触发器的接收而触发转移时,对表示式求值,若表达式为真则激活转移,若为假则不激活,此时若没有其它的转移能被这个事件触发,则该事件丢失。 4、效应(effect)是一个可执行的行为(比如动作),它可以直接作用于拥有状态机的对象,并间接作用于对该对象是可见的其它对象。 5、目标状态(target state):转移完成后的活动状态

迁移

警戒迁移

单触发状态图 状态图可以表示连续循环或单触发生存期,对有些状态图,不必关心循环如何开始。 单触发状态图表示有限生存期的对象,由初始状态和终止状态 在对象创建时会进入初始状态;进入终止状态时意味着对象被销毁。

国际象棋的状态图

国际象棋的状态图

状态图行为 效应(effect)是对为响应事件而执行的行为的活动。 活动(activity)是由效应触发的实际行为,效应数量不限。 活动表示法是“/”和活动的名称(或描述),跟在引起活动的事件后面。关键词do留下来表示正在进行的活动,不能用作事件名称。

do活动 do活动指持续了一段时间的活动,do活动只会在某个状态内出现,不能附到迁移上。do活动包括连续的操作,例如电视屏幕上显示图像。以及一段时间后会由它们自己终止的顺序操作,例如关闭阀门。

进入和退出活动 要显示在迁移上的活动,可以把活动绑定到某状态的入口或出口。两种表示法的表达能力没有太大差别。 所有进入某状态的迁移经常会执行相同的活动,在这种情况下,更简洁的做法是把活动连接在状态上。 进入活动在状态框内显示为关键词entry和字符“/”。无论何时只要有到达的迁移进入某状态,进入活动就会执行,进入活动等同于把活动连接到每个到达的迁移上。 如果某状态有多个活动,它们可以按照下面的顺序执行:到达迁移上的活动、进入(entry)活动、do活动、退出(exit)活动以及输出迁移上的活动。

迁移上的活动

进入状态上的活动

带有活动的电话线状态图

电梯的状态图(1) 上楼 在第一层 向上移动 到达 上楼 到达 向第一层移动 到达 向下移动 空闲 下楼 超时 图:电梯的状态图。电梯从第一层开始启动。它能够上下移动。如果电梯在某一层上处于 空闲状态,则当超时事件出现时,它就会返回到第一层。本状态图中没有终点(终态)

电梯的状态图(2) 上楼 向上移动 在第一层 Do/到第floor层 到达 上楼 (floor) 到达 向第一层移动 向下移动 到达 空闲 超时 图:状态转移:状态“在第一层”和状态“向上移动”之间的状态转移有一个参数“floor”(不考虑类型), 在“空闲”和“向上移动”之间以及“空闲”和“向下移动”之间的状态转移也有“floor”这个参数

实践技巧 把值抽象为状态。在定义状态的时候,只考虑相关的属性。 参数:为附带数据参数化事件,附带数据不会影响控制流程。 事件和状态的粒度要考虑应用的需求。 何时使用状态图:只为那些有时序意义的类构建状态图。 进入和退出活动。当某个状态有多个到达迁移,并且所有的迁移都会引起相同的活动时使用进入活动。

扩展状态 组织模型的一种方法是用高层框图,带有扩展了某些状态的子图。 子状态机(submachine)是一种状态图,可以作为其它状态图的一部分来调用,子状态机状态图可以替代局部状态,子状态机是状态图的“子程序”。

自动售货机

自动售货机的子状态机Dispense item

嵌套状态 一个状态允许嵌套,以包含子状态;子状态继承其父状态的所有转换。 嵌套状态使得简洁的状态机图成为可能,子状态被嵌套地放在父状态的框图中。 组合状态(composite state)显示外部轮廓、轮廓完全围住嵌套状态。状态可以嵌套到任意深度,嵌套状态会接收其组合状态的输出迁移。

嵌套状态

子状态 子状态(即嵌套状态)是嵌套在另一个状态中的状态。例如:一个加热器Heater可能处于heating状态,且在Heating状态中还有一个嵌套状态Activating。在这种情况下,应该称这个对象既处于Heating状态,又处于Activating状态。 简单的状态是没有子结构的状态。一个含有子状态的状态称为组合状态。组合状态包括并发(正交的)子状态或顺序(非正交的)子状态。子状态可以嵌套到任何层次。

非正交子状态 考虑对一个ATM的行为建模。这个系统有3个基本状态:“空闲”Idle(等待与顾客交互)、“活动”Active(处理一个顾客的事物)和“维护”Maintenance(可能是从新装满现金夹)。 在Active状态下,ATM的行为沿一条简单路径执行:验证客户、选择事物、处理这个事物,然后打印收据。 象Validating和Processing这样的子状态,被称为非正交或不相交的子状态。对象被称为处在该组合状态中,而且一次只能处于这些子状态中的一个子状态上。

顺序子状态:售票系统的状态机模型

正交子状态 在某些建模情况下,可能要说明一些正交的区域。这些区域存在一个对象的语境中并行执行的两个或多个状态机。 下图中两个正交区域的执行是并行的。最终,每个嵌套状态都达到它的终态。如果一个正交区域先于另一个到达它的终态,那么这个区域的控制将在它的终态等待。当两个嵌套状态都到达它们的终态时,来自两个正交区域的控制就汇合成一个流。

并发子状态:选修一门大学课程的并发分解

聚合并发 装配件的状态图由一系列状态图组成,每个部件对应一个状态图。 聚集状态与所有部件的组合状态相对应,聚合是“与关系”。 有些情况下,部件状态会发生交互,一个对象上的迁移可以依赖于处在某个给定状态中的另一个对象。

聚合及其并发的状态图

聚合及并发的状态图

对信号族建模 在大多数事件驱动的系统中,信号事件是分层的。 例如:一个自主机器人可以辨别外部信号(如Collision)和内部信号(如HardwareFault ),两种信号未必互斥,同时HardwareFault 可以进一步特化为BatteryFault和MovementFault。 以这种方式对信号建模,可以说明多态的事件。

对信号族建模