8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
广州市小学信息技术教学同步资源 第一册 第二章 第六节 《 Window窗口》 广州市荔湾区西华路小学 董绮珊.
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
被动语态 (The Passive Voice)
Oracle数据库 Oracle 子程序.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
6.4 Notification 通知栏.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
整合思维导图的初中英语教学设计 主讲人:卢璐.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第8章 静电场 图为1930年E.O.劳伦斯制成的世界上第一台回旋加速器.
2.1.2 空间中直线与直线 之间的位置关系.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
自动机与形式语言 报告人:姜勇刚 郑奘巍.
UML状态图 【学习目标】  定义状态图 为什么要建模状态图 学习状态图的标记符组件 学习如何指定状态的动作和事件 学习如何建模状态图.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
9.1 概述 9.2 活动图的组成元素 9.3 活动的分解 9.4 活动图建模技术 9.5 实例——图书馆管理系统的活动图
第12章 系统动态特性与对象交互模型 系统的静态模型描述了系统的组成关系及结构,包括元素及其关系。偏重于描述了系统的全貌
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
VB与Access数据库的连接.
分裂对象模型 C++ otcl.
项目二:HTML语言基础.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
1.把下面的关系模式转化为E-R图 1)系(系号,系名,电话) 2)教师(工号,姓名,性别,年龄,系号)
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
状态建模.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第四章 UNIX文件系统.
第十七讲 密码执行(1).
UML建模案例库之 图书管理系统建模实例.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
位似.
《偏微分方程》第一章 绪论 第一章 绪论 1.1.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
§4.5 最大公因式的矩阵求法( Ⅱ ).
入侵检测技术 大连理工大学软件学院 毕玲.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
Presentation transcript:

8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图 第8章 状态图 8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图 状态图(Statechart Diagram)是系统分析的一种常用工具,它通过建立类对象的生存周期模型来描述对象随时间变化的动态行为。系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,因为系统中对象的状态变化最易发现和理解。

门的状态 状态机:用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。 状态图:用来描述状态机的,一个状态机可以用多张状态图来描述。 门的状态

8.1 状态机 状态机是展示状态与状态转换的图。 状态机由状态、转换、事件、活动和动作5部分组成。 8.1 状态机 状态机是展示状态与状态转换的图。 状态机由状态、转换、事件、活动和动作5部分组成。 (1)状态表示一个模型在其生存期内的状况,一个状 态的生存期是有限的一个时间段。 (2)转换表示两个不同状态之间的联系,事件可以触 发状态之间的转换。 (3)事件是在某个时间产生的,可以触发状态转换。 (4)活动是在状态机中进行的一个非原子的执行,由 一系列动作组成。 (5)动作是一个可执行的原子计算,它导致状态的变 更或者返回一个值。 一个状态机可以用多个状态图来描述

8.2 状态图 状态图主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。若干个状态由一条或者多条转换箭头连接,状态的转换由事件触发。组成UML的图形元素有状态、转换、初始状态、终结状态和判定等,一个简单的状态图如下图所示。

一个简单的状态图示意图

8.2.1 状态 状态是状态机的重要组成部分,它描述了状态机所建模对象的动态行为产生的结果。 8.2.1 状态 状态是状态机的重要组成部分,它描述了状态机所建模对象的动态行为产生的结果。 状态由一个带圆角的矩形表示,状态图的图标可以分为3部分:名称、内部转换和嵌套状态图。 名称 内部转换 嵌套状态图 状态图的图标表示

(1)名称。名称表示状态的名字,通常用字符串表示。 (2)内部转换。在内部转换中可以包含进入或者退出此状态应该执行的活动或动作,它们将响应对象所接收到的事件,但是不改变对象的状态。 (3)嵌套状态图。状态图中的状态有两种:一种是简单状态,简单状态不包含其他状态;一种是组成状态,组成状态是包含子状态的状态。 (1)名称。名称表示状态的名字,通常用字符串表示。一个状态的名称在状态图所在的上下文中应该是唯一的,不过,状态允许匿名。 (2)内部转换。在内部转换中可以包含进入或者走出此状态应该执行的活动或动作,它们将响应对象所接收到的事件,但是不改变对象的状态。 (3)嵌套状态图。状态图中的状态有两种:一种是简单状态,简单状态不包含其他状态;一种是组成状态,组成状态是包含子状态的状态。

8.2.2 转换 转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,即转入状态。转换可以标注与此转换相关的选项。 8.2.2 转换 转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,即转入状态。转换可以标注与此转换相关的选项。 从图中可以看出,当源状态接收到一个事件,并且监护条件得到满足,则执行相应的动作,同时从源状态转换到目标状态。一个转换只允许一个事件,一个事件只允许一个动作。

8.2.3 初始状态 每个状态机都应该有一个初始状态。初始状态代表状态机的起始位置,初始状态只能作为转换的源,而不能作为转换的目标,用一个实心的圆来表示。 初始状态

