UML--状态图

一、 概述

状态图(State Diagram)用来描述一个特定对象在其生命周期中的各种状态以及状态之间的转换。这些对象可以是类、接口等等

二、作用

-状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序可以清晰看出事件的执行顺序。如果没有状态图就不可避免的要使用大量的文字来描述外部事件的合法顺序。
-清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况,例如对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员在开发程序的过程中加以限制。
-状态图清晰地描述了状态转换时所必须触发的事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入,例如当飞机起飞前半小时不允许售票,在状态图中就可以清晰的看到,可以提醒程序员不要遗漏这些限制条件。

三、常用元素

名称 解释
初始状态 状态图用初始状态(Initial State)表示对象创建时的状态,每一个状态图都要有且只有一个初始状态,用实心的圆点表示
终止状态 每一个状态图可能有多个终止状态或者没有(Final State),用一个实心圆外加一个圆圈表示
状态框 指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。状态用圆角矩形表示,每个状态框中有两格:上格放置状态名称,下格说明处于该状态时,系统或对象要进行的活动(Action)
转移 从一个状态到另一个状态之间的连线称为转移(Transition)转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发,用带有标记事件的箭头表示。

没有终止状态的例子

               

四、状态图简单状态与高级技巧

状态:不包含其他状态的状态称为简单状态。

        

内部行为与状态:

输入:   表示进入该状态时执行的动作。

执行:  表示处于该状态时执行的动作。

退出:  表示退出该状态时执行的动作。

              

复合状态:又称为组合状态,可以将若干状态组织在一起可以得到一个复合状态,包含在一个复合状态中的状态称为子状态。

          

并发状态+子状态 :

          

五、案例

1、某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。

                

2、画出ATM取款过程的完整的ATM机的状态机图。

(1)插卡登录:客户登陆ATM系统,入口动作为输入密码,密码错误时,重新输入密码。

(2)业务选择界面:客户登陆ATM系统后系统显示的主界面,以供选择操作类型,入口动作为选择业务操作。

(3)存款:存款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为放入现金,出口动作为发送存款交易记录。

(4)取款:取款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为取出现金,出口动作为发送取款交易记录。

(5)转账:转账动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为转账,出口动作为发送转账交易记录。

(6)修改密码:修改密码动作,入口动作为输入旧密码,密码错误时,重新输入密码,中间动作为验证密码,出口动作为发送修改账户信息。

(7)打印凭条:打印凭条动作,入口动作为打印,出口动作为生成凭条。

(8)查询账户信息:查询账户信息动作,入口动作为显示余额。

(9)退卡:退卡动作,入口动作为退卡。

                           

猜你喜欢

转载自blog.csdn.net/neusoft2016/article/details/116902865