定义
状态图(State Diagram)用来描述一个特定对象在其生命周期中的各种状态以及状态之间的转换。
状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移
方框是状态,箭头为事件。
一个状态图描述了一个状态机,用状态图说明系统的动态视图
状态图对于接口,类或协作的行为建模尤为重要.可用他描述用例实例的生命周期
状态图(UML 1.x规范中的称呼),是一种展示状态机的图,在UML 2.x中则称为状态机图。
作用
-状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序可以清晰看出事件的执行顺序。如果没有状态图就不可避免的要使用大量的文字来描述外部事件的合法顺序。
-清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况,例如对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员在开发程序的过程中加以限制。
-状态图清晰地描述了状态转换时所必须触发的事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入,例如当飞机起飞前半小时不允许售票,在状态图中就可以清晰的看到,可以提醒程序员不要遗漏这些限制条件。
组成
UML状态图主要由五种元素组成,分别是状态、转换、事件、动作和活动。
- 状态:表示对象的生命周期中的一种条件/情况,有初态和终态之分
- 转换:表示两种状态间的一种关系
案例
1、某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。
2、画出ATM取款过程的完整的ATM机的状态机图。
(1)插卡登录:客户登陆ATM系统,入口动作为输入密码,密码错误时,重新输入密码。
(2)业务选择界面:客户登陆ATM系统后系统显示的主界面,以供选择操作类型,入口动作为选择业务操作。
(3)存款:存款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为放入现金,出口动作为发送存款交易记录。
(4)取款:取款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为取出现金,出口动作为发送取款交易记录。
(5)转账:转账动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为转账,出口动作为发送转账交易记录。
(6)修改密码:修改密码动作,入口动作为输入旧密码,密码错误时,重新输入密码,中间动作为验证密码,出口动作为发送修改账户信息。
(7)打印凭条:打印凭条动作,入口动作为打印,出口动作为生成凭条。
(8)查询账户信息:查询账户信息动作,入口动作为显示余额。
(9)退卡:退卡动作,入口动作为退卡。