6.状态机图(状态 活动)汇总

合集下载

状态机图状态活动

状态机图状态活动

1.初态和终态
初态(Start state)
显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从 相同的地方开始的。如果一个状态机用多张图描述, 则多张图用同一个初态 嵌套状态中可以使用新的初态
终态(End State)
表示一个最后的或者终端状态 终态的数目可以不确定
2.中间状态
状态图
状态图的作用
描述一个特定对象的所有可能状态 以及由于各种事件的发生,而引起的状态间的 转移
状态图
状态图的组成
节点是状态:包括初始状态和终止状态,用圆 角矩形表示 关系是转换(或转移):用状态之间包含一些 文字描述的有向箭头线表示
状态
状态的几种类型
1.初态和终态 2.中间状态 3.组合状态 4.历史状态
绘制状态机图的步骤
寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节
状态图(购物网站)
当从状态“结账”和“显示购物车”返回子状态“显示索 引信息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍保留原来的信息。
历史状态是一种伪状态 可以存储退出组合状态时所处的子状态,则返回 组合状态时可以直接回到相应的子状态
转换的五要素
源状态(Source State):转换激发之前对象所处的状态 目标状态(Target State) :转换完成后对象所处的状态 触发事件(Trigger Event) :引起转换发生的事件 监护条件(Guard Condition) :方括号括起来的布尔表达 式,用于决定是否激活转换 动作(Action) :转换激活时对象执行的操作
细化状态内的活动与转换

第6章状态图和活动图

第6章状态图和活动图
17
2. 事件的描述 事件名称(参数表 事件名称 参数表) 参数表
字符串, 字符串,常为接收对象类中 的一个操作. 的一个操作. 事件的形式参数 ,可以省略
3. 事件的类型 ① 调用事件:是表示对操作的调度.请求调用另一个 调用事件:是表示对操作的调度. 对象的操作,一般是同步调用. 对象的操作,一般是同步调用.
第 章 状态图和活动图
6
6.1 状态图 6.2 活动图 6.3 两种图的比较
1
第 章 状态图和活动图
6
6.1 状态图
6.1.1 什么是状态图 6.1.2 状态图的要素 6.1.3 状态图的作用 6.1.4 绘制状态图
2
6.1.1 什么是状态图
1. 状态图的概念 状态图(statechart diagram): 用来描述 状态图 一个特定的对象所有可能的状态,以及由 一个特定的对象所有可能的状态 以及由 于各种事件的发生而引起的状态之间的转 移和变化. 移和变化.
21
状态的类型
状态的类型 初始状态/结束状态 ① 初始状态 结束状态
初始状态
显示状态图中状态机中的执行的开始. 显示状态图中状态机中的执行的开始. 一个状态机只能有一个初态,因为每一个执行都是从相同的地方开 一个状态机只能有一个初态, 始的.如果一个状态机用多张图描述,则多张图用一个初态; 始的.如果一个状态机用多张图描述,则多张图用一个初态;
事件
20
3. 事件的类型 信号事件:所谓信号,是指由一个对象异步的发送, ④ 信号事件:所谓信号,是指由一个对象异步的发送, 并由另外一个对象接收的一个已命名的对象. 并由另外一个对象接收的一个已命名的对象. 信号事件表示对象接收到某个信号. 信号事件表示对象接收到某个信号. 信号可以作为状态中一个状态转换的动作而被发送, 信号可以作为状态中一个状态转换的动作而被发送, 也可作为交互中一个的消息发送. 也可作为交互中一个的消息发送.

状态机图(精品)

状态机图(精品)

状态机图1.概述状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌套的复合状态等,一个典型的状态机图如图1所示:图1. 状态机图2.基本表示符号状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。

2.1状态(State)状态是对象生命周期中的一个条件或形态。

状态由对象的属性值、与其他对象的关系以及正在执行的活动来确定。

在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆表示,终止状态用牛眼表示,如图2所示:图2. 状态状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换分栏等,如图3所示:图3. 带分栏的状态状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:图4. 带有名称标签符号的状态2.2转移(Transaction)转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转换(嵌套在状态内部)。

如图5所示:图5. 转移2.3事件(Event)事件是对,在特定时间和空间上,所发生的有意义的事情。

在状态机中,事件触发转移,事件或者显示在转换之上,或显示在状态以内。

共有四种类型的事件:信号事件、调用事件、时间事件、改变事件。

信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。

信号事件是通过信号来触发的事件,在UML中,信号如图6所示:图6. 信号调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:图7. 调用事件时间事件用关键字after表示,说明事件被触发的临界时间。

