状态图

合集下载

UML状态图课件

UML状态图课件
终止状态在一个状态图中可以有多个,它 用一个套有一个实心圆的空心圆表示。
5 判定
判定在状态图中的位置:工作流在此处按 监护条件的取值而发生分支。
判定用空心小菱形表示。
因为监护条件为布尔表达式,所以通常条 件下的判定只有一个入转换和两个出转换。
根据监护条件的真假可以触发不同的分支 转换。
然而处于不同状态下的对象会通过不同的 动作对同一事件做出不同的反应。
示意图:
状态图
1 状态
状态由一个带圆角的 矩形表示。
状态图标可以分为: ① 名称 ② 内部转换
名称
entry/ exit/
2 转换
转换用带箭头的直线表示,一端连接源状态即转 出的状态,箭头一端连接目标状态即转入的状态。
如图所示:
准备
常见的三个活动是:
entry/ 进入教室 do/ 打开投影 exit/ 宣布上课
1、入口动作(entry ) :进入某一状态时执行的动作。
2、动作(do):系统处于该状态时要发生的动作。
3、出口动作 (exit ):离开某一状态时执行的动作 。
子状态(substate)
某些状态存在于另一个状态之中,因此它们被称为 子状态。子状态以两种形式出现:顺序子状态和并 发子状态。
状态图
讲授内容
状态图基本表示 状态、事件、转移、活
动 状态图练习 状态图知识点小节
什么是状态图
按电灯的开关时,电灯改变了它的状态 按遥控器的调频按钮时,电视机的状态由显
示一个频道的节目变为显示另一个频道的节 目 经过一段时间,洗衣机由洗涤变为漂洗状态 夏天树叶绿了,秋天变黄了 如何表示这些变化呢?
作业
自学历史状态

3.系统分析-状态图

3.系统分析-状态图

迁移
状态:进入动作
有人制定时刻表,确定是否 包含这个航班。
状态:活动
2. 如果计划批准,则航班转入 Scheduled状态。航班时刻表
发布到Internet上
迁移:保证条件
3. 离起飞时间小于60天,该航
状态
班开始开始售票,进入Open
状态
4. 可以从航班中 增加和删除旅 客,但售出最后一张票,航 班就满了。如果有人退票, 则再次开始售票
batteryEmpty
batteryEmpty
DeadBattery
Fi n a l
2020/4/2
上海理工大学
8
6.活动
一个状态可关联到一个活动,该活动的执行与驻
留在这一状态上的对象的生命周期一样长
动作与活动的区别:动作的执行时间短且不可中
断,而一个活动的执行需要一段时间且其执行是 可以中断的,其中断的时机就是该状态的一个迁 移被时
2020/4/2
上海理工大学
27
9. 建模技巧/10
选择点的命名:在选择点处的回答问题的命名要采用描
述性的方法例如,‘isThereStillLife’或者 'isItTimeToComplain'
选择点名字是唯一的:对任何对象,尽力保证选择点的
名字是唯一的 (同样,保持转换的名字是唯一的)
转换的表达不能过长:如果过长,需要考虑用函数,或
MeasureTime
pressBothButtons 2分钟
Initial
SetTime
batteryEmpty
batteryEmpty
DeadBattery
Fi n a l
2020/4/2

状态图

状态图

状态图:用于描述一个对象,再其生存期间的动态行为,表现一个对象多经历的状态序列,引起状态迁移的事件,以及状态转译而伴随的动作。

状态(state):对象生命周期中的一个条件或状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件。

子状态:嵌套在另外一个状态中的状态(如:NewState2,NewState3)组合状态:一个含有子状态的的状态(如:NewState)子状态之间的关系:(1)or关系:在某一时刻仅可达到一个字状态(2)and关系:组合状态中在某一时刻可同时达到多个子状态历史状态(history state):一个伪状态,记住从组合状态中退出时所处的子状态。

当再次进入组合状态时,可直接进入这个状态,而不是再次从组合状态的初始状态(需要负荷状态选择State/activitu history 选项)转移:对象将在第一个状态中执行一定的动作,并在某一个特定事件发生而且某个特定的警戒条件满足是进入第二个状态描述转移的格式:<事件特征标记> [<警戒条件>] / <动作>事件(enent):在一个时间和空间上占有一定位置的有意义的事情的详细说明调用事件(call event):调用事件表示的是对操作的调度格式:<事件名>(<逗号分隔的参数列表>)变化事件(change event):如果一个布尔表达式中的变量发生变化,使得布尔表达式的值相应的变化,从而满足某些条件(关键词when表示)时间事件(time event):妈祖某一时间表达式的情况的出现(关键词after、when)信号事件(signal event):对象接收到了信号,该信号触发状态的迁移后面的内容不是太重要:创建历史状态ss。

