状态图目录:
一、状态图简介(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)
指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
状态用圆角矩形表示
初态和终态(Initial and Final States)
初态用实心圆点表示,终态用圆形内嵌圆点表示。
2、转移(Transitions)
转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态(Target State)
事件标记(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。
警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。
结果(Effect):对象状态转移后的结果。
3、动作(State Actions)
动作(Actions)是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的。
在上例中,对象状态转移后的结果显示在转移线上,如果目标状态有许多转移,而且每个转移有相同的结果,这时把转移后的结果(Effect)展示在目标状态中(Target State)更好一些,可以定义进入动作(Entry Action )和退出动作(Exit Action),如下图
4、自身转移(Self-Transitions)
状态可以有返回自身状态的转移,称之为自身转移(Self-Transitions)
2S后,Poll input事件执行,转移到自己状态【Waiting】
5、组合状态(Compound States)
嵌套在另外一个状态中的状态称之为子状态(sub-state),一个含有子状态的状态被称作组合状态(Compound States). 如下图,【Check PIN】是组合状态,【Enter PIN】是子状态。
也可用以下方式进行描述
如上图,状态机【Check PIN】的细节被分割到另外一个图中了。
6、进入节点(Entry Point)
如下图所示,由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态【Ready】,则此节点称之为进入节点(Entry Point)
7、退出节点(Exit Point)
8、历史状态(History States)
历史状态是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。
在上图的状态图中,正常的状态顺序是:【Washing】- >【Rinsing】->【Spinning】。
如果是从状态【Rinsing】突然停电(Power Cut)退出,,洗衣机停止工作进入状态【Power Off】,当电力恢复时直接进入状态【Running】。
9、并发区域(Concurrent Regions)
状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。如下图刹车系统,同时进入前刹车【Applying Front Brakes】状态和后刹车【Applying Rear Brakes】状态。
三、状态图案例分析(State Diagram Example Analysis)
按照blink518的建议(“出货中”是属于条件分支应该使用Decision),改成如下图也是很好的做法:
订单成立状态主要有:
订单成立
订单取消(Guard:会员订单-缴款期限已过期)
备货中(Guard:已付款、订单成立、库存量足够)
出货中(Effect:扣除商品可接单量及移除购物车中的购买资料)
出货确认(Guard:实际配达日及发票代码、号码均不为空值)
出货完毕(Guard:实际配达日不为空)
出货失败
订单成立(Guard:出货完毕,已付款、鉴赏期结束日期 小于等于 [系统日期])
分析:
1、购物车生成订单进入状态【订单成立】
2、系统检测订单已经付款并且库存量足够,则进入状态【备货中】
3、物流发货,进入状态【发货中】,状态转移为【发货中】后,需要做的操作有“扣除商品可接单量及移除购物车中的购买资料”
4、发货完毕后,状态分为【出货确认】和状态【出货失败】,如果状态是【出货失败】,则【结束】,如果状态为【出货确认】,则进入下一步。
5、配货人员填写实际配达日期,进入状态【出货完毕】。
6、如果”已付款、鉴赏期结束日期 小于等于 [系统日期]”,则【订单成立】。
四、总结(Summary)
状态图重点在于描述对象的状态及其状态之间的转移,状态图的基本元素主要有:状态、转移、动作、自身转移、组合状态、进入节点、退出节点、历史状态、并发区域等,状态中的事件分为调用事件(Call)、变化事件(Change)、时间事件(Time)和信号事件(Singal)。最后以实例对状态对进行了分析。
分享到:
相关推荐
**UML系列图--状态图** UML(统一建模语言)是软件开发中的一个标准建模工具,用于描述系统的行为和结构。状态图是UML中的一种图表类型,专门用来表示对象在其生命周期中可能经历的各种状态以及这些状态之间的转换...
状态图是统一建模语言(UML)中用于描绘对象在生命周期中可能经历的状态变化以及在不同事件驱动下的状态转移的图表。它是一种强大的工具,能够帮助开发者清晰地理解对象的行为,特别是在处理对象状态变化复杂的情况...
状态图是一种重要的建模工具,用于表示一个系统中对象的不同状态以及这些状态之间的转换。它在软件工程、计算机科学和业务流程建模等领域广泛应用。本文将深入探讨如何使用一款基于JHotDraw源码开发的单层状态图绘制...
在LabVIEW中,状态图(Statechart)是一种高级的编程工具,用于构建复杂的、基于事件的状态机模型。状态图是状态机设计的一个可视化表示,它允许开发者以一种直观的方式描述系统在不同条件下的行为。 状态图的核心...
实验5-状态机设计1的核心目的在于通过设计和实现Moore型与Mealy型状态机来检测8位二进制数序列中是否存在特定的子序列“01011”。这一过程不仅加深了对两种状态机类型的理解,而且通过实践操作,提升了学生在硬件...
**UML笔记2:状态图、活动图、协作图、组件图、配置图详解** **一、状态图(State Diagram)** 状态图是UML(统一建模语言)中用于描述对象在其生命周期中的行为,特别是在不同状态之间的转换。它显示了一个对象...
Labview状态图(State Chart)是一种强大的编程工具,用于创建具有复杂行为和顺序控制的程序。在Labview中,状态图是一种图形化编程方法,它使用直观的图表来表示不同状态之间的转换,使得非线性逻辑和事件驱动的...
本章主要介绍了活动图的基础知识、应用及其与状态图的区别。 1. 活动图的基本构成: - **活动**:在活动图中,活动通常用圆角矩形表示,代表执行中的任务或动作。 - **转换**:转换是通过带箭头的实线段来表示的...
企业人事管理系统设计中的E-R图(实体关系图)是数据库设计的重要组成部分,它用于描绘实体、属性和实体间的关系。在这个系统中,我们关注的主要实体包括员工、学历、婚姻状况、企业工作岗位和企业部门信息。 1. **...
5. **最佳实践**:教程可能涵盖使用状态图时的最佳实践,例如避免深层嵌套的状态,合理规划状态布局,以及有效地管理状态间的通信。 6. **错误处理**:在状态图中,错误处理是重要的考虑因素。学习如何在状态图中...
在MATLAB中开发水的热力学状态图是一个涉及热力学、流体动力学以及数值计算的项目。这个项目的目标是利用MATLAB强大的图形处理能力和数值计算功能,来模拟和展示水在不同条件下的热力学状态,如温度(t)、熵(s)、...
5. **状态图**: - 状态图描述了对象在其生命周期中可能经历的一系列状态以及触发状态转移的事件。状态由矩形表示,状态间的迁移由带有箭头的线表示。初始状态用实心圆表示,终止状态用带圈的实心圆表示。 6. **...
### UML状态图详解 #### 一、UML状态图概览 UML(Unified Modeling Language,统一建模语言)是一种用于软件系统设计的标准建模语言。它通过一系列图形化的表示方法来帮助开发者理解系统的设计架构,并有效地进行...
状态图,也称为状态转换图或有限状态机(FSM),是UML(统一建模语言)中的一种动态行为图。它用于描述系统、对象或子系统在其生命周期中可能发生的状态变化以及触发这些变化的事件。状态图特别适用于建模具有复杂...
在学生管理系统的设计中,用例图、类图、活动图和状态图是UML中的关键图表,它们各自从不同的角度描述系统的功能、结构、行为和对象状态。 一、用例图 用例图是描述系统外部参与者与系统交互的一种图形表示,它展示...
在实际应用中,如交通安全分析(第5题)、比较不同物体的运动状态(第7、11、12题)和质点运动的细节(第13、14题),这些图像提供了关键信息。掌握如何解读和利用这些图像,对理解物理现象和解决问题具有深远意义。
状态图是系统分析的一种常用工具,它通过建立类对象的生存周期模型来描述对象随时间变化的动态行为。 状态机 状态机是展示状态与状态转换的图。通常一个状态机依附于一个类,并且描述一个类的实例。状态机包含了一个...
状态图是UML(统一建模语言)中的一种图表,用于描绘对象在其生命周期中的动态行为。它通过展示对象响应事件而经历的状态序列以及伴随的动作,帮助我们理解系统的行为模式。状态图由一系列的状态和状态之间的转换...
数据流图(Data Flow Diagram, DFD)和状态图(State Chart Diagram)是软件工程中两种重要的建模工具,尤其在系统分析和设计阶段发挥着关键作用。它们帮助开发者理解和表述系统的逻辑流程与动态行为。 数据流图是...