改变事件用关键字when表示,说明将事件改变所满足的条件。

如图8所示:图8. 时间事件和改变事件2.4伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。

它是一个瞬时状态,用于构造转换的细节。

当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。

6.状态机图(状态+活动)

6.状态机图(状态+活动)

课堂练习(电梯系统的状态图)
带有复杂转换的状态图
补充说明(状态图)
适用情况:
适用于描述跨越多个用例的单个对象行为 不适合描述多个对象之间的行为协作 故需与其他技术(类图、对象图)结合使用
注意事项:
不要花费大量时间和精力为系统中的每个类都 画对应的状态图 开发人员只关心关键类的行为,只需为这些类 建立状态图,帮助理解所研究的问题
方法二:
先对活动进行全局的分析 再将活动分配各具体的对象
建议:
两种方法各有利弊 根据个人习惯和具体情况而定
分类(1.简单活动图)
分类(1.简单活动图)
分类(2.标识泳道的活动图)
泳道(SwimLane):用于有效 地标识每个活动的实施者。 表示方法:
用一条垂直的线将活动分开 每个泳道都有一个唯一的名称 每个活动节点、分支必须只属 于一个泳道;而转换,分叉与 汇合是可以跨泳道的。
状态机图(State machine Diagram)
状态(state):
定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下
理解
状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所 处的状态不同,做出的反应也不同
细化状态内的活动与转换
状态图(航班预订3)
使用复合状态
课堂练习
绘制电脑工作时的状态转换图
课堂练习
绘制手机工作时的状态转换图
课堂练习(电梯系统的状态图)
电梯开始处于空闲状态(idle),当有人按下按钮要求使用电梯时 (事件is required发生),电梯进入运行状态(run)。如果电梯的 当前楼层比想要的楼层高时(监护条件[currentFloor>desiredFloor] 成立),电梯进入下降状态(moving down);反之,如果电梯的当 前楼层比想要的楼层低时(监护条件[currentFloor<desiredFloor] 成立),电梯进入上升状态(moving up);如果电梯的当前楼层与 想要的楼层相同时(监护条件[currentFloor=desiredFloor]成立), 电梯门打开(door open)。在电梯上升或下降期间,每经过一个楼 层就判断监护条件[currentFloor=desiredFloor]是否成立,若不成 立,继续移动,若成立,就进入停止状态(stop),15秒后,电梯门 自动打开(door open),2分钟后,电梯门自动关上(door close), 如果有更多的电梯使用要求,进入运行状态(run),反之,则进入 空闲状态(idle)。

UML图详解(八)——状态机(状态图和活动图)

UML图详解(八)——状态机(状态图和活动图)

UML图详解(⼋)——状态机(状态图和活动图)⼀、概念状态图和活动图是状态机的两种表现形式。

利⽤状态机可以精确地描述对象的⾏为。

从对象的初始状态起,开始响应事件并执⾏某些动作,这些事件引起状态的转换;对象在新状态下⼜开始响应事件和执⾏动作,如此连续进⾏直到终结状态。

⼆、状态图状态图(State Diagram)=状态(State)+迁移(Transition)⼀个状态图描述⼀个状态机。

状态图表现从⼀个状态到另⼀个状态的控制流。

<1>状态图的语法1>除了状态中的初始状态(实⼼圆)和终⽌状态(⽜眼形状),其它状态⽤⼀个圆⾓矩形表⽰转换表⽰状态间可能的路径,⽤箭头表⽰事件/动作写在由它们触发引起的转换上<2>状态2>状态⼀般是给定类对象中的⼀组属性值,在其所在的上下⽂中应该唯⼀,但可以匿名。

在对系统建模时,我们可以只关⼼那些明显影响对象⾏为的属性以及由他们表达的对象状态,⽽不⽤理睬那些于对象⾏为⽆关的状态。

表⽰⽅式:状态由⼀个带圆⾓的矩形表⽰。

应⽤标签标⽰状态的内部活动。

语法:标签/活动表达式UML提供的标签:1. entry:当进⼊⼀个状态的时候被⾃动触发,该活动在状态中其它任何活动之前被⾃动触发。

2. do:当状态处于激活时执⾏do活动,do活动在进⼊活动之后执⾏,并且⼀直运⾏到它本⾝完成为⽌。

3. exit:当离开⼀个状态的时候被⾃动触发,该活动在该状态结束之前、所有其它活动都完成后被触发。

状态可以嵌套状态图,此时状态称为组成状态,否则为简单状态。