状态图

状态图

状态图与活动图的区别:
状态图只建模一个对象的行为,活动图可以建模多个 对象的活动 活动图中也允许建模特定活动中对象的某个状态
基本组成
状态 转换 事件、动作
基本组成(例如刷pos机)
状态
什么是状态(state)
对象生命期中的某个条件或状况,在此期间对象将满足 某些条件、执行某些活动或等待某些事件。
6、入口点和出口点
入口点
状态内的一个外部可见的伪状态,外部转换可以将它作 为目标,从而被有效连接到指定状态上。
出口点
状态内的一个外部可见的伪状态,外部转换可以将它作 为源,代表状态内的一个终点。
转换
Transition
两个状态之间的一种关系,表示对象在第一个状态中执 行一定的动作,并在某个特定事件发生而且满足某个条 件时进入第二个状态。每个转换只允许一个事件,一个 事件只允许一个动作
信号可以作为状态中一个状态转换的动作而被发送, 也可作为交互中一个的消息发送。
1、信号事件
2、调用和变化事件
调用(call)事件
表示一个操作的调度。请求调用另一个对象的操作。 一般是同步调用。
变化(change)事件
用关键字When,后面跟布尔表达式。 When(temperature > 120) / alerm()
用途
对对象生命周期建模:
主要描述对象能够响应的事件、对这些事件的影响以及过去对当 前行为的影响
对反应型对象建模:
这个对象可能处于的稳定状态、从一个状态到另一个状态之间 的转换所需的触发事件,以及每个状态改变时发生的动作
状态图既可以用来表示一个业务领域的知识,也可以 用来描述设计阶段对象的状态变迁
状态图应用
一种伪状态。可以存储退出组合状态时所处的子状态,

状态图和顺序图

状态图和顺序图
的。 • 交互图中大量的消息是异步消息。 • 异步消息的接收者必须是一个主动对象。
27
异步方式
• 异步方式的时间问题。 • 因为供应商不需要等待
销售商(存储价格)的处 理所以节省了2秒钟时 间。
28
异步方式
• 在许多情况下客户端 与服务器联系后,并 不需要等待应答或不 需要立即应答。
• 客户建立异步联系后 (只需建立对异步回 答的监听)可以做自 已另外的事情。
receiveSoda(selection)
用例“买饮料”的最理想场景建模的顺序图31
饮料销售机
:Customer
:Front
:Register
:Dispenser
accept(cash,selection) getCustomerInput(cash,selection) checkAvailability(selection) Sold Out
状态图
(state diagram) 主要内容:
• 1 什么是状态图,如何使用 • 2 如何使用事件、动作和保护条件
1
状态图的应用概念
• 行为元素:能够展示UML模型如何随时 间变化。
• 状态图:对象生命周期中各个时期的状 态以及引起变化的事件。
捕获系统动态行为(面向事件的)
2
状态图的应用概念
• 对于一个在一段时间内连续运行的软件 系统,一定是由许多对象在不断地交互, 在交互过程中只有对象在不断改变状态 其交互才具有意义,并且对用户具有价 值。
updateReserve(cash,selection)
releaseSoda(selection) receiveSoda(selection)
饮料销售机的一般顺序图(部分) 34

3.系统分析-状态图

3.系统分析-状态图

2020/5/25
上海理工大学
24
9. 建模技巧/7
一致性命名。给状态机中的每一个状态和转换一个
唯一的名字;这将使源代码级的调试更容易
小心使用状态变量 (控制行为的属性)
2020/5/25
上海理工大学
25
9. 建模技巧/8
如果一个图上5 ± 2状态,考虑使用子状态。 一般而言,
在通常的情况下十个状态可能没有问题,但是两个状态 之间却有四十个转换肯定需要重新考虑。我们需要保证 状态图是容易理解的
第3讲 状态图
2020/5/25
上海理工大学
1
1 什么是状态图?
状态图描述了一个对象或交互过程在它的生命周期中对
一系列外界激励所呈现出的不同状态以及它相应的响应 和活动
状态机用状态和瞬时过程的变化图形来表示一个对象对
外界激励下的响应,状态机一般附着在一个对象或具体 的方法上
状态图描述了一个状态机,在我们考虑的范围内,它们
MeasureTime
pressBothButtons 2分钟
Initial
SetTime
batteryEmpty
batteryEmpty
DeadBattery
Fi n a l
2020/5/25
上海理工大学
6
5.动作
可以在状态内使用动作表示其行为 动作是选取一段输入且产生一组输出并最终可改
变系统的状态
的,比如说它只是简单的存储和获取数据,对象的行为 是状态不变的(state-invariant ),那么其状态机就没有 多少意义
对对象的生命周期的建模涉及到三件事情:
描述对象需要响应的事件
对这些事件的响应
过去对当前行为的影响

