uml(六)状态机状态图

上传人:正** 文档编号:50600743 上传时间:2018-08-09 格式:PPT 页数:29 大小:738KB
返回 下载 相关 举报
uml(六)状态机状态图_第1页
第1页 / 共29页
uml(六)状态机状态图_第2页
第2页 / 共29页
uml(六)状态机状态图_第3页
第3页 / 共29页
uml(六)状态机状态图_第4页
第4页 / 共29页
uml(六)状态机状态图_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《uml(六)状态机状态图》由会员分享,可在线阅读,更多相关《uml(六)状态机状态图(29页珍藏版)》请在金锄头文库上搜索。

1、SEI OF ECNUUML Unified Modeling Language 统一建模语言Lecture六 状态机/图杜育根 2Outline状态机 状态图本讲重点n事件n状态n转移n状态图3事件、信号 事件 Event n 是对一个在时间和空间上占有一定位置的有意义的事情的描述p 一个事件是一次激励的发生,该激励导致状态的转移 n UML 对4种事件进行建模p 状态的一次变化 p 信号 p 调用 p 时间事件和变化事件 信号 Signaln 信号是消息的类元,或类型n 消息是一个具名的对象,它由一个对象异步地发送给另一个对象接收n 信号是一个异步事件4事件、信号时间事件 和 变化事件n

2、时间事件 是表示一段时间的推移p用关键字after 后面跟着时间表达式 p用关键字at 表示某个绝对时间点上发生的时间事件n 变化事件 表示状态的一个变化或某些条件得到满足的事件p用关键字 when后跟一个布尔表达式,当条件满足,则引发变化 事件51. 状态图状态图建模的语境n 状态机主要用于描述:对象的行为必须响应异步消息n 它的当前行为依赖于过去的历史信息n 简单、独立的行为,或当前的行为并不依赖它们的过去 时,不需要用一 个状态机建模,如:对象的创建、撤销建模准则:n 建模具有复杂行为并依赖于状态的对象而不是建模跟状态无关的对象p如电话对于按下某个按钮的反应,依赖于手机当前的状态 n 在

3、过程控制、设备控制、协议处理和通信领域等,通常有许多的依赖于 状态的对象。61. 基本概念使用交互图建模共同工作的 对象群体的 行为使用状态机,可以n 对 单个对象的 或单个 系统的行为建模n 描述对象在其生命期中,由事件所引起的状态序列变化以及 对这些事件的响应。注意:n 活动图是强调 从活动到活动的控制流n 状态图是强调 对象潜在的状态和这些状态之间的转移71. 基本概念 定义n 状态(state): 是对象的生命期中的一个条件或状况p在此期间,对象可以响应事件、执行某活动等 n 状态机(state machine) :说明对象在它的生命期中响应事件所经 历的状态序列以及它们对那些事件的响

4、应。n 状态图(state diagram):状态图可视化表示状态机。状态图强调 从状态到状态的转移。n 事件(event): 是对一个在时间和空间上占有一定位置的有意义的事 情的描述。p在状态机的语境中,一个事件是一个激励的发生,它能够触发状 态的转移。 n 转移/迁移(transition): 是两个状态之间的一种关系。它指明对象 在某个状态中执行一定的动作,并当特定事件发生或特定的条件满足 时进入下一个状态。81. 基本概念UML 状态的的图形表示n 圆角 的矩形n 初态、终态n 转态迁移:带箭头的线迁移的文字标记的格式如下:n 触发事件触发条件/变迁动作n 迁移的文字标记的三个部分以及

5、文字标记本身都是可以省略的 初态终态92. 状态的迁移状态有以下几个部分组成:1)名称(name)每个单词首字母大写 2)进入/退出动作(entry/exit action)3)内部转换(internal transition):不离开该状态,处理相关事件4)子状态 (substate)5)延迟事件 (deferred event)102. 状态的迁移迁移n 在事件的刺激、触发下,对象从一个状态进入另一个状态。n 一个迁移由5部分组成p源状态 source state p事件触发器 event trigger p监护条件 guard condition p效应(effect) 可执行的动作 p

6、目标状态 n 自身转移p如 switchOnNoPower p已经退出Black状态,然后满足 条件又进入Black状态自身转移 不同于内部转移113. 高级状态和迁移高级状态和迁移n 进入动作(entry/.)p每当进入该状态时,就执行它的进入动作 n 退出动作(exist/.)p每当离开该状态时,就执行它的退出 n 注意:进入和退出动作p不可以有监护条件 p如c+,构造函数 和析构函数123. 高级状态和迁移高级状态和迁移n 内部转换p内部转换不同于 自身转换 p内部转换只执行内部的动作, 不执行进入/退出动作 n Do 活动p当对象处于某一个状态时,执行的活动 pUML 用特殊的do 转