⼊⼝事件表⽰⼀个⼊⼝的动作序列,它在进⼊状态时执⾏。

⼊⼝事件的动作是原⼦的,并且先于⼈和内部活动或转换。

出⼝事件表⽰⼀个出⼝的动作序列,它在退出状态时执⾏。

出⼝事件也是原⼦的,它跟在所有的内部活动之后,但是先于所有的出⼝转换。

1. 简单状态(Simple State)2. 复合状态(Composite State)复合状态可以有多组状态图,每组⽤虚线分割开来。

状态图与活动

状态图与活动
01
活动图的应用-工作流建模
01
02
03
分析用例。能直观清晰地分析用例,了解应当采取哪些动作以及这些动作之间的依赖关系。一张完整的活动图是所有用例的集成图。
理解牵涉多个用例的工作流。在难于区分不同用例而对整个系统的工作过程又十分清楚时,可以先构造活动图,然后用切片技术派生用例图。
处理多线程应用。采用“分层抽象,逐步细化”的原则描述多线程。
动作
动作是一个可执行的原子计算,即动作是不可被中断的,其执行时间是可忽略不计的
进入动作和退出动作的例子: Entry/setMode(onTrack) Exit/setMode(offTrack)
01
02
03
04
05
状态图的基本概念、用途
状态图的图形元素
状态的定义及分类
组合状态的分类
事件、事件的分类、动作
3
一个状态图表现了一个对象的生存史,着重描述从一个状态到另一个状态的控制流
什么是状态图
状态图:一部电梯的运行方式
状态图的图形元素
状态:用一个带圆角的矩形框表示,可以进一步划分为3个分隔框:名称框、内部转移框和嵌套状态图框 名称框:标出状态的名称 内部转移框:规定动作或活动, 但不改变对象的当前状态 嵌套状态图:放置被嵌套的子状态图
理解工作流程
对理解业务处理过程十分有用,可以画出描述业务工作流的活动图与领域专家进行交流,明确业务处理操作是如何进行的,将会有怎样的变化
处理多线程应用
利用活动图支持并发的特点,描述多线程应用的行为
分析Use Case
描述复杂过程的算法
此时相当于UML版的程序流程图,常规的顺序、分支过程在活动图中都能得到充分体现
何时可使用活动图

活动图状态图

活动图状态图
返回值、创建和销毁对象等。动作可以是一个动作序列,即一系列简单的动作的组合。动作 是原子的,不可中断的,动作或动作序列的执行不会被同事发生的其他动作影响或终止。动 作的执行事件非常短,与外界事件所经历的时间相比是可以忽略的。因此,在动作的执行过 程中不能再插入其他事件 动作种类:赋值、调用、创建、销毁、返回、发送、中止
7.时间事件 时间事件代表时间的流逝.时间事件既可以被指定为绝对形式(天数),也可以被指定为相对形 时间事件: 时间事件
式(从某一指定事件发生开始所经历的时间),它可以描述一个通知信息,从进入状态来某个 时间期限到达,就激发状态的转换.
8.延迟事件 延迟事件是在本状态不处理,要推迟到另外一个状态才处理的事件. 延迟事件: 延迟事件
状态图建模技术
状态图一般用于对系统中的某些对象,比如类、用例和系统的行为建模。 建模时候要找出对象所处的状态、触发状态改变的动作,以及对象状态 改变时应执行的动作。 建模步骤: 1.找出适合用模型描述其行为的类 2.确定对象可能存在的状态 3.确定引起状态转换的事件 4.确定转换进行时对象执行的相应动作 5.对建模的结果进行相应的精化和细化
转换
转换表示当一个特定事件发生或者某 些条件得到满足时,一个源状态下 些条件得到满足时 一个源状态下 的 对象在完成一定的动作后将发生状态 转变,转向另一个称为目标状态的 转变 转向另一个称为目标状态的 状 当发生转换时,转换进入的状态为活 态.当发生转换时 转换进入的状态为活 当发生转换时 动状态,转换离开的状态变为非活 动状态 转换离开的状态变为非活 动状态. 转换通常分为:外部 内部、 外部、 动状态 转换通常分为 外部、内部、 完成、复合。转换一般包括信息: 完成、复合。转换一般包括信息: 源状态、目标状态、触发事件、 源状态、目标状态、触发事件、监护 事件、动作。 事件、动作。

第6章 状态机图

第6章 状态机图

14
例1:子状态之间“or”关系的例子。
例2:子状态之间“and”关系的例子。
15
History State(历史状态)


