第9章 状态机图
- 格式:ppt
- 大小:1.69 MB
- 文档页数:50
产品之术一目了然的状态机图什么状态机图,它的使用情景是什么?文章为你解读。
做产品的时候,直觉我们当遇到一些比较复杂的逻辑问题。
比如状态的转换,字段状态的确认,权限的控制,状态的对应。
而普通的流程图,或时序图,相当侧重于流程特技和动作的描述,对于第三类和状态的解读缺乏准确直观。
这里我们推荐一种方式,就是图表画一个简单的状态机图:那么什么是状态机呢?状态机我们将的一般是指有限状态机:有限状态机,(英语:Finite-statemachine,FSM),又称有限状态自动机,简称状态机,是步法表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
[1]有限状态机,又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间动作转移和的等行为的数学模型。
[1]有限状态机可以将复杂的逻辑简化为有限个稳定状态,在稳定状态中判断事件。
其中有限不是指有限是非次处理,而是有限个稳定状态,并且有限状态机是一个闭环系统,可以用有限的初始状态处理无尽有限的事务。
有限状态机是一种用来进行对象行为建模的工具,其作用主要积极作用是描述对象在它的生命周期内所历经的状态序列,以及如何响应来自外界的各种事件。
在计算机科学中,非常有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。
基本元素当你需要描绘一个对象或系统的行为状态时,相比于直接的语言描述,更推荐使用状态机表或状态机图的形式。
首先我们看一下基本元素:做需求时,至少要了解以下三种元素:起始、终止、状态、历史状态。
再加上动作和条件,我们就可以完成一个状态机图了:所以对于数据类型图来说,基本要用到6个元素:对于历史相态的使用,我们可以参考资料下面的案例。
比如我们举个简单的例子,一个洗衣机的快洗净模式状态图:遇到断电的时候,机器是有缓存的,所以跳出流程恢复操作方法流程之后,是会回到历史竞技状态。
状态机表怎么画?首先我们看得出来下下面这张状态机图,展示了一张简单的单审批人的状态流转情况。
第一章测试1.1968年,在德国Garmish召开的NATO计算机科学会议上首先提出了“软件工程的概念”。
()A:错B:对答案:B2.软件生存周期是指软件产品从形成概念开始,经过开发、使用,直到维护的全过程。
()A:错B:对答案:A3.软件设计是软件需求向软件实现的转化过程。
()A:错B:对答案:B4.下列属于渐进式开发模型的是():A:螺旋模型B:瀑布模型C:原型模型D:统一软件开发过程答案:AC5.瀑布模型的优点是:()A:只有在项目生命周期的后期才能看到结果B:为项目提供了按阶段划分的检查点C:当前一阶段完成后只需要去关注后续阶段D:在项目各个阶段之间极少有反馈答案:BC第二章测试1.UML用于功能建模的图为()。
A:类图B:顺序图C:用例图D:活动图答案:C2.UML的组成主要有()。
A:图B:视图C:通用机制D:模型元素答案:ABCD3.UML应用领域很广泛,可用于商业建模。
()A:错B:对答案:B4.状态机图是一种交互视图。
()A:错B:对答案:A5.任何建模语言都以静态建模为基础。
()A:错B:对答案:B第三章测试1.以下类型的内聚的内聚性最高的是()A:逻辑内聚B:偶然内聚C:瞬时内聚D:过程内聚答案:D2.为用户使用目标软件系统以实现其所有业务需求而提供友好的人机交互方式是指()A:算法设计B:数据模型设计C:体系结构设计D:界面设计答案:D3.软件设计的最终输出是:()A:软件使用说明书B:软件需求说明书C:软件代码D:软件设计规格说明书答案:D4.软件设计质量将决定最终软件产品的质量。
()A:对B:错答案:A5.基于评估与转换的设计方法中的关键环节是对软件体系结构进行评估。
()A:错B:对答案:A第四章测试1.描述概念模型的手段是()A:数据类B:分析类C:实体类D:边界类答案:B2.用户界面设计在数据模型设计之前进行。
()A:对B:错答案:B3.面向对象软件设计过程,从领域概念到设计概念和代码实现,都以任何对象为核心。
状态机图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)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。
它是一个瞬时状态,用于构造转换的细节。
当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。
UML根底与Rose建模实用教程课后习题及答案第1章面向对象概述1. 填空题〔1〕软件对象可以这样定义:所谓软件对象,是一种将状态和行为有机结合起来形成的软件构造模型,它可以用来描述现实世界中的一个对象。
〔2〕类是具有一样属性和操作的一组对象的组合,即抽象模型中的“类〞描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。
〔3〕面向对象程序的根本特征是抽象、封装、继承和多态。
2. 选择题〔1〕可以认为对象是ABC。
〔A〕某种可被人感知的事物〔B〕思维、感觉或动作所能作用的物质〔C〕思维、感觉或动作所能作用的精神体〔D〕不能被思维、感觉或动作作用的精神体〔2〕类的定义要包含以下的要素ABD。
〔A〕类的属性〔B〕类所要执行的操作〔C〕类的编号〔D〕属性的类型〔3〕面向对象程序的根本特征不包括B。
〔A〕封装〔B〕多样性〔C〕抽象〔D〕继承〔4〕以下关于类与对象的关系的说法不正确的选项是A。
〔A〕有些对象是不能被抽象成类的〔B〕类给出了属于该类的全部对象的抽象定义〔C〕类是对象集合的再抽象〔D〕类用来在存中开辟一个数据区,并存储新对象的属性3. 简答题〔1〕什么是对象?试着列举三个现实中的例子。
对象是某种可被人感知的事物,也可是思维、感觉或动作所能作用的物质或精神体,例如桌子.椅子.汽车等。
〔2〕什么是抽象?抽象是对现实世界信息的简化。
能够通过抽象将需要的事物进展简化、将事物特征进展概括、将抽象模型组织为层次构造、使软件重用得以保证。
〔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)状态机图通过判定可以更好地描述⼯作流在不同的条件下⽽出现的分⽀。
状态机图的组成: 简单状态、转换、伪状态。
简单状态 状态是状态机图的重要组成部分,它描述了⼀个对象稳定在的某⼀个持续过程或所处状况,与动态⾏为的执⾏所产⽣的结果。