状态机图
- 格式:ppt
- 大小:479.50 KB
- 文档页数:42
UML的状态机图UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统中的各种构建块和交互关系。
UML的状态机图是其中一个最为重要的建模图之一。
什么是状态机图?状态机图是一种用于描述对象行为的UML图表。
它以有限状态机的形式描述对象或系统在不同状态下对事件以及其他因素产生的响应。
状态机图显示了对象的状态及其之间的转换。
状态机图主要由三个部分组成:状态、转移和事件。
状态表示对象或软件系统处于的状态,转移表示状态之间的转换,事件则表示导致状态转换的触发器或条件。
状态机图的建立过程在建立状态机图之前,需要先确定对象或软件系统的状态、转移和事件。
1. 确定状态首先需要确定对象或软件系统可能出现的所有状态。
每个状态都应该有一个名称、一个描述以及一个标识符。
状态可以是“初态”(启动状态)、“终态”(结束状态)或“中间态”(中间状态)。
2. 确定转移和事件根据对象或软件系统的实际情况,确定状态之间的转移以及导致转移的事件或条件。
每个转移都应该有一个名称、一个标识符以及一个触发器。
触发器可以是一些条件,例如键盘上的一个按键或计时器到期,也可以是上一个状态完成某些任务导致的条件。
例如,在一个自动售货机的状态机图中,售货机可能处于“待机”、“已付款”、“正在出货”、“出货完成”四种状态。
当用户选择购买商品并投入硬币时,售货机会从“待机”状态转移到“已付款”状态,并且会关闭“使用硬币”事件。
当售货机完成出货并关闭接口时,它会从“正在出货”状态转移到“出货完成”状态。
状态机图的用途状态机图有很多用途。
它可以用于描述产品或系统的交互设计,也可以用于演示API和网络安全策略的行为。
一些常见的用途包括:1. 软件开发状态机图可以在软件开发过程中用于确定软件的行为、处理错误和异常情况、定义状态转换以及帮助代码实现。
通过建立状态机图,可以更好地理解软件中各个状态的流转情况,从而提高软件开发效率。
状态机图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)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。
它是一个瞬时状态,用于构造转换的细节。
当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。
体建模。
②考虑是否为重要的业务的履行者建立一个泳道。
③建立初始状态和终止状态,并识别该业务过程的前置条件和后置条件。
④从初始状态开始,说明随着时间发生的动作,并在活动图中表示它们。
⑤如果涉及重要的对象,则把它们也加入到活动图中。
如果有必要,可展示对象的属性值和状态。
⑥连接这些动作的控制流和对象流。
如果需要,使用分支和合并来描述条件路径和迭代,使用分岔和汇合来描述并发的动作流。
⑦若动作较为复杂,则它可调用一个活动,在该活动中描述其细节。
由于业务过程所描述的功能有些是要由软件系统来完成的,若针对这样的功能建立了活动模型,也可以说是对软件系统的(局部)功能建立了活动模型。
(2)对操作建模用活动图对操作建模是指把活动图作为流程图来对操作的算法细节建模。
与传统的流程图不同的是,活动图能够展示并发。
在OOA阶段,仅用活动图对关键的复杂操作进行建模。
除非想直接从模型自动生成代码,即使在OOD阶段也并不要求用活动图对每个操作的算法都建立模型。
对一个操作建模时,应遵循如下策略。
①收集该操作所涉及的事物,包括操作的参数、可能的返回类型、它所属于的类以及与之相关的类的特征。
②识别操作的前置条件和后置条件以及操作所属的类在操作执行期间必须保持的不变式。
③从该操作的初始状态开始,按照时间顺序设立动作。
④如果需要,使用分支和合并来描述条件路径和迭代。
⑤仅当这个操作属于主动类时,才在必要时用分岔和汇合来描述并发的控制流。
8.3.3 状态机图在现实世界中的事物通常都有自己的生命周期。
通过对它们的观察,可以得出如下结论。
①大多数事物在其生命周期中经历了不同的状态,且这些状态是通过对现实的理解(建模)而定义的。
②一个事物在各时期内所处的状态是明确的。
③在一个状态内,事物要完成一定的任务。
④在现实世界存在着引起事物的状态发生变化的事件。
⑤事物在其状态间按次序转化。
⑥事物从一个状态到另一个状态的转化通常是即时的。
⑦当事件发生时,事物可能需要采取一些动作。
A、State Diagram(状态图)、State Machine Diagrams(状态机图)状态机图是说明一个元素(通常是类)能在不同状态之间变动。
状态机图的其它方面进一步描述和解释其运动和行为。
状态图主要用来描述对象、子系统、系统的生命周期。
通过状态图可以了解到一个对象所能到达的所有状态以及对象收到的事件(收到消息,超时,错误,条件满足)对对象状态的影响等。
状态所有对象都有状态,状态是对象操作的前一次活动的结果。
类的状态由类中的指定属性来说明。
事件当某些事情发生时对象的状态发生改变,我们称改变对象状态的事情为事件。
B、状态图的模型元素B.1、Initial(起点)初始态Initial元素是伪状态用于表明一个复合状态的默认状态。
可以在每一个复合状态的区域有一个初始顶点。
B.2、Final(终点)终态B.3、State(状态)State描述一些不变条件成立的情形。
这个条件可以是静态的(等待某个事件)也可以是动态的(正在执行一组活动)。
状态建模通常用于阐述类。
你可以适用State的operation(操作)来定义enter(进入)、internal(内部)、exit(退出)动作。
State 也可以有Attributes(属性)。
B.3、State Machine(状态机)状态机是一组相关状态元素的容器。
你可以创建状态机图的各个部分。
B.4、Synch(同步)Synch状态用于描述状态机的并发部分同时发生。
在同步发生后Synch状态的新兴过滤路径将合并。
B.5、Choice(选择)Choice伪状态用于组成复制过滤路径,例如:在状态机图中一个过滤的路径取决于一个动态的运行时的条件。
这个运行时的条件是由状态机路径选择决定的。
B.5、Junction(汇合)Junction伪状态用于设计复杂过滤路径。
一个Junction可以用来汇合或组合多个过滤路径为一个过滤路径。
另外一个Junction可以把一个进来的路径分割成多个路径。
UML之状态机图状态机图基本概念: 状态机图,UML 1.x规范中称状态图,是⼀个展⽰状态机的图。
状态机图基本上就是⼀个状态机中元素的投影,这也就意味着状态机图包括状态机的所有特征。
状态机图显⽰了⼀个对象如何根据当前状态对不同事件做出反应的动态⾏为。
状态机图主要由状态和转换两种元素组成。
状态机 状态机是⼀种⾏为,它说明对象在其⽣命周期中响应事件所经历的状态变化序列以及对那些时间的响应。
⼀般情况下,⼀个状态机依附于⼀个类,⽤来描述这个类的实例的状态及其转换,和对接收到的事件所做出的响应。
此外,状态机也可以依附于⽤例、操作、协作等元素上,描述它们的执⾏过程。
状态机从对象的初始状态开始,响应事件并执⾏某些动作,从⽽引起状态的转换;在新状态下⼜继续响应事件并执⾏动作,如此循环进⾏到对象的终结状态。
状态机主要由状态、转换、事件、动作和活动5部分组成。
1)状态表⽰对象的⽣命周期中的⼀种条件或情况。
2)转换表⽰两种状态间的⼀种关系。
3)事件表⽰在某⼀时间与空间下所发⽣的有意义的事情。
4)动作表⽰⼀个可执⾏的原⼦操作,是UML能够表达的最⼩计算单元5)活动表⽰状态机中的⾮原⼦执⾏,⼀般由⼀系列动作组成。
状态机图作⽤:状态机图⽤于对系统的动态⽅⾯进⾏建模,适合描述⼀个对象在其⽣命周期中的各种状态及状态的转换。
状态机图的作⽤主要体现在以下⼏点:1)状态机图描述了状态转换时所需的触发事件和监护条件等因素,有利于开发⼈员捕捉程序中需要的事件。
2)状态机图清楚地描述了状态之间的转换及其顺序,这样就可以⽅便地看出事件的执⾏顺序,状态机图的使⽤节省了⼤量的描述⽂字。
3)清晰的事件顺序有利于开发⼈员在开发程序时避免出现事件错序的情况。
4)状态机图通过判定可以更好地描述⼯作流在不同的条件下⽽出现的分⽀。
状态机图的组成: 简单状态、转换、伪状态。
简单状态 状态是状态机图的重要组成部分,它描述了⼀个对象稳定在的某⼀个持续过程或所处状况,与动态⾏为的执⾏所产⽣的结果。
[UML]UML系列——状态机图statechartdiagram系列⽂章引⾔状态机图和顺序图、通信图有哪些区别?顺序图、通信图:描述多个对象间的交互状态机图:描述单个对象的状态及引起状态变化的原因实例分析:⼤学⽣学籍管理系统按国家招⽣规定录取的新⽣,持录取通知书,按学校有关要求和规定的期限到校办理⼊学⼿续。
因故不能按期⼊学者,应当向学校请假,假期⼀般不得超过2周。
未请假、请假未准或者请假逾期者,除因不可抗⼒等正当事由意外,视为放弃⼊学资格。
新⽣⼊学后,学校在三个⽉内按照国家招⽣规定对其进⾏复查。
复查合格者予以注册,取得学籍。
复查不合格者,学校区别情况予以处理,直⾄取消⼊学资格。
......学⽣有如下情况之⼀者,应予休学:(⼀)因伤病经学校指定医院诊断,须停课治疗、休养⼀学期1/3时间;(⼆)⼀学期请假缺课超过该学期总学时的1/3;(三)传染性肝炎、肺结核等传染性疾病;(四)因某种特殊原因,学校认为必须休学。
.....学⽣休学⾄少⼀学期,⼀般以⼀年为限。
学⽣复学后,休学之前已记⼊成绩档案的考核成绩继续有效,并作为学籍处理依据.学⽣复学按下列规定办理:(⼀)学⽣因伤病休学申请复学时,须持有⼆级甲等以上医院诊断书,证明⾝体健康,并经学校指定医院复查合格,⽅可复学;(⼆)学⽣休学期满后应于学期的注册期内持有关证明,经教务处核准后编⼊原专业相应班级选课学习;........学⽣有下列情况之⼀者,应予退学:(⼀)学⽣在读期间,3次出现在⼀学期中取得的课程学分不⾜10学分(不含重修和补考学分;毕业学期除外;第⼀次提出警告,第⼆次提出退学警告,由教务处公布名单,院系负责通知学⽣家长);(⼆)休学、保留学籍期满,在规定期限内不办理复学⼿续;(三)休学累计满⼆年,经复查不合格;(四)因伤病需要休学,经学校动员后仍不办理休学⼿续;(五)经学校指定医院确诊患有疾病,或意外伤残⽆法继续在校学习;(六)未请假离校连续2周末参加学校规定的教学活动;(七) 超过学校规定期限未注册⽽⼜⽆正当事由;(⼋)本⼈要求退学。