History State: A pseudostate whose activation restores the previously active state within a composite state. 使用历史状态,可以记住从组合状态中退出时 所处的子状态,当再次进入组合状态时,可直 接进入到这个子状态,而不是再次从组合状态 的初态开始。
7
状态(State)


定义:A state is a condition or situation during the life of an object during which it satisfies some condition, performs some activity, or waits for some event. 一个状态是指在对象的生命期中的一个条件或 状况,在此期间对象将满足某些条件、执行某 些活动或等待某些事件。
22


说明: 在UML中,事件分为四类: (1) Call event (调用事件) (2) Change event (变化事件) (3) Time event (时间事件) (4) Signal event (信号事件)
23
(1) Call event: The event of receiving a call for an operation that is implemented by actions on state machine transitions. Call event的语法格式如下: 事件名 ( [逗号分隔的参数列表] ) 其中参数列表中的参数格式为: 参数名:类型 例:

第6章状态图和活动图-活动图

第6章状态图和活动图-活动图

14
7 信号发送和接收
• 发送信号与接收信号
15
8 引脚
Pin
• 是一个对象节点,代表活动连接输入、输出值 的连接点 • 用来标明每个活动节点所需输入的数据或者所 产生的数据(建模业务流时则可表示产生或者 消耗的资源)
16
8 引脚
• 对fibonacci函数值的计算过程建模
17
8 引脚
• 简化后的,看起来更简洁
28
1 工作流建模
• 用于业务建模的时候,每一条泳道表示一个职责 单位,该图能够有效地体现出所有职责单位之间 的工作职责,业务范围及之间的交互关系、信息 流程 • 建模策略:
– 为工作流建立一个焦点,除非你所涉及的系统很小, 否则不可能在一张图中显示出系统中所有的控制流 – 选择对全部工作流中的一部分有高层职责的业务对象, 并为每个重要的业务对象创建一条泳道
– 交互图强调的是对象到对象的控制流,而活动图则 强调的是从活动到活动的控制流 – 活动图是一种表述过程基理、业务过程以及工作流 的技术。它可以用来对业务过程、工作流建模,也 可以对用例实现甚至是程序实现来建模
2
6.2.1 什么是活动图
1. 活动图的概念
活动图(activity diagram)是UML的动态视图之一,用 来描述事物或对象的活动变化流程。
24
1. 描述工作流
订货处理活动图
25
2. 描述工程组织过程
建筑工程过程活动图
26
3. 描述算法流程
27
6.2.4 绘制活动图
• 绘制时首先决定是否采用泳道:主要根据活动图中是否 要体现出活动的不同实施者 • 然后尽量使用分支、分岔和汇合等基本的建模元素描述 活动控制流程

UML(六)状态机状态图

UML(六)状态机状态图

