UML-状态图
2018-12-13 本文已影响19人
MoringChen
状态图有什么用
状态图用于描述各个状态的变化情况,当你陷入了繁杂大量的状态转换的时候,使用状态图会让这一切都变得清晰起来
状态图的组成
- 简单状态(Simple State)
简单状态没有子状态机和域,UML中使用带拐点的矩形标示简单状态,并且状态名字写在矩形内部。
-
组合状态(Composite State)
组合状态被定义为用用子状态或者嵌套状态的状态行为,子状态可以是顺序发生的也可以是并发发生,组合状态里至少有一个域,如下图含有一个域
组合状态 - 起始状态(Initial Pseudostate),终止状态(Final State),(行为转移)Behavioral Transition
起始状态和终止状态.png
如图黑色实心为起始状态,末端双环圆为终止状态,中间连接线为行为转移,其中isAuthed为一个guard说明满足该条件才会进行状态转移,然后执行函数auidt。
官方例子
如下图是一个Java线程状态机图(协议状态机图)
官方例子.png如图 New状态是一个线程被创建但是没有执行start()方法时候状态。
在JVM看来当一个线程在Runnable时候它是在运行,但是在os看来却未必,因为线程可能没有获取到处理器。所以可以考虑把Runnable看为一个内部有两个子状态的组合状态,当一个线程状态进入Runnable时候,首先进入Ready状态(其他资源已经就绪,就差cpu),由线程调度策略决定何时把这个线程从Ready转变为running状态,函数Thread.yield() 则知识线程调度暂定当前线程执行,把线程从running状态转变为Ready状态…