【StarUML】状态图

   状态图以可视化地方式将对象的各个生命周期展现出来,表现为一个个的状态,状态之间的流转以及流转触发方式、触发条件等。

  image

  例如此,有三个状态,每个圆角矩形代表着一个状态,状态之间通过箭头表示状态流转,箭头上的文字说明表示流转的触发时间和条件。

  1、基本元素

      a、状态(state)

          一个对象,在其生命周期里会执行很多的命令,将这些命令进行归类,就成了一个个的状态,当触发了某些事件,一个状态会流转到下一个状态。

          image
          这就代表着一个状态。

    

    b、初态(initial)和终态(final)

        初态:状态机的起点,它能流转到别的状态,别的状态不能流转到它。

        终态:状态机的重点,代表着对象的声明周期已经结束,只能由别的状态流转到它,它不能流转到任何其他状态。

        image

   c、流转(Transitions)

       流转即状态之间的变化,在StarUML里用箭头表示,触发状态的流转一定是出现了某个事情,所以流转箭头上一定包含触发事件,除此之外还会包含其他一些元素

       (1) 事件标识  它可以是一个信号、条件变化、时间表达式(调用事件(Call)、变化事件(Change)、时间事件(Time)和信号事件(Singal));

       (2) 警戒条件  当事件发生之后,并不是所有的情况,都会发生状态流转的,还需要满足警戒条件,才能流转

       (3) 结果 状态流转之后发生的事情(状态流转除了导致当前输出的状态变化,还会发生一些其他的结果,这里就是用于补充的)

        image

        一条流转线上,可以增加多个,前提是 警戒条件和结果是一致的,如果不一致需要重新画

       image

       添加多个事件的方法

       image

       添加结果的方法

       image

       添加警戒条件是在属性里添加的

       image

  

    d、动作(State Action)

        动作分为进、出两个动作,这是状态机一个非常强大的地方,对象在进入某个状态的时候,在进动作里初始化一些变量,构建该状态中命令集合的运行环境,而在出动作里,可以打扫战场,清理一些变量,与进动作相呼应

        image

       添加进出动作的方法:双击状态名

       image


    e、自身转移(Self-Transitions)

        状态机中状态的转化中,还包含有自身状态转移

        image

        after 2 seconds 是事件,pull 是结果,其实pull 也可以放在waiting状态中的进动作中,不过表意可能就没有放在结果中那么好。

        image 

  

     f、进入节点(Entry Point)、退出节点(Exit Point)

       有的时候,对象没有经过初始化,直接进入到某个状态,叫做进入节点;

       与此相对应的是退出节点,一般用于针对异常情况退出。

      image


2、高级元素

    a、组合状态(Composed State)

       组合状态就是指状态嵌套,一个状态嵌套在另一个状态里,模块化设计中经常会用到这个。  

    image


    b、历史状态

      历史状态实际上不是一种状态,而是一个逻辑,它的作用对象是组合状态,当组合状态中突然因为某个突发事件跳出了组合状态,进入到外面的状态,当再次进入到组合状态的时候,不是从组合状态的第一个状态走起,而是从上次断掉的状态继续往下走

     image

     如果在组合状态”做饭”中的子状态”做饭”执行的时候,突然累了,跳转到”休息”状态,当休息好了之后,从”休息”状态跳回“做饭”状态的时候,不需要重新开始,即不需要从“准备做饭”开始,而是从“做饭开始”。


    c、并发区域(Concurrent Regions)

        并发区域是针对于组合状态的,对于状态机来说,在一个时刻,对象只允许处于一种状态,如果实际情况下出现两种状态同时运行,那么一般的做法是将两个状态合并成一个组合状态,大状态内部违背状态机的唯一状态的原则,以保证整个系统的遵守原则。并发区域由分叉引出,但不一定要由汇合结束。

       image


3、案例

    image

    image

  

   本文学习对象:https://blog.csdn.net/heshengfen123/article/details/9361959

原文地址:https://www.cnblogs.com/jimmyai/p/star_uml_state_machine.html