8.2.4 终止状态 终止状态是模型元素的最后状态,是一个状态图的终止点。终止状态只能作为转换的目标,而不能作为转换的源。终止状态在一个状态图中可以有多个,它用一个含有实心圆的空心圆表示。 终止状态

8.2.5 判定 判定处在状态图中这样一个位置:工作流在此处按监护条件的取值而发生分支。 8.2.5 判定 判定处在状态图中这样一个位置:工作流在此处按监护条件的取值而发生分支。 因为监护条件为布尔表达式,所以通常条件下的判定只有一个入转换和两个出转换,根据监护条件的真假可以触发不同的分支转换。 判定的示例

8.3 状态 状态描述了对象生命期中某个条件或者状况,在此期间对象将: 满足某些条件 等待某些事件 执行某些活动 8.3 状态 状态描述了对象生命期中某个条件或者状况,在此期间对象将: 满足某些条件 等待某些事件 执行某些活动 对象在任何时候都会处于某种状态中,所有对象都有状态。 对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。 万事具备只欠东风 网上购物时,订单不一定会马上处理,此时订单的状态处于等待处理的状态 正在干什么

8.3.1 概述 事实上,类对象的任何一个属性值都是一个状态,全部的状态构成一个庞大的状态空间。我们只关心那些明显影响对象行为的属性,以及由它们表达的对象状态,而不理睬那些与对象行为无关的状态。 状态分为简单状态和组成状态,状态包括状态名、活动、入口动作和出口动作等。

8.3.2 状态名 8.3.3 内部转换 内部转换只有源状态而没有目标状态,因此转换激发的结果并不改变状态本身。如果一个内部转换带有动作,动作也要被执行,但是由于没有状态改变发生,因此不需要执行入口和出口动作。 内部转换和自转换不同,虽然两者都不改变状态本身,但是自转换会激发入口动作和出口动作的执行,而内部转换却不会。

8.3.4 入口动作与出口动作 入口动作和出口动作表示进入或退出某个状态所要执行的动作。入口动作用“entry/要执行的动作”表达,而出口动作用“exit/要执行的动作”表达。 8.3.5 简单状态 简单状态是指不包含其他状态的状态。简单状态没有子结构,但它可以具有内部转换、进入动作和退出动作等。

8.3.6 组成状态 组成状态可以使用 “或”关系分解为并发子状态,或者通过 “与”关系分解为互相排斥的顺序子状态。因此,嵌套的子状态可能是顺序子状态,也可能是并发子状态。如果包含顺序子状态的组成状态是活动的,则只有一个子状态是活动的;如果包含并发子状态的组成状态是活动的,则与它正交的所有子状态都是活动的。

(1)顺序子状态 如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。

(2)并发子状态 有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。顺序子状态与并发子状态的区别在于并发子状态在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。

8.3.7 历史状态 当离开一个组成状态重新进入此状态时不希望从它的子初始状态开始执行,而是希望直接进入上次离开组成状态时的最后一个子状态,在这种情况下就要用到历史状态。 历史状态代表上次离开组成状态时的最后一个子状态,它用一个包含字母“H”的小圆圈表示。每当转换到组成状态的历史状态时,对象便恢复到上次离开该组成状态时的最后一个活动子状态,并执行入口动作。

8.4 事件 事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。 8.4 事件 事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。 事件有多种,大致可以分为入口事件、出口事件、动作事件、信号事件、调用事件、修改事件、时间事件和延迟事件等几种。

(1)入口事件 入口事件表示一个入口的动作序列,它在进入状态时执行。 (2)出口事件 出口事件表示一个出口的动作序列,它在退出状态时执行。 (3)动作事件 动作事件也称为“do事件”,它表示对一个嵌套状态机的调用。与动作事件相关的活动必定引用嵌套状态机,而非引用包含它的对象的操作。

信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。 (4)信号事件 信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。 (5)调用事件 调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实现操作。调用事件至少涉及两个以上的对象,一个对象请求调用另一个对象的操作。 信号事件:马路红灯(异步的) 调用事件:函数调用(同步的)

(6)修改事件 修改事件依靠特定属性值的布尔表达式所表示的条件满足来触发状态的转换。监护条件与修改事件的区别在于监护条件只是在引起转换的触发器事件触发时和事件接收者对事件进行处理时被赋值一次,而修改事件则可以被多次赋值直到条件为真,多次赋值满足条件后转换也会被激发。

时间事件代表时间的流逝。时间事件既可以被指定为绝对形式,也可以被指定为相对形式。 (7)时间事件 时间事件代表时间的流逝。时间事件既可以被指定为绝对形式,也可以被指定为相对形式。 (8)延迟事件 延迟事件是在本状态不处理,要推迟到另一个状态才处理的事件。 时间事件:当某一时间到达,应转换的状态。下课