状态图与活动

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

第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的语法格式如下: 事件名 ( [逗号分隔的参数列表] ) 其中参数列表中的参数格式为: 参数名:类型 例:

第8章状态图和活动图课件

第8章状态图和活动图课件
▪ 终止状态只能作为转换的目标,而不能作 为转换的源。
▪ 终止状态在一个状态图中可以有多个。
初态和终态
▪ 一个状态图只能有一个初态,但可以有多 个终态或没有终态
组合状态
Idle 维护
插卡 取消
Maintenance
Active
Validating [继续]
Selecting
entry/ 读卡 exit/弹出卡
➢ 有些对象出现在很多顺序图中,在每个顺序图中都有 很多的箭头(消息)指向它,每条消息都是对该对象 发出的命令,这些命令可以引起对象的变化,即出现 在很多交互中并且是交互的目标的对象应该用状态图 来表示
➢ 例如,剧院的showSheat对象,用于显示剧院的座位 列表,该对象被创建的时机各种各样,如演出被安排 的时候、被客户选中的时候、用户取消座位时等。每 个时机创建该对象的规则都不同。
动作
contact
Tracking
Engaging
8.2.4 转换
警戒条件
➢ 警戒条件是触发转换必须满足的条件,它是一 个布尔表达式。
➢ 从一个状态引出的多个转换可以有同样的触发 器事件,但每个转换必须有不同的警戒条件。
转换组成: ① 源状态 ② 目标状态 ③ 触发事件 ④ 警戒条件 ⑤ 动作 转换种类: ① 外部转换 ② 内部转换 ③ 完成转换 ④ 复合转换
8.5 活动图的基本概念
活动图的组成元素:
① 活动(Activity) ② 动作流(Action Flow) ③ 分支(Branch)与合并(Merge) ④ 分叉(Fork)和汇合(Join) ⑤ 泳道(Swimlane) ⑥ 对象流(Object Flow)
8.1 什么是状态图
状态图主要用于描述一个对象在其生存期 间的动态行为,表现一个对象所经历的状 态序列,引起状态转移的事件,以及因状 态转移而伴随的动作。

状态图和活动图

状态图和活动图
活动图工具支持 正向:若表示工作流程,产生代码困难;若表示 具体算法产生代码容易。 逆向:对类的操作是可能的,从系统得到工作流 程困难。 Rose2003不支持。
34
制作 李文杰
8. 状态图和活动图的比较
状态图和活动图都是对系统动态行为建模,有共 同点又有区别。 1)两者描述的重点不同。状态图描述的是对象的 状态和状态之间的转移,活动图描述的是活动到活动 的控制流。 2)两者使用的场合不同。状态图用于显示一个对 象在其生命周期内的行为,活动图用于描述用例、涉 及多个用例的工作流程和多线程应用。 如果需要描述多个对象间的交互,应该用交互图 (顺序图或协作图)。
一般状态之间的转移是由事件触发的,因此在转移上应标出 事件;否则,表示在源状态的内部活动执行完毕后自动触发 转移。
15
制作 李文杰
2. 状态图中的基本概念
转移 转移格式:[event-signature][[guard-condition]][/ action] 事件特征标记格式:event-name(comma-separated-parameter-list)
put(c)[ c!='<' ] / return false Waiting put(c)[ c=='<' ]
状态图工具支持 正向:根据状态机理论来生成代码 (参考形式语言与自动机资料) 逆向:困难,手工 Rose2003不支持,Poseidon支持。
put( c )[ c!='>' ] / token.append(c);return false
[ temperature> =100 ]
汽体(蒸汽)
4
制作 李文杰
1. 状态图

4、状态图

4、状态图

