状态图主要用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。
状态图适合于描述多个用例的单个对象的行为,而不适合描述多个对象之间的行为协作。
所以,常常将状态图与其他技术组合使用。状态图不要对系统中的每个类都画出它的状态图,这样会花费大量的时间和精力,而且没有必要。
事实上,开发人员往往只关心某些关键类的行为,此时为这些类建立状态图可以帮助理解所研究的问题。一般在这 情况下才有必要绘制状态图。
例如:一个报警器可以有两个状态:“监测”状态和“报警“状态。当报警器处于“监测”状态时,如果遇到触发事件“入侵”,则报警器进入“报警”状态;另一方面,当报警器处于“报警”状态时,如果遇到触发事件“复位”时,则进入“监测”状态,其状态图描述如下:
需要注意的是,与UML其他图不同之处在于状态图是用来描述一个对象的状态变化的。
它与UML的类图和对象图一起使用,可以很好的描述特定对象的结构和行为。