8.5 转换 转换表示两个状态之间的一种关系,当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活动状态。 转换通常分为外部转换、内部转换、完成转换和复合转换4种。一个转换一般包括5部分的信息:源状态、目标状态、触发事件、监护条件和动作。

8.5.1 外部转换 外部转换是一种改变对象状态的转换,它是最常见的一种转换。外部转换用从源状态到目标状态的箭头表示。下图描述了一个火车上的卫生间的简单状态转换,图中箭头上标注的都是引发状态转换的外部事件。这种转换就称之为外部转换。

8.5.2 内部转换 内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换的激发规则和改变状态的外部转换的激发规则相同,如果一个内部转换带有动作,动作也要被执行。内部转换用于对不改变状态的插入动作建立模型。 睡觉拍了一下但没有拍醒

8.5.3 完成转换 完成转换又称为自转换,它是由状态中活动的完成引起的,是自然而然地完成的转换。 8.5.3 完成转换 完成转换又称为自转换,它是由状态中活动的完成引起的,是自然而然地完成的转换。 内部转换和自转换的区别:自转换是离开本状态后重新进入该状态,它会激发状态的入口动作和出口动作的执行;而内部转换自始至终都不离开本状态,所以没有入/出口事件,也就不执行入/出口动作。

8.5.4 复合转换 复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起。由判定参与的转换就是复合转换。除了简单的两个分支判定之外还可以有多条件的分支判定。多条件的分支判定又分为链式的和非链式的分支,这两种分支如下图所示。

链式分支

非链式分支

8.5.5 触发事件 状态机描述了对象的具有事件驱动的动态行为,对象动作的执行、状态的改变都是以特定事件的发生为前提的,触发事件就是能够引起状态转换的事件。触发事件可以是信号、调用和时间段等。

8.5.6 监护条件 转换可能具有一个监护条件,监护条件是触发转换必须满足的条件,它是一个布尔表达式。当事件被触发时,监护条件被赋值,如果布尔表达式的值为真,那么转换被触发,为假则不会引起转换,监护条件只能在触发事件发生时被赋值一次。

8.5.7 动作 动作是一组可执行语句或者计算处理过程。动作可以包含发送消息给另一个对象、操作调用、设置返回值、创建和销毁对象等。动作也可以是一个动作序列,即一系列简单的动作的组合。动作的执行时间非常短,与外界事件所经历的时间相比是可以忽略的,因此,在动作的执行过程中不能再插入其他事件。下表列出了UML中的各种动作。 眼睛眨了一下

opertionComplete(arg) UML中的各种动作 动作种类 对动作的描述 语法 赋值 对一个变量赋值 target:=expression 调用 调用目标对象的一个操作,等待操作执行完成,可能会有返回值 setname(arg) 创建 创建一个新对象 new Student() 销毁 销毁一个已存在的对象 object.destroy() 返回 为调用者指定返回值 return value 发送 创建一个信号实例并将其发送到目标对象(一个或者一组) opertionComplete(arg) 中止 对象的自我销毁 terminate

8.6 状态图建模技术 状态图一般用于对系统中的某些对象和系统的行为建模。建模的时候要找出对象所处的状态、触发状态改变的动作,以及对象状态改变时应执行的动作。具体建模步骤如下: (1)找出适合用模型描述其行为的类 (2)确定对象可能存在的状态 (3)确定引起状态转换的事件 (4)确定转换进行时对象执行的相应动作 (5)对建模的结果进行相应的精化和细化

8.7 实例—图书馆管理系统的状态图 8.7.1 使用Rose绘制状态图的步骤 8.7.2 图书馆管理系统的状态图

8.7.1 使用Rose绘制状态图的步骤 1. 创建状态图 2. 加入开始状态和终止状态 3. 增加状态 4. 增加转换 5. 增加历史状态

8.7.2 图书馆管理系统中的状态图 在图书馆管理系统中,有明确状态转换的类包括:书籍和借阅者的帐户(相当于包含特定个人信息的电子借阅证)。可以在系统中为这两类事物建立状态图。

书的状态图

状态图说明: (1)New book:还未入库的新书。 (2)Delete:已经从书库里删除的书。 (3)Available:书籍处于可用状态,即可 以外借的状态。 (4)Reserved:预订状态。 (5)Borrowed:借出状态。

借阅者帐户的状态图

状态图说明: (1)New Borrower:新加入的借阅者的帐户。 (2)Account Available:借阅帐户为可用状态,即未达到所规定的书籍借阅数目上限。 (3)Account Unavailable:借阅帐户为不可用状态,即所借的书籍已达到规定的书籍借阅数目上限,不能再借阅书籍了。 (4)Delete Account:个人帐户被删除状态。

CD机的状态图

洗衣机状态图