7、换来表示 n 延迟事件p处于状态A, 来了事件e, 在A中不处理。当系统到了状态B时, 处理消息e。134. 子状态机子状态是嵌套在另一个状态中的状态144. 子状态机154. 子状态机 非正交子状态:转态不 相交,一次只能处于一 个子系统 正交子状态n 在一个语境中,并 发地执行两个或多 个状态机164. 子状态机 分岔和汇合 n 分岔:从一个外部状态直接迁移到一个或多个正交状态 n 从带有正交区域的组合状态内的任一状态离开的迁移导致控制离 开所有的其它正交区域 n 例如,发生错误,从而迫使所有并行计算都被中断17StateChart for microwave oven “control

8、unit“- timer and heatingElements are additional objects - Power can be on or off - Time can be set after the power has been turned onWaitingdo/ display(“Off“) exit/ display(“Time?“)Set timedo/ time = getTime() exit/ timer.setTime(time)Disableddo/ display(“Close Door“)Operatingdo/ display (“time left

9、“) entry/ heatingElement.powerOn() exit/ heattingElement.powerOff() Door open Door closed Door closedDoor openTime outPower turned on5. Example185. Example:特定字符串处理 状态机对反应型对象建模p其全部动作都附加到转移上的状态机,称为米利机(Mealy Machine)课本p257, 图25-2, n 该机器被设计成能分析与语法相匹配的字符流:p string ; (Note: 消息体;)19代码生成class MessageParser

10、public boolean put(char c) switch (state) case Waiting: if (c = ) state = GettingBody; else token.append(c); break; case GettingBody : 。20案例:Application Manager21案例:Application ManagerAM will keep each applications state:Application has these stable states:CreatedInitializedActivatedFocused And thes

11、e transient state: INITIALIZING ACTIVATING DEACTIVATING FOCUSGAINING FOCUSLOSING TERMINATING22案例:Application Manager23案例:Application Manager:状态表Original StateLegal ActionReply From AppNew StateNoteCreatedInitializationOKINITIALIZEDAlreadyDoneActionINITIALIZEDOther ErrorOriginal StateBefore ReplyInit

12、ializing24案例:Application Manager:状态表Original StateLegal ActionReply From AppNew StateNoteINITIALIZEDInitializationOKOriginal StateFor getting new parameters for application. AlreadyDoneActionOriginal StateOther ErrorOriginal StateBefore ReplyOriginal StateActivation OKACTIVATEDAlreadyDoneActionACTIV

13、ATEDOther ErrorOriginal StateBefore ReplyActivatingTermination OKCREATEDAlreadyDoneActionCREATEDOther ErrorUNAVAILABLEBefore ReplyTerminating25Source code for: givefocus void iams_in_req_givefocus_ind( const eAM_APPLI AppID,const eAM_CAUSE cause )eAM_STATE State = cAM_SS_NONE;iams_get_app_curr_state

14、(AppID, switch( State )/*valid states for get focus request*/case cAM_SS_ACTIVATED:case cAM_TS_GIVING_FOCUS:case cAM_TS_LOSING_FOCUS:if( AppID != g_focused_appli )/* save the requster appli, after current application lose its focus give the focus to the new requster */* this cause will be need for c

15、onfirmation */ g_req_focus_cause = cause;g_need_focus_appli = AppID;else/* no valid application have focus, maybe this is the firsttime to give focus to a valid application,no need to losebreak;default :/*error*/INEM_DEFENSE( IACX_ERR_AM_UNEXPECTED_EVT ); break; 266. 练习一用状态图来表示n 销售处理 n 状态:pWaitingFo

16、rSale pEnteringItems pWaitingForPayment pAuthorizingPayment27用状态图来表示:销售处理 练习二会员管理的状态图n 可能的状态有:登录后台管理系统,会员管理模块,会员删除状态 ,会员修改状态,会员权限状态,数据更新页面,错误页面。29小结 事件(Event),是指对一个在时间和空间上占据一定位置的有意义的事情 的规格说明。 事件包括信号、调用、时间推移或状态改变。 状态(State)是指在对象的生命周期中满足某些条件、执行某些活动或 等待某些事件时的一个条件或状况。 迁移是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在 某个特定事件发生而且满足某个特定的条件时进入后

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号