4.4.5 调用事件
调用事件是一个对象对调用的接收。 调用事件至少涉及两个以上的对象。 调用事件既可以为同步调用,也可以为异 步调用。
4.4.6 修改事件
修改事件依靠特定属性值的布尔表达式所 表示的条件的满足来触发状态的转换。 修改事件表示了一种具有时间持续性的并 且可能是涉及全局的计算过程。
4.4 事件
事件表示在某一特定的时间或空间出现的 能够引发状态改变的一种运动变化。 事件是一个激励的出现,它定义一个触发 子以触发对象改变其状态,任何影响对象 的事物都可以是事件。
4.4 事件
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 事件种类: 入口事件 出口事件 动作事件 信号事件 调用事件 修改事件 时间事件 延迟事件
Maintaining The train stop
4.5.2 内部转换
内部转换有一个源状态但是没有目标状态,它转 换后的状态仍旧是它本身。 内部转换的激发规则和改变状态的外部转换的激 发规则相同。 内部转换用于对不改变状态的插入动作建立模型。
4.5.2 内部转换
内部转换和自转换(完成转换)不同: ① 自转换是离开本状态后重新进入该状态, 它会激发状态的入口动作和出口动作的执 行。 ② 内部转换自始至终都不离开本状态,所以 没有出口或入口事件,也就不执行入口和 出口动作。
4.4.6 修改事件
监护条件与修改事件的区别: ① 监护条件只是在引起转换的触发器事件触 发时和事件接收者对事件进行处理时被赋 值一次。 ② 修改事件则可以被多次赋值直到条件为真, 多次赋值满足条件后转换也会被激发。
4.4.7 时间事件
时间事件代表时间的流逝。 时间事件既可以被指定为绝对形式(天 数),也可以被指定为相对形式(从某一 指定事件发生开始所经历的时间)。 时间事件可以描述一个通知信息,自进入 状态以来某个时间期限已到,时间事件就 会激发状态的转换

UML建模之状态图(Statechart Diagram)

UML建模之状态图(Statechart Diagram)

状态图目录:一、状态图简介(Brief introduction)二、状态图元素(State Diagram Elements)1、状态(States)2、转移(Transitions)3、动作(State Actions)4、自身转移(Self-Transitions)5、组合状态(Compound States)6、进入节点(Entry Point)7、退出节点(Exit Point)8、历史状态(History States)9、并发区域(Concurrent Regions)三、状态图案例分析(State Diagram Example Analysis)四、总结(Summary)一、状态图简介(Brief introduction)状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。

一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。

如下图例子,状态机描述了门对象的生存期间的状态序列,引起转移的事件,以及因状态转移而伴随的动作(Action).状态有Opened、Closed、Locked。

事件有Open、Close、Lock和Unlock。

注意:1、并不是所有的事件都会引起状态的转移,比如当门是处于【Opened】状态,不能进行【Lock】事件。

2、转移(Transition)有警备条件(guard condition),比如只有doorWay->isEmpty 条件满足时,才会响应事件。

二、状态图元素(State Diagram Elements)1、状态(States)指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。

状态图组件图与配置图

状态图组件图与配置图

1. 状态图—状态图实例2
Turn on
active
Turn off
Press RECORD button recording
Press PLAY button
stop playing
stop stop
1. 状态图—JAVA代码
int sum = 0; public int register(Student s){
switch(state){ case Open: if(sum > 40){ state = Open; sum = sum + 1; }else state = Close; break; case Close: System.out.println(“the class is full”);
} return sum; }
状态
(1) 初始状态(1个) (2) 最终状态(1个或多个)
(3) 中间状态
(4) 复合状态
1. 状态图
为什么要使用状态图
状态图的作用主要体现在以下几个方面: (1)状态图清晰的描述了状态之间的转换顺序,通过状态的转
换顺序也就可以清晰的看出事件的执行顺序。如果没有状态图 我们就不可避免的要使用大量的文字来描述外部事件的合法顺 序。
1. 状态图
为事件驱动对象建模 (1) 选择状态机的上下文,上下文可以是一个类、
用例、子系统或系统整体; (2) 为对象选择初始状态和最终状态; (3) 考虑对象存在一段时间的条件,确定对象的稳
定状态; (4) 确定稳定状态在对象生命周期中的局部排序; (5) 确定触发从状态到状态跃迁的事件;
1. 状态图
(2)清晰的事件顺序有利于程序员在开发程序时避免出现事件 错序的情况。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档