AM will keep each application’s state:
CREATED
/ Termination
Application has these stable states: Created Initialized
INITIALIZED ACTIVATED
/ Termination
Activated Focused
个状态机建模,如:对象的创建、撤销
➢ 建模准则:
建模具有复杂行为并依赖于状态的对象而不是建模跟状态无关的对象 如电话对于按下某个按钮的反应,依赖于手机当前的状态
在过程控制、设备控制、协议处理和通信领域等,通常有许多的依赖于 状态的对象。
5
1. 基本概念
➢ 使用交互图建模共同工作的 对象群体的 行为
转移/迁移(transition): 是两个状态之间的一种关系。它指明对象 在某个状态中执行一定的动作,并当特定事件发生或特定的条件满足 时进入下一个状态。
1. 基本概念
➢ UML 状态的的图形表示 圆角 的矩形 初态、终态 转态迁移:带箭头的线
➢ 迁移的文字标记的格式如下:
触发事件[触发条件]/变迁动作 迁移的文字标记的三个部分以及文字标记本身都是可以省略的
➢ 课本p257, 图25-2,
该机器被设计成能分析与语法相匹配的字符流: ‘<‘ string ‘>’ string ’;’ (Note: <标记串> 消息体;)
代码生成
➢ class MessageParser {
public boolean put(char c) { switch (state) { case Waiting: if (c == '<') { state = GettingToken; token = new StringBuffer(); body = new StringBuffer(); } break; case GettingToken : if (c == '>') state = GettingBody; else token.append(c); break; case GettingBody : 。。。

UML学习复习状态图

UML学习复习状态图

2. 并发子状态
有时组合状态有两个或者多个并发的子 状态机,此时称组成状态的子状态为并 发子状态。
顺序子状态与并发子状态的区别在于后 者在同一层次给出两个或多个顺序子状 态,对象处于同一层次中来自每个并发 子状态的一个时序状态中。
说明:
组合状态中也有初始状态和终结状态。
从源状态可以转移到组合状态本身,也 可以直接转移到组合状态中的子状态。
如果一个内部转换带有动作,动作也要 被执行,但是由于没有状态改变发生, 因此不需要执行入口和出口动作。
内部转换和自转换不同,虽然两者都不 改变状态本身,但是自转换会激发入口 动作和出口动作的执行,而内部转换却 不会。
3.4 入口动作与出口动作
入口动作和出口动作表示进入或退出这 个状态所要执行的动作。
监护条件与修改事件的区别:
监护条件只是在引起转换的触发器事件触 发时和事件接收者对事件进行处理时被赋 值一次。
修改事件则可以被多次赋值直到条件为真, 多次赋值满足条件后转换也会被激发。
4.7 时间事件
时间事件代表时间的流逝。 时间事件既可以被指定为绝对形式(天
数),也可以被指定为相对形式(从某 一指定事件发生开始所经历的时间)。 时间事件可以描述一个通知信息,自进 入状态以来某个时间期限已到,时间事 件就会激发状态的转换
状态图
1 状态机 2 状态图 3 状态 4 事件 5 转换 6 状态图建模技术 7 实例——图书馆管理系统的状态图
1 状态机
状态机是展示状态与状态转换的图,包含了一 个类的对象在其生命期间所有状态的序列以及 对象对接受到的事件所产生的反应。
利用状态机可以精确地描述对象的行为。 UML用状态机对软件系统的动态特征建模。 组成:
说明:

状态机图优选全文

状态机图优选全文
注:当事件有多个动作发生时,它们之间用,隔开。如: entry/Initial(),Check(),UpdateCheck()
4 组合状态
4.1 组合状态
--把若干个状态组织在一起可构成一个组合状态;组合状态内 所包含的状态称为该组合状态的子状态。把内容不包含其他 状态的状态称为简单状态。
--组合状态中包含的子状态可以是顺序子状态,也可以是并发 的子状态。
– 1) On Event
• Event:对一个在时间和空间 上占有一定位置的有意义事 情的规格说明
• Arguments:由所有与事件相 关的可选参量组成
• Condition:可能包含一个条 件布尔表达式
7 转换规范
7.1 General标签
7.2 Detail标签
• 监护条件(Guard Condition)
1 基本概念
1.2 状态Βιβλιοθήκη 模--通过分析系统(或者其构成元素)的状态以及它们之 间的转移,并以状态、转移等概念来建立系统模型称 为状态建模。
1 基本概念
1.3 状态机图
– 状态机图描述了一个对象在其生命周期内所经 历的各种状态,状态之间的转移,发生转移的 动因、条件以及转移中所执行的活动。
图书状态机图
借阅者状态机图
5 状态规范
– 状态(起始状态和终止状 态)和活动的规范窗口都 包含下列标签:
• General标签 • Actions标签 • Transitions标签 • Swimlanes标签
– 1) General标签
• 复选标记State/activity history:状态/活动历史, 历史提供了一种通过子 状态直接转换到最近访 问过的状态的机制。
– 图形表示:

教学课件PPT状态图和活动图

教学课件PPT状态图和活动图

3
UML理论与实践
状态
状态由状态名、状态变量和活动三部分组成。 状态变量是状态图所显示的类的属性,也可以是临时变量。 活动部分列出了处于该状态时要执行的事件和动作。有3 个标准事件: entry事件用于指明进入该状态时的特定动作。
exit事件用于指明退出该状态时的特定动作。
do事件用于指明在该状态中时执行的动作。
24
UML理论与实践
H和H*的区别:
H只记住最外层的组合状态的历史。 H*可记住任何深度的组合状态的历史。
例:历史状态的例子。
25
UML理论与实践
状态图的工具支持
正向工程:根据状态图生成代码。例:
所生成的代码示例:
26 UML理论与实践
class MessageParser { public boolean put(char c) { switch (state) { case Waiting: if (c == '<') { state = GettingToken; token = new StringBuffer(); body = new StringBuffer(); } break; case GettingToken : if (c == '>') state = GettingBody; else token.append(c); break; case GettingBody : if (c == ';') { state = Waiting; return true; }
[change = 0]
[change > 0]
自动售货机 状态图
9 UML理论与实践
Do:dispense item

状态图和活动图

状态图和活动图

作业3 状态图和活动图相关练习
练习一:
➢问题描述:为简易微波炉(只有一个按钮)建模状态图
➢此系统状态图如下:
练习二:
➢问题描述:建立手机的状态图(空闲、拨号、响铃、通话中)
➢此系统状态图如下:
练习三:
➢问题描述:一个销售系统,对其中的实体sale类创建一个状态图,用来描述如何接受订单、处理订单、记入货存清单并且成功完成处理。

这里给出以下主要状态:
(ReceivedEmptyOrder、ValidOrder、Processing、Processed、Cancelled)
➢此系统状态图如下:
练习四:
➢问题描述:针对简易电梯,建立状态图➢此系统状态图如下:
练习五:
➢问题描述:根据下图的图书馆管理系统还书用例建模该用例的活动图。

➢此系统活动图如下:
练习六:
➢问题描述:建立顾客在银行“开户”的活动图
➢此系统活动图如下:
练习七:
➢问题描述:建立仓库管理员“进货”的活动图(运用对象流技术)➢此系统活动图如下:
练习八:
➢问题描述:画出顾客进入商店买东西的活动图➢此系统活动图如下:。

6.状态机图(状态 活动)汇总

6.状态机图(状态 活动)汇总
状态机图(State machine Diagram)
状态(state):
定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下
理解
状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所 处的状态不同,做出的反应也不同
状态机图(State machine Diagram)
状态机(state machine):
一种逻辑上的流程机 用于描述一个对象在其生命周期中的动态行为 表现对象响应事件所经历的状态序列以及伴随的动作
状态图和活动图用于描述一个状态机(状态机图)
活动图强调了从活动到活动的控制流 状态图强调了从状态到状态的转换
1.初态和终态
初态(Start state)
显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从 相同的地方开始的。如果一个状态机用多张图描述, 则多张图用同一个初态 嵌套状态中可以使用新的初态
终态(End State)
表示一个最后的或者终端状态 终态的数目可以不确定
2.中间状态
绘制状态机图的步骤
寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节
状态图(购物网站)
当从状态“结账”和“显示购物车”返回子状态“显示索 引信息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍保留原来的信息。
事件使对象从一个状态转向另一个状态当面对所检测到的事件或所接收到的消息时对象所处的状态不同做出的反应也不同状态机图statemachinediagramstatemachine一种逻辑上的流程机用于描述一个对象在其生命周期中的动态行为表现对象响应事件所经历的状态序列以及伴随的动作状态机图活动图强调了从活动到活动的控制流状态图强调了从状态到状态的转换状态图描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移状态图节点是状态

第六章状态图和活动图

第六章状态图和活动图
(其中 action-expression 可以用到对象本身的属性 和输入事件的参数)
• 例如; entry/setMode(onTrack) exit/setMode(offTrack)
31
绘制状态图
• • • • 寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用组合状态来展开细节
14
说明: • 组合状态中也有初始状态和终结状态。 • 从源状态可以转移到组合状态本身,也 可以直接转移到组合状态中的子状态。 • 子状态之间可分为“or”关系和“and”关 系两种。“or”关系说明在某一时刻仅可 到达一个子状态,“and”关系说明复合 状态中在某一时刻可同时到达多个子状 态。
15
32
寻找主要的状态,确定之间的转换
33
细化状态内的活动与转换
34
使用组合状态
35
课程注册系统中的状态图例子
36
类型为RegistrationController的对象的状态图:
37
订单处理系统的例子
38
使用组合状态
39
状态图的工具支持
• 正向工程:根据状态图生成代码。逆向向 工程:理论上可行,但实际上不大可能。 • 所生成的代码示例:
3
状态图的用途
• UML的状态图主要用于:
– 建立一个对象在其生存期间的动态行为 – 表现一个对象所经历的状态序列 – 引起状态转移的事件 – 以及因状态转移而伴随的动作
4
• 状态是对象的一组属性值,这组属性对所发生的 事件具有相同性质的反应。 • 状态图所描述的对象往往具有多个属性,一般状 态图应该在具有以下两个特性的基础上建模:
Signal(信号)
• 所谓信号,是指由一个对象异步地发送、并由 另外一个对象接收的一个已命名的对象。 • 信号是作为对象之间的通信的信息块的规范。 信号是一个显式命名的类元,其目标是对象之 间进行显示通讯,它有一些属性,构成它的信 息。通过一个发送动作,它被显式地从一个对 象发送到另一个对象。 • 信号事件表示对象接收到某个信号。 • 信号可以作为状态机中一个状态转换的动作而 被发送,也可作为交互中一个的消息发送。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
细化状态内的活动与转换
状态图(航班预订3)
使用复合状态
课堂练习
绘制电脑工作时的状态转换图
课堂练习
绘制手机工作时的状态转换图
课堂练习(电梯系统的状态图)
电梯开始处于空闲状态(idle),当有人按下按钮要求使用电梯时 (事件is required发生),电梯进入运行状态(run)。如果电梯的 当前楼层比想要的楼层高时(监护条件[currentFloor>desiredFloor] 成立),电梯进入下降状态(moving down);反之,如果电梯的当 前楼层比想要的楼层低时(监护条件[currentFloor<desiredFloor] 成立),电梯进入上升状态(moving up);如果电梯的当前楼层与 想要的楼层相同时(监护条件[currentFloor=desiredFloor]成立), 电梯门打开(door open)。在电梯上升或下降期间,每经过一个楼 层就判断监护条件[currentFloor=desiredFloor]是否成立,若不成 立,继续移动,若成立,就进入停止状态(stop),15秒后,电梯门 自动打开(door open),2分钟后,电梯门自动关上(door close), 如果有更多的电梯使用要求,进入运行状态(run),反之,则进入 空闲状态(idle)。
绘制状态机图的步骤
寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节
状态图(购物网站)
当从状态“结账”和“显示购物车”返回子状态“显示索 引信息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍保留原来的信息。
时间事件
当时间流逝到某个时刻,触发事件对对象起作用 它可以指定为绝对形式,也可以指定为相对形式。
其他事件
延迟事件(Deferred event)
延迟到下一状态中处理的事件 是一种特殊的事件,它是指该事件不会触发状态的 转换,当对象处于该状态时事件不会丢失,但会被 延迟执行 例如,当E-mail程序中正在发送第一封邮件时,用 户下达发送第二封邮件执令就会被延迟,但第一封 邮件发送完成后,这封邮件就会被发送。这种事件 就属于延迟事件
调用事件
调用某个对象的成员方法就是调用事件,它是一种同 步的机制。 例如:在烧水器的状态图中,turnOn就是一种调用事 件,用来将开关置于“On”状态。
触发事件的四种类型
改变事件
某个指定属性值为真时,事件得到触发。 在对象生命周期内,一直在计算改变事件中的属性值。 当属性值为真时,事件触发,计算停止 例如:when(temperature>100)/alerm()
示例(同步)
商品打包与付款两 个活动是并行的 即:这两个活动的 执行顺序是任意的
可以先后进行 可以同时交叉进行
泳道
泳道技术:
将活动用线条分成 一些纵向的矩形, 每个矩形属于一个 特定的对象或部门 对象的名字放在泳 道的顶部 属于该对象的所有 活动都被放在泳道 的区域内
绘制顺序
方法一:
先确定参与活动的对象 然后分析在整个过程中每个对象的活动
活动图的应用:
描述类的操作 描述用例的执行过程
活动图的缺点:
难以清楚地表示对象和动作之间的关系
活动图(Activity Diagram)
与状态图的区别
状态图
由某个对象的状 态序列组成,以 状态为中心
Hale Waihona Puke 活动图由某个过程中若 干对象的活动序 列组成,以活动 为中心
活动图(Activity Diagram)
条件互斥
注意:分支的每个路径的监护 条件应该是互斥的,因此只有 一条路径的转换会被激发
分支的表示
分支与合并(决策)
合并:两个或者多个控 制路径在此汇合的情况, 表示从对应分支开始的 条件行为的结束 合并和分支都使用菱形 表示,且常常成对使用 省略表示分支与合并的 菱形不会丢失任何信息
分叉与汇合(同步)
状态机图(State machine Diagram)
状态(state):
定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下
理解
状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所 处的状态不同,做出的反应也不同
转换类型
状态图应用
为对象生命周期建模:
主要描述对象能够响应的事件、对这些事件的 响应以及过去对当前行为的影响
为反应型对象建模:
这个对象可能处于的稳定状态、从一个状态到 另一个状态之间的转换所需的触发事件,以及 每个状态改变时发生的动作
状态机图既可以用来表示一个业务领域的 知识,也可以用来描述设计阶段对象的状 态变迁
嵌套在另外一个状态中的状态
2.中间状态
4)子状态(Substate)
嵌套在另外一个状态中的状态
3.组合状态(composite state)
含有子状态的状态被称为组合状态
1.顺序组合状态图 2.并发组合状态图
顺序组合状态图
并发组合状态图
在UML2.0中已经废弃了同步状态
4.历史状态(History state)
状态图
状态图的作用
描述一个特定对象的所有可能状态 以及由于各种事件的发生,而引起的状态间的 转移
状态图
状态图的组成
节点是状态:包括初始状态和终止状态,用圆 角矩形表示 关系是转换(或转移):用状态之间包含一些 文字描述的有向箭头线表示
状态
状态的几种类型
1.初态和终态 2.中间状态 3.组合状态 4.历史状态
智能水壶的状态图
打开[有水]/烧水:
打开:触发事件 有水:监护条件 烧水:动作
信用卡状态图
无触发转移
定义:
状态转移不是因为某个事件触发引起的 而是由于对象完成了某些活动,而引起的状态 的转变
触发事件的四种类型
信号事件
对象之间通过发送信号和接收信号实现通信 信号是两个对象之间通信的媒介,它是一种异步机制 在计算机中,鼠标和键盘的操作均属于此类事件 对于一个信号而言,对象一般都有相应的事件处理器, 如onMouseClick()等
课堂练习
一个咨询公司会见新客户时的业务过程:
1、公司业务员打电话给客户确定一个约定 2、如果约定地点是在公司之内,那么公司中的技术人员 就要为会面准备一间会议室 3、如果约定地点是公司之外,那么咨询顾问就要用膝上 电脑准备一份陈述报告 4、咨询顾问与顾客在约定的时间和地点见面 5、业务员随后给他们准备好会议用纸 6、如果会议产生了一个问题陈述,咨询顾问就根据问题 陈述建立一个提案并把该提案发给客户。
组成元素
活动节点
起点和终点(即 初态和终态) 中间活动节点
转换流程
转换 分支与合并 分叉与汇合
活动节点
活动节点是活动图中最主要的元素之一,用来表 示工作过程中的一个(或多个)工作步骤 表示方法:用一个圆角矩形表示,活动的名称写 在圆角矩形内部
活动节点的表示
活动节点
动作状态:原子性的动作或操 作的执行状态,不能被外部事 件的转换中断 活动状态:非原子性的,可以 分解成其他子活动或动作状态, 可以从外部中断。可以在图标 中给出入口动作和出口动作等 信息 组合活动:一种内嵌活动图的 状态,用于表示复杂的活动
1.初态和终态
初态(Start state)
显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从 相同的地方开始的。如果一个状态机用多张图描述, 则多张图用同一个初态 嵌套状态中可以使用新的初态
终态(End State)
表示一个最后的或者终端状态 终态的数目可以不确定
2.中间状态
分叉与汇合:
都用来表示并发执行的活动 分叉线和汇合线(同步线):都使用加粗的水平线或 垂直线段表示
分叉:
一个进入转换,多个离去转换 表明系统从单一的过程变为过个并发的过程
分叉与汇合(同步)
汇合:
多个进入转换,一个离去转换 表示系统将结束多个并发过程,再次进入单一的过程 注意:当且仅当所有的并发分支都到达汇合点后,活 动流程才能进入下一个活动节点
状态图(CD播放机)
状态图(智能卡系统)
阅读状态图
状态图(订单处理1)
订单处理
办理发货之前需要检查商品,查看是否齐全。 如果缺部分商品,则进入等待状态(直至商品 齐全) 货品发出之前,任何时候都可以取消订单
状态图(订单处理2)
状态图(订单处理3)
状态图(航班预订1)
状态图(航班预订2)
转换(State Transition)
作用:当一个活动结束时,活动控制流马上 转向下一个活动节点 表示方法:一条带箭头的直线
转换的表示
分支与合并(决策)
程序控制流的三种基本结构: 顺序、分支、循环 分支:
用于将一条转换路径分成多个部 分,每一部分都有单独的监护条 件和不同的结果 当动作流遇到分支时,会根据监 护条件的真假来判定动作的流向
状态机图(State machine Diagram)
状态机(state machine):
一种逻辑上的流程机 用于描述一个对象在其生命周期中的动态行为 表现对象响应事件所经历的状态序列以及伴随的动作
状态图和活动图用于描述一个状态机(状态机图)
活动图强调了从活动到活动的控制流 状态图强调了从状态到状态的转换
活动图(Activity Diagram)
概念:
由活动节点和转换流 程构成的状态机图
作用:
描述系统或业务的活 动序列构成的控制流 用来描述事物或对象 的活动变化流程 为系统或业务工作流 程和用例实现建模
相关文档
最新文档