UML状态机图
UML状态机图
![UML状态机图](https://img.taocdn.com/s3/m/e82d3d5a2e3f5727a5e96234.png)
面对目前大学生日益懒惰的现象,某企业计划开发一套针对大学食堂的网上自动订餐、派送、支付等功能的电子商务系统。
具体包括(但不限于):
1、任何人均可实名注册并登录系统;
2、当日菜品浏览和订餐;
3、可实时浏览订单状态。
如果尚未配送,可撤销菜单;
4、授权人员进行配送并更新状态;
5、支付方式可以是货到付款,可以是从订餐者个人校园卡中扣除(如果余额不足则支付和订餐失败),也可以是其他方式;
6、正常结束和异常结束;
7、系统可实现整体的查询和统计分析功能。
状态机图
说明:用户首先要注册账号,第一个状态为注册状态,在此状态中系统要检测用户名与密码是否符合规范,不符合则不合格(注册失败),否则合格(注册成功)。
注册成功后用户要登陆(登陆状态),同时系统要检测用户名是否存在并且与密码匹配,若匹配则登陆成功,否则登陆失败。
登陆成功之后进入菜品界面(菜品浏览状态),这时系统检测用户是否订餐,若为订餐,停留在此状态,若订餐,进入订餐状态,此时系统提示用户选择支付方式,提供货到付款与校园卡支付两种支付手段。
若用户选择校园卡支付,系统要检测校园卡余额,若余额不足,订餐失败,否则订餐成功(订餐成功状态)。
在此状态下用户可查询订单状态,若订单未配送,系统检测用户是否取消订单,若取消,希尔进入订单取消状态,否则返回上一状态。
UML科普文,一篇文章掌握14种UML图
![UML科普文,一篇文章掌握14种UML图](https://img.taocdn.com/s3/m/968848b30129bd64783e0912a216147917117e3a.png)
UML科普⽂,⼀篇⽂章掌握14种UML图前⾔上⼀篇⽂章写了⼀篇建造者模式,其中有⼏个UML类图,有的读者反馈看不懂了,我们今天就来解决⼀哈。
什么是UML?UML是Unified Model Language的缩写,中⽂是统⼀建模语⾔,是由⼀整套图表组成的标准化建模语⾔。
为什么要⽤UML?通过使⽤UML使得在软件开发之前,对整个软件设计有更好的可读性,可理解性,从⽽降低开发风险。
同时,也能⽅便各个开发⼈员之间的交流。
UML提供了极富表达能⼒的建模语⾔,可以让软件开发过程中的不同⼈员分别得到⾃⼰感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》⼀书中总结了UML的主要⽬的,如下:1. 为⽤户提供现成的、有表现⼒的可视化建模语⾔,以便他们开发和交换有意义的模型。
2. 为核⼼概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
3. 独⽴于特定的编程语⾔和开发过程。
4. 为了解建模语⾔提供⼀个正式的基础。
5. ⿎励⾯向对象⼯具市场的发展。
6. ⽀持更⾼层次的开发概念,如协作,框架,模式和组件。
7. 整合最佳的⼯作⽅法 (Best Practices)。
UML图有哪些?UML图分为结构图和⾏为图。
结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
⾏为图⼜分活动图、⽤例图、状态机图和交互图。
交互图⼜分为序列图、时序图、通讯图、交互概览图。
UML图概览什么是类图?【概念】类图是⼀切⾯向对象⽅法的核⼼建模⼯具。
类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【⽬的】⽤来表⽰类、接⼝以及它们之间的静态结构和关系。
在类图中,常见的有以下⼏种关系。
泛化(Generalization)【泛化关系】是⼀种继承关系,表⽰⼦类继承⽗类的所有特征和⾏为。
【箭头指向】带三⾓箭头的实线,箭头指向⽗类。
第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
![第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社](https://img.taocdn.com/s3/m/e4923ec1a76e58fafbb0034c.png)
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图
UML的状态机图
![UML的状态机图](https://img.taocdn.com/s3/m/c489c2ef29ea81c758f5f61fb7360b4c2e3f2a16.png)
UML的状态机图UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统中的各种构建块和交互关系。
UML的状态机图是其中一个最为重要的建模图之一。
什么是状态机图?状态机图是一种用于描述对象行为的UML图表。
它以有限状态机的形式描述对象或系统在不同状态下对事件以及其他因素产生的响应。
状态机图显示了对象的状态及其之间的转换。
状态机图主要由三个部分组成:状态、转移和事件。
状态表示对象或软件系统处于的状态,转移表示状态之间的转换,事件则表示导致状态转换的触发器或条件。
状态机图的建立过程在建立状态机图之前,需要先确定对象或软件系统的状态、转移和事件。
1. 确定状态首先需要确定对象或软件系统可能出现的所有状态。
每个状态都应该有一个名称、一个描述以及一个标识符。
状态可以是“初态”(启动状态)、“终态”(结束状态)或“中间态”(中间状态)。
2. 确定转移和事件根据对象或软件系统的实际情况,确定状态之间的转移以及导致转移的事件或条件。
每个转移都应该有一个名称、一个标识符以及一个触发器。
触发器可以是一些条件,例如键盘上的一个按键或计时器到期,也可以是上一个状态完成某些任务导致的条件。
例如,在一个自动售货机的状态机图中,售货机可能处于“待机”、“已付款”、“正在出货”、“出货完成”四种状态。
当用户选择购买商品并投入硬币时,售货机会从“待机”状态转移到“已付款”状态,并且会关闭“使用硬币”事件。
当售货机完成出货并关闭接口时,它会从“正在出货”状态转移到“出货完成”状态。
状态机图的用途状态机图有很多用途。
它可以用于描述产品或系统的交互设计,也可以用于演示API和网络安全策略的行为。
一些常见的用途包括:1. 软件开发状态机图可以在软件开发过程中用于确定软件的行为、处理错误和异常情况、定义状态转换以及帮助代码实现。
通过建立状态机图,可以更好地理解软件中各个状态的流转情况,从而提高软件开发效率。
跟我学UML建模工具StarUML(第12部分)——应用StarUML创建状态图的创建示例
![跟我学UML建模工具StarUML(第12部分)——应用StarUML创建状态图的创建示例](https://img.taocdn.com/s3/m/1c3b3256f7ec4afe05a1df1f.png)
1.1跟我学UML建模工具StarUML(第12部分)——应用StarUML创建状态图的创建示例1.1.1UML状态图及相关技术1、状态机图和状态机图中的状态(1)状态机图UML状态图(也称UML状态机图)是展示对象状态与状态转换的视图,在UML中,状态机图用于对具有事件驱动的特性的动态行为的建模。
(2)状态机图中的状态状态是状态机图的重要组成部分,所有对象都具有状态,状态是对象执行了一系列活动的结果。
当某个事件发生后,对象的状态将发生变化。
2、状态图(State Diagram)(1)什么是状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件,从而可以实现对单个的对象行为建模。
(2)状态图的主要作用大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为,同时也显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
3、什么场合中应该要采用状态图当功能行为的改变和状态有关时才需要创建出UML状态图,因为通过状态图可以显示对象在其生命周期中依次经历的各种状态。
但如果要表示由系统内部生成的功能操作(而非外部事件)驱动的事件流时,则一般使用UML活动图。
如下给出一个Account对象的状态图示例:4、为什么要使用UML状态图(1)动态特性是由事情所触发的一个完全静态的系统是无任何应用价值的,因为没有事件发生也就不可能产生出具体的功能。
所有真正的软件应用系统自身都含有某些动态的特性,并且这些动态的特性是由内部或外部发生的事件所触发。
比如,在一个ATM机上,动作是由一个用户按下相关的功能按钮引发而开始一个事件;在一个自动机器人中,动作是由机器人碰上一个对象而引发的;在一个网络路由器中,动作是由检测消息缓冲区是否溢出而引发的。
如下图为一个图书销售业务的状态图示例:(2)为单个的对象和共同工作的对象建模使用UML交互图可以对共同工作的对象群体的行为进行建模,而使用状态图,则可以对单个的对象行为进行建模。
UML状态机图介绍
![UML状态机图介绍](https://img.taocdn.com/s3/m/9d38f61f10a6f524ccbf85df.png)
UML状态机图1.状态机图的作用状态机图是用来为对象的状态及造成状态改变的事件建模。
UML的状态机图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。
状态机图也可用于描述Use Case,以及全系统的动态行为。
状态机图表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。
2.状态机图的基本元素状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。
状态图由状态(state,圆角矩形)与转换(transition,连接状态的箭头)组成。
引起状态改变的触发器(trigger)或者事件(event)沿着转换箭头标示。
如图所示灯光有2个状态:off与on。
当lift switch或者lower switch事件被触发时,灯光状态会改变。
图表1 状态图的基本元素状态图通常有初始伪状态(initial pseudostate)和最终状态(final state),分别表示状态机的开始和结束。
初始状态用实心圆表示,终止状态用牛眼表示。
图表2状态图中的初始伪状态与最终状态2.1状态(state)状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。
一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成。
图表3 带分栏的状态在状态图的下面部分可以标识内部活动,包括事件和动作(event/action)。
Entry和exit事件是标准的,任何一个进入状态的转换都将会调用entry动作,任何一个退出状态的转换都将会调用exit动作,而且也可以添加自己的事件。
与do行为不同,进入和退出行为是无法被中断的。
图表4状态的内部行为例如,咖啡机正在煮咖啡的状态(Brewing),并且可以把行为写在状态内。
UML状态图的画法
![UML状态图的画法](https://img.taocdn.com/s3/m/76e768170b4e767f5acfcea9.png)
4
主要内容
1. 状态机 2. 状态 3. 转移 4. 组合状态 5. 状态图的应用
5
3.1 状态机[1]
状态机对系统的动态特征建模。
状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起, 响应事件,执行某些动作,引起转移到新状态,在新状态下响应事件,执行 动作,引起转移到另一个状态,直到终结状态。
[条件6]/动作6 目标状态4
事件1[条件1 and 条件3]/动作1,动作3 事件1[条件1 and 条件4]/动作1,动作4 事件1[条件2 and 条件5]/动作2,动作5 事件1[条件2 and 条件6]/动作2,动作6
目标状态1 目标状态2
目标状态3
目标状态4
20
3.3.2 转移示例
资源管理员 资源休闲
状态机的组成:状态、转移、事件、活动、动作等。 状态(State):表示一个模型元素在生存期的一种状况,如满足某些条件, 进行某些活动,或等待某些事件出现等。一个状态在有限的时间段内存在。 转移/迁移(Transition):表示一个模型元素的不同状态之间的联系。在 事件触发下,一个状态可以转移到另一个状态。 事件(Event):一个有意义的出现(Occurrence)的说明。该出现在某 个时间或空间点发生,并且立即触发一个状态的转移。例如,一个信号、一 个操作的调用、一个对象的创建或销毁、超时、某个条件的改变等。 动作(Action):一个可执行的原子计算,它导致状态的变更或返回一个值。 不能被中断。 活动(Activity):是在状态机中一系列动作的执行。活动可能被某个事件 中断。
18
解析UML活动图和状态图的作用和区别
![解析UML活动图和状态图的作用和区别](https://img.taocdn.com/s3/m/931618c708a1284ac85043c7.png)
本文和大家重点讨论一下UML活动图和状态图的概念,这两种图都有各自的特点和作用,那么他们之间有什么区别和联系呢,请看本文详细介绍。
UML活动图和状态图一、UML活动图:◆流程图常被用来建立算法模型◆UML活动图与流程图类似,不同在于它支持并行活动.◆缺点:不能清楚的表示二、作用:1、描述一个操作的执行过程中所完成的工作或者动作2、描述对象内部的工作3、描述用例的执行4、处理多线程5、显示如何执行一组相关的动作,以及这些动作如何影响周围对象三、以下情况不用UML活动图1、显示对象之间的合作2、显示对象在其生命周期内的运转情况。
这两点是通过序列图和协作图完成的。
四、UML活动图的基本要素:◆活动状态◆活动状态之间的转移(箭头)◆判断(决策点)◆保证条件◆同步条:活动之间的同步◆起点和终点--起点有且只有一个,终点可以有n个。
五、泳道:用于对UML活动图中的活动进行分组,用于描述对象之间的合作关系。
----所谓泳道技术,就是将活动用线分成一些纵向区域,这些纵向区域称为泳道。
UML状态图一、状态图:◆描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转换。
例如呼叫中心系统。
◆状态图符--状态:矩形(四角圆弧)--转移--起点--终点1、状态机:◆一种行为:描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。
◆单个类或者一组类之间协作的行为可以用状态机来描述◆一个状态机涉及到一些其他元素,包括状态、转换、事件2、状态:在对象的生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件活状况。
1)名称2)进入协作和退出动作3)内部转换4)子状态5)延迟事件3、转换:两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作并在某个特定事件发生而某个特定条件满足时进入第二个状态。
1)源状态2)事件触发3)监护条件4)动作5)目标状态例子:电话机状态图二、UML活动图与状态图的区别:状态:行为的结果活动:行为的动作在uml中图符不一样。
UML 状态图 StateChart Diagram
![UML 状态图 StateChart Diagram](https://img.taocdn.com/s3/m/a0182aecb8f67c1cfad6b8f2.png)
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的状态图中的决策和转换状态](https://img.taocdn.com/s3/m/41bd803d00f69e3143323968011ca300a7c3f656.png)
避免使用过于复杂的决策逻辑,尽量使 用简单的决策条件
确保状态图的可读性和可维护性,以便 于团队成员理解和维护
命名:使用易于理解的名称,避免使用模糊或容易混淆的词汇 描述:描述应简洁明了,避免使用复杂的句子或术语 准确性:确保状态名称和描述与实际业务需求相符合 规范性:遵循UML标准和规范,确保状态图的可读性和可维护性
描述系统在特定条件下的 决策结果
转换状态是指在UML状态图中,从一个状态到另一个状态的转变过程。 转换状态可以是由事件触发的,也可以是由条件触发的。 转换状态可以是单向的,也可以是双向的。 转换状态可以是瞬时的,也可以是持续的。
转换状态:表示系统从一个状 态转换到另一个状态的过程
状态图:描述系统在不同状 态下的行为和转换关系
决策状态:表示一个决策点,用于选择不同的路径 决策条件:用于描述决策状态的条件,如if-else语句 决策结果:表示决策后的状态转换,如true或false 决策箭头:表示决策状态的转换方向,如指向不同的状态
描述系统在特定条件下的 行为
确定系统在特定条件下的 状态转换
描述系统在特定条件下的 决策逻辑
决策和转换状态的组合应用:在UML状态图中,决策和转换状态可以组合使用, 实现更复杂的状态转换
决策和转换状态的实际应用:在UML状态图中,决策和转换状态可以用于描述业 务流程、系统行为等,使状态图更加清晰、直观。
过多的状态和转换会导致模型复杂 化,难以理解和维护
过多的状态和转换可能会导致模型 难以测试和验证,增加了开发和维 护成本
状态图可以用于描 述系统的状态机模 型,包括状态、转 换、事件和动作
描述系统或对象的状 态变化
描述状态之间的转换 条件和动作
描述状态之间的依赖 关系和约束
uml的十三种图形
![uml的十三种图形](https://img.taocdn.com/s3/m/74f53a7b571252d380eb6294dd88d0d233d43c7f.png)
uml的⼗三种图形
1.⽤例图:对系统的使⽤⽅式分类.
2.类图:显⽰类和它们的相互关系。
3。
对象图:只显⽰对象及它们的相互关系。
4。
活动图:显⽰⼈或对象的活动,其⽅式类似于流程图。
5。
状态机图:显⽰⽣命周期⽐较有趣或复杂的对象的各种状态。
6。
通信图:显⽰在某种情形下对象之间发送的消息。
7。
顺序图:显⽰与通信图类以的信息,但强调的是顺序,⽽不是连接。
8。
包图:显⽰相关的类如何组合,对开发⼈员有⽤。
9。
部署图:显⽰安装已完成系统的机器、过程和部署制品。
10。
组件图显⽰可重⽤的组件(对象或⼦系统)及期接⼝。
11。
交互总图:使⽤顺序图喧⾚活动的务个步骤。
12。
时间图:显⽰消息和对象状态的准确时间限制。
13。
复合结构图:显⽰对象在聚合或复合中的相互关系,显⽰接⼝和协作的对象。
状态机图
![状态机图](https://img.taocdn.com/s3/m/ed6fafc78bd63186bcebbca8.png)
9.2 状态图的表示
6.活动 活动
当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。 当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但 是某些时间,对象正在执行一序列动作, 对象做着某些工作, 是某些时间,对象正在执行一序列动作,即,对象做着某些工作,并一 直继续到被某个外部事件的到来,才中断这些工作,我们把对象处于某 直继续到被某个外部事件的到来,才中断这些工作, 个状态时进行的一序列动作称为活动。 个状态时进行的一序列动作称为活动。 如果对象处于某个状态进行一些动作,可能会需要一些时间, 如果对象处于某个状态进行一些动作,可能会需要一些时间,我们可以 用活动来描述这一序列动作。表示活动的方法是, 用活动来描述这一序列动作。表示活动的方法是,在状态的转换分栏中 添加一行“活动描述” 其格式为“ 动作名” 添加一行“活动描述”,其格式为“do/动作名”。 动作名 活动用来描述对象处于某个状态时,对象进行的一序列动作。 活动用来描述对象处于某个状态时,对象进行的一序列动作。
9.2 状态图的表示
7.理解简单状态图 理解简状态图
例如,我们描述一个烧水器在工作时的行为状态变化。可以采用如图 例如,我们描述一个烧水器在工作时的行为状态变化。可以采用如图96所示进行描述。 所示进行描述。 所示进行描述
•图9-6 烧水器的状态变化图 图
9.2 状态图的表示
9.2.3 分支的表示
9.1 状态机图的概念
1.状态机图 状态机图
状态机图描述对象在整 个生命周期内, 个生命周期内,在外部 事件的作用下,从一种 事件的作用下, 状态转换到另一种状态 的关系图。 的关系图。这种图的节 点是状态(包括初始状 点是状态 包括初始状 态和终止状态), 态和终止状态 ,关系 是转换。图9-1是一个 是转换。 典型的状态机图。 典型的状态机图。
UML学习复习状态图
![UML学习复习状态图](https://img.taocdn.com/s3/m/17c331e164ce0508763231126edb6f1afe007141.png)
2. 并发子状态
有时组合状态有两个或者多个并发的子 状态机,此时称组成状态的子状态为并 发子状态。
顺序子状态与并发子状态的区别在于后 者在同一层次给出两个或多个顺序子状 态,对象处于同一层次中来自每个并发 子状态的一个时序状态中。
说明:
组合状态中也有初始状态和终结状态。
从源状态可以转移到组合状态本身,也 可以直接转移到组合状态中的子状态。
如果一个内部转换带有动作,动作也要 被执行,但是由于没有状态改变发生, 因此不需要执行入口和出口动作。
内部转换和自转换不同,虽然两者都不 改变状态本身,但是自转换会激发入口 动作和出口动作的执行,而内部转换却 不会。
3.4 入口动作与出口动作
入口动作和出口动作表示进入或退出这 个状态所要执行的动作。
监护条件与修改事件的区别:
监护条件只是在引起转换的触发器事件触 发时和事件接收者对事件进行处理时被赋 值一次。
修改事件则可以被多次赋值直到条件为真, 多次赋值满足条件后转换也会被激发。
4.7 时间事件
时间事件代表时间的流逝。 时间事件既可以被指定为绝对形式(天
数),也可以被指定为相对形式(从某 一指定事件发生开始所经历的时间)。 时间事件可以描述一个通知信息,自进 入状态以来某个时间期限已到,时间事 件就会激发状态的转换
状态图
1 状态机 2 状态图 3 状态 4 事件 5 转换 6 状态图建模技术 7 实例——图书馆管理系统的状态图
1 状态机
状态机是展示状态与状态转换的图,包含了一 个类的对象在其生命期间所有状态的序列以及 对象对接受到的事件所产生的反应。
利用状态机可以精确地描述对象的行为。 UML用状态机对软件系统的动态特征建模。 组成:
说明:
UML建模之状态图(Statechart Diagram)
![UML建模之状态图(Statechart Diagram)](https://img.taocdn.com/s3/m/fac59efbf705cc175527091d.png)
状态图目录:一、状态图简介(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)指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。
[UML]UML系列——状态机图statechartdiagram
![[UML]UML系列——状态机图statechartdiagram](https://img.taocdn.com/s3/m/dd8307225b8102d276a20029bd64783e09127da6.png)
[UML]UML系列——状态机图statechartdiagram系列⽂章引⾔状态机图和顺序图、通信图有哪些区别?顺序图、通信图:描述多个对象间的交互状态机图:描述单个对象的状态及引起状态变化的原因实例分析:⼤学⽣学籍管理系统按国家招⽣规定录取的新⽣,持录取通知书,按学校有关要求和规定的期限到校办理⼊学⼿续。
因故不能按期⼊学者,应当向学校请假,假期⼀般不得超过2周。
未请假、请假未准或者请假逾期者,除因不可抗⼒等正当事由意外,视为放弃⼊学资格。
新⽣⼊学后,学校在三个⽉内按照国家招⽣规定对其进⾏复查。
复查合格者予以注册,取得学籍。
复查不合格者,学校区别情况予以处理,直⾄取消⼊学资格。
......学⽣有如下情况之⼀者,应予休学:(⼀)因伤病经学校指定医院诊断,须停课治疗、休养⼀学期1/3时间;(⼆)⼀学期请假缺课超过该学期总学时的1/3;(三)传染性肝炎、肺结核等传染性疾病;(四)因某种特殊原因,学校认为必须休学。
.....学⽣休学⾄少⼀学期,⼀般以⼀年为限。
学⽣复学后,休学之前已记⼊成绩档案的考核成绩继续有效,并作为学籍处理依据.学⽣复学按下列规定办理:(⼀)学⽣因伤病休学申请复学时,须持有⼆级甲等以上医院诊断书,证明⾝体健康,并经学校指定医院复查合格,⽅可复学;(⼆)学⽣休学期满后应于学期的注册期内持有关证明,经教务处核准后编⼊原专业相应班级选课学习;........学⽣有下列情况之⼀者,应予退学:(⼀)学⽣在读期间,3次出现在⼀学期中取得的课程学分不⾜10学分(不含重修和补考学分;毕业学期除外;第⼀次提出警告,第⼆次提出退学警告,由教务处公布名单,院系负责通知学⽣家长);(⼆)休学、保留学籍期满,在规定期限内不办理复学⼿续;(三)休学累计满⼆年,经复查不合格;(四)因伤病需要休学,经学校动员后仍不办理休学⼿续;(五)经学校指定医院确诊患有疾病,或意外伤残⽆法继续在校学习;(六)未请假离校连续2周末参加学校规定的教学活动;(七) 超过学校规定期限未注册⽽⼜⽆正当事由;(⼋)本⼈要求退学。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、复杂转换
转换类型 描述 外部转换 语法
对事件做出响应,引起状态变化 事件(参数)[监护条 或自身转换,同时引发一个特定动作, 件]/活动 如果离开或进入状态将引发进入转换、 离开转换
内部转换
对事件做出响应,并执行一个特 事件(参数)[监护条 定的活动,但并不引起状态变化或进 件]/活动 入转换、离开转换
对对象生命周期建模:
主要描述对象能够响应的事件、对这些事件的响以及过去对当 前行为的影响
对反应型对象建模:
这个对象可能处于的稳定状态、从一个状态到另一个状态之间 的转换所需的触发事件,以及每个状态改变时发生的动作
状态图既可以用来表示一个业务领域的知识,也可以 用来描述设计阶段对象的状态变迁
状态图应用
满足某一时间表达式的情况的出现,例如到达某一时间 或经过了某一时间段。用关键字After或When表示。
状态图的建立步骤
1〉确定状态机的上下文,它可以是一个类、子系统或整个系统。 2〉选择初始状态和终结状态。 3〉发现对象的各种状态。注意应当仔细找出对问题有意义的对象 状态属性,这些属性具有少量的值,且该属性的值的转换受限制。 状态属性值的组合,结合行为有关的事件和动作,就可以确定具有 特定的行为特征的状态。 4〉确定状态可能发生的装移。注意分出从一个状态可能转移到那 些状态,对象的哪些行为可引起状态的转移并找出触发状态转移的 事件。 5〉把必要的动作加到状态或转移上。 6〉复合状态、子状态、历史状态等概念组织和简化一个复杂的状 态机。 7〉分析状态的并发和同步情况。 8〉绘制状态图。 9〉确认每一个状态在某个时间组合之下都是可到达的。确认没有 一个死端状态,对象不能从该状态转移出来。
entry/活动 exit/活动
进入转换 当进入某一状态时,执行相应活动 退出转换 当离开某一状态时,执行相应活动
2、各种转换的区别
进入和退出转换:
当进入一个状态时,执行某个动作;或当退出某个状态 时,执行什么动作。这时就可以使用进入和退出转换来 表示
内部转换:
用来处理一些不离开该状态的事件
3、带有复杂转换的状态图
2、一般状态
延迟事件
是一种特殊的事件,它是指该事件不会触发状态的转 换,当对象处于该状态时事件不会丢失,但会被延迟执 行。 例如,当E-mail程序中正在发送第一封邮件时,用户下
达发送第二封邮件执令就会被延迟,但第一封邮件发送 完成后,这封邮件就会被发送。这种事件就属于延迟事 件
3、复合状态
含有子状态的状态被称为复合状态。 两种表示方法:
订单处理系统
状态图应用
复合(rose)
状态图应用
复杂图 (售票机)
状态图案例分析
一个电子商务系统在订单发生时经过的状 态变化。
状态图案例分析
订单成立状态 主要有: 订单成立 订单取消(Guard:会员订单-缴款期限已过期) 备货中(Guard:已付款、订单成立、库存量足够) 出货中(Effect:扣除商品可接单量及移除购物车中的购买资料) 出货确认(Guard:实际配达日及发票代码、号码均不为空值) 出货完毕(Guard:实际配达日不为空) 出货失败 订单成立(Guard:出货完毕,已付款、鉴赏期结束日期 小于等 于 [系统日期])
也可作为交互中一个的消息发送。
1、信号事件
2、调用和变化事件
调用(call)事件
表示一个操作的调度。请求调用另一个对象的操作。 一般是同步调用。
变化(change)事件
用关键字When,后面跟布尔表达式。 When(temperature > 120) / alerm()
3、时间事件
时间(time)事件
3、复合状态
顺序复合状态图(表示方法1)
3、复合状态
顺序复合状态图(表示方法2)
3、复合状态
并发复合状态图
4、子状态
将子状态单独定义,并对其进行命名(通常以大 写字母开头),然后在需要使用的地方来引用它
4、子状态
例:
5、历史状态
History state
一种伪状态。可以存储退出组合状态时所处的子状态, 则返回组合状态时可以直接回到到相应的子状态。
5、历史状态
例
当从状态“结账”和“显示购物车”返回子状态“显示索引信 息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍然保留原来的
状态内的一个外部可见的伪状态,外部转换可以将它作 为目标,从而被有效连接到指定状态上。
状态图
概述
状态
用于描述一个对象在其生存期间的动态行为,表现对象 响应事件所经历的状态序列以及伴随的动作。
状态图(State Machine Diagram)
用来显示状态,一个状态可用多张状态图描述。
概述
状态图与交互图的区别:
交互图不显示对象所有可能的动态行为,只显示特定交 互(一个具体的用例)中对象的行为。 状态图可以显示对象所有的动态行为。
状态
几种类型:
初态 终态 中间状态 组合状态 历史状态
1、初态和终态
初态(start state)
显示状态图中状态的执行(execution)的开始。 一个状态只能有一个初态,因为每一个执行都是从相 同的地方开始的。如果一个状态用多张图描述,则多 张图用同一个初态;
嵌套状态中可以使用新的初态;
终态(End State)
出口点
状态内的一个外部可见的伪状态,外部转换可以将它作 为源,代表状态内的一个终点。
转换
Transition
两个状态之间的一种关系,表示对象在第一个状态中执 行一定的动作,并在某个特定事件发生而且满足某个条 件时进入第二个状态。每个转换只允许一个事件,一个 事件只允许一个动作
转换的五要素
源状态 目标状态 触发事件 监护条件 动作
延迟事件(deferred event)
延迟到下一状态中处理的事件。
lighting entry/ turnO n d o / b l an k F i v e T i m e s e v e n t po w e r o f f / p o w e r S u p p l y S el f e x i t / tu r n O f f e v e n t se l f / d e f e r
绘制状态图
源目标
无预订
部分预订 预订完
预订关闭
无预订
部分预订 预订完 预订关闭 退订(),使预订人=0 不直接转换 无转换
预订()
不直接转换
预订(),无空座
关闭()
关闭() 关闭()
退订() 无转换 无转换
绘制状态图
细化状态内的活动与转换
绘制状态图
使用复合状态
状态图应用
用途
事件
Event
是对一个时间和空间上占有一定位置的有意义的事情的 规格说明。 事件触发状态的转移
四类主要事件
信号事件 调用事件 变化事件 时间事件
1、信号事件
信号(signer)事件
所谓信号,是指由一个对象异步地发送、并由另外一个
对象接收的一个已命名的对象。
信号事件表示对象接收到某个信号。 信号可以作为状态中一个状态转换的动作而被发送,
状态图案例分析
分析: 1、购物车生成订单进入状态【订单成立】 2、系统检测订单已经付款并且库存量足够,则进入状态【备货 中】 3、物流发货,进入状态【发货中】,状态转移为【发货中】后, 需要做的操作有“扣除商品可接单量及移除购物车中的购买资料” 4、发货完毕后,状态分为【出货确认】和状态【出货失败】, 如果状态是【出货失败】,则【结束】,如果状态为【出货确认】, 则进入下一步。 5、配货人员填写实际配达日期,进入状态【出货完毕】。 6、如果”已付款、鉴赏期结束日期 小于等于 [系统日期]”,则 【订单成立】。
表示一个最后的或者终端状态;
终态的数目可以不确定。
2、一般状态
中间状态的组成:
状态名(name) 进入/退出动作(entry/exit action) 内部转换(internal transition)
不导致状态改变的转换,不会执行 entry 和 exit 动作。
子状态(substate)
嵌套在另外一个状态中的状态。
状态图与活动图的区别:
状态图只建模一个对象的行为,活动图可以建模多个 对象的活动 活动图中也允许建模特定活动中对象的某个状态
基本组成
状态 转换 事件
基本组成
状态
什么是状态(state)
对象生命期中的某个条件或状况,在此期间对象将满足 某些条件、执行某些活动或等待某些事件。
理解
对象在任何时候都会处于某种状态中,所有对象都有状 态。 对象所处的状态决定了它如何响应所检测到的事件或所 接收的消息。 通常,事件使对象从一个状态转向另一个状态(即状态 的转移)