UML(六)状态机状态图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信号 Signal
信号是消息的类元,或类型 消息是一个具名的对象,它由一个对象异步地发送给另一个对象接收 信号是一个异步事件
3
事件、 事件、信号
时间事件 和 变化事件
时间事件 是表示一段时间的推移 用关键字after 后面跟着时间表达式 用关键字at 表示某个绝对时间点上发生的时间事件 变化事件 表示状态的一个变化或某些条件得到满足的事件 用关键字 when后跟一个布尔表达式,当条件满足,则引发变化 事件
20
案例: 案例:Application Manager
Initial state = None First Initialization of mobile
AM will keep each application’s state:
CREATED
/ Initialization / Termination
MSG_LAUNCHAPP_IND(App2, App1, Reply)
22
案例:Application Manager:状态表 案例: :
Original State Legal Action Reply From App New State Note
OK
INITIALIZED
AlreadyDoneAction Created Initialization Other Error
INITIALIZED
Original State
Before Reply
Initializing
Door open
17
- timer and heatingElements are additional objects - Power can be on or off - Time can be set after the power has been turned on
5. Example:特定字符串处理 状态机 :
4. 子状态机
16
5. Example
Waiting do/ display("Off") exit/ display("Time?")
StateChart for microwave oven "control unit"
Power turned on
Set time
do/ time = getTime() exit/ timer.setTime(time) [ Door open ]
对反应型对象建模
其全部动作都附加到转移上的状态机,称为米利机(Mealy Machine)
课本p257, 图25-2,
该机器被设计成能分析与语法相匹配的字符流: ‘<‘ string ‘>’ string ’;’ (Note: <标记串> 消息体;)
18
代码生成
class MessageParser {
App2 requests to launch another UI application App1
AM
App1
The App2 indicates it wants to launch App1.
App2
MSG_REQ_LAUNCHAPP_IND(App2, App1, AppParam)
In case of NONE, UNAVAILABLE, CREATED and transient state under CREATED (including Terminating), there is no need to request. Here we assume the state of App1 is OK which can be launched. In case of transient state above CREATED, AM will try to launch application.
at(11:49PM) / selfTest() Active
after(2 second s) / dropConnection() Idle
when( altitude < 1000 )
4
1. 状态图
状态图建模的语境
状态机主要用于描述:对象的行为必须响应异步消息 它的当前行为依赖于过去的历史信息 简单、独立的行为,或当前的行为并不依赖它们的过去 时,不需要用一 个状态机建模,如:对象的创建、撤销
Application has these stable states: Created Initialized Activated
/ Termination
INITIALIZED
/ Activation / Deactivation
Focused
ACTIVATED
/ GivingFocus / LosingFocus
7
1. 基本概念
UML 状态的的图形表示 圆角 的矩形 初态、终态 转态迁移:带箭头的线 迁移的文字标记的格式如下: 触发事件[触发条件 变迁动作 触发事件 触发条件]/变迁动作 触发条件 迁移的文字标记的三个部分以及文字标记本身都是可以省略的
终态 初态
NewState
event_name( arguments )[ guard_Cond ] / actionT obeT aken
19
}
案例: 案例:Application Manager
Presentation Wap Browser Game (Other Application)
LCD screen
Life Cycle Manager
Service Center
Application Manager
Lifecycle Message Service Message Service
11
3. 高级状态和迁移
高级状态和迁移
内部转换 内部转换不同于 自身转换 内部转换只执行内部的动作, 不执行进入/退出动作 Do 活动 当对象处于某一个状态时,执行的活动 UML 用特殊的do 转换来表示 延迟事件 处于状态A, 来了事件e, 在A中不处理。当系统到了状态B时, 处理消息e。
12
4. 子状态机
建模准则:
建模具有复杂行为并依赖于状态的对象而不是建模跟状态无关的对象 如电话对于按下某个按钮的反应,依赖于手机当前的状态 在过程控制、设备控制、协议处理和通信领域等,通常有许多的依赖于 状态的对象。
5
1. 基本概念
使用交互图建模共同工作的 对象群体的 行为 使用状态机,可以 对 单个对象的 或单个 ‘系统’的行为建模 描述对象在其生命期中,由事件所引起的状态序列变化以及 对这些事件的响应。 注意: 活动图是强调 从活动到活动的控制流 状态图是强调 对象潜在的状态和这些状态之间的转移
6
1. 基本概念
定义 状态(state): 是对象的生命期中的一个条件或状况 状态 在此期间,对象可以响应事件、执行某活动等 状态机(state machine) :说明对象在它的生命期中响应事件所经 状态机 历的状态序列以及它们对那些事件的响应。 状态图(state diagram):状态图可视化表示状态机。状态图强调 状态图 从状态到状态的转移。 事件(event): 是对一个在时间和空间上占有一定位置的有意义的事 事件 情的描述。 在状态机的语境中,一个事件是一个激励的发生,它能够触发状 态的转移。 转移/迁移 迁移( 转移 迁移(transition): 是两个状态之间的一种关系。它指明对象 在某个状态中执行一定的动作,并当特定事件发生或特定的条件满足 时进入下一个状态。
UML Unified Modeling Language
统一建模语言
Lecture六 状态机 图 六 状态机/图
杜育根 ygdu@sei.ecnu.edu.cn
SEI OF ECNU
Outline
状态机 状态图 本讲重点 事件 状态 转移 状态图
2
事件、 事件、信号
事件 Event
是对一个在时间和空间上占有一定位置的有意义的事情的描述 一个事件是一次激励的发生,该激励导致状态的转移 UML 对4种事件进行建模 状态的一次变化 信号 调用 时间事件和变化事件
[ Door closed ]
Disabled do/ display("Close Door")
Door closed
Time out
Operating do/ display ("time left") entry/ heatingElement.powerOn() exit/ heattingElement.powerOff()
在事件的刺激、触发下,对象从一个状态进入另一个状态。 一个迁移由5部分组成 源状态 source state 事件触发器 event trigger 监护条件 guard condition 效应(effect) 可执行的动作 目标状态 自身转移 如 switchOn[NoPower] 已经退出Black状态,然后满足 条件又进入Black状态
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 : 。。。
子状态是嵌套在另一个状态中的状态
idle
ห้องสมุดไป่ตู้
Activate
heating
activati ng
13
4. 子状态机
14
4. 子状态机
非正交子状态:转态不 相交,一次只能处于一 个子系统 正交子状态 在一个语境中,并 发地执行两个或多 个状态机
15
分岔和汇合 分岔:从一个外部状态直接迁移到一个或多个正交状态 从带有正交区域的组合状态内的任一状态离开的迁移导致控制离 开所有的其它正交区域 例如,发生错误,从而迫使所有并行计算都被中断
8
2. 状态的迁移
状态有以下几个部分组成:
1)名称(name) 每个单词首字母大写 2)进入/退出动作(entry/exit action) 3)内部转换(internal transition): 不离开该状态,处理相关事件 4)子状态 (substate) 5)延迟事件 (deferred event)
AM launches App1 using elementary lifecycle action initialize/activate/ givefocus according the present state of the App1. The goal is to give the focus to App1. So, the last part is the focus exchange between App2 and App1.
And these transient state: INITIALIZING / Termination ACTIVATING DEACTIVATING FOCUSGAINING FOCUSLOSING /Deactivation TERMINATING
FOCUSED
21
案例: 案例:Application Manager
exit/ ChangePrivateShoe entry/ ChangeInternalShoe event MeetMaster/ ShakeHand do/ discussionWithMaster event MeetChild/ SayHello
SampelState
9
2. 状态的迁移
迁移
10
InstallLi ght bulbBroken switchOn[ NoPower ] Black swithOn[ withPower ] Bright
destro yLi ne
swi tch Off
powerEnd
自身转移 不同于内部转移
3. 高级状态和迁移
高级状态和迁移
进入动作(entry/….) 每当进入该状态时,就执行它的进入动作 退出动作(exist/….) 每当离开该状态时,就执行它的退出 注意:进入和退出动作 不可以有监护条件 如c++,构造函数 和析构函数