一、状态图
1-1、状态图的定义
状态图,展现了一个状态机,由:状态、转换、事件和活动组成,是系统的动态视图。
活动(动作) 可以在状态内执行也可以在状态转换(迁移) 时执行。
状态图强调:行为的事件顺序。
1-2、状态图的组成
1、状态
状态图通常包括:简单状态、组合状态。
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态,又做动作。
在状态转换图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。
初态用一个黑圆点表示,终态用黑圆点外加一个圆表示。一张状态图中只能有一个初态,而终态可以没有,也可以有多个。
状态图中的状态用一个圆角四边形表示(可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名称和值,这部分是可选的;下面部分是活动表,这部分也是可选的 ),状态之间为状态转换,用一条带箭头的线表示。带箭头的线上的事件发生时,状态转换开始(有时也称之为转换“点火”或转换被“触发”)。
转换:一条带箭头的线;(转换的别名:迁移)
一个状态到另一个状态的转变,就是转换;
带箭头的线上的的文字,就是事件。
示例:
2、活动(活动表)
活动是由若干动作组成。
状态表中的活动表的语法结构:
事件名(参数表)/动作表达式
事件名可以是任何事件的名称。
在活动表中经常使用下述 3 种标准事件:
entry、exit 和 do。entry事件:指定进入该状态的动作;
exit事件:指定退出该状态的动作;
do事件:指定在该状态下的动作。
需要时可以为事件指定参数表(×)。
活动表中的动作表达式描述应做的具体动作。
示例:
这些活动是状态的内部活动。
3、事件
转换包括两个状态:源状态、目标状态。
事件,是在某个特定时刻发生的事情,它是对引起系统做动作、从一个状态转换到另个状态的外界事件的抽象。例如,观众使用电视遥控器,用户移动鼠标、单击鼠标等都是事件。
简而言之,事件就是引起系统做动作、转换状态的控制信息。
状态变迁通常是由事件触发的,在这种情况下,应在表示状态转换的箭头线上标出触发转换的事件表达式。
如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
事件表达式的语法如下:
事件说明[监护条件]/动作表达式
其中,事件说明的语法为:事件名 (参数表 );
监护条件是一个布尔表达式;
如果同时使用事件说明和监护条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。
如果只有监护条件,没有事件说明,则只要监护条件为真,状态转换就发生。
动作表达式是一个过程表达式,当状态转换开始时执行该表达式。
活动(动作) 可以在状态内执行也可以在状态转换(迁移) 时执行。
示例:
1-3、状态图的概念
状态图包括:简单状态、组合状态、转换(事件、动作)。
状态是指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果。
当某个事件发生后,对象的状态将发生变化。
嵌套在另外一个状态中的状态称为子状态,含有子状态的状态称为组合状态。
转换是两个状态之间的种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界(监护)条件满足时进入目标状态。
动作是一个可执行的原子操作,是不可中断的,其执行时间是可忽略不计的。
直接通过进入节点进入状态,通过退出节点可以结束状态。
示例:
状态图,是对系统的动态方面建模。这些动态方面包括的是一种对象的按事件排序的行为。
当对系统、类、用例的动态方面建模时,通常是反应型对象建模。
1-4、真题
真题1:
并发状态:
真题2:
真题3:
真题4:
真题5:
真题6:
真题7:
二、活动图
2-1、活动图的定义
活动图,是一种特殊的状态图。
展现了在系统内,从一个活动到另一个活动的流程。
专注于系统的动态视图。
2-2、活动图的组成
监护表达式,在活动图中,是和分支在一起的。
(在状态图中是:监护条件)
活动图可以表示为:分支、合并、分岔、汇合。
2-3、区分:状态图、活动图
转换的箭头上有文字(事件),则是:状态图;
转换的箭头上没有文字,则是:状态图;
2-4、通常有两种使用活动图的方式:
1、对工作流建模;
2、对操作建模。
2-5、活动图、状态图的例子
活动图的例子:
状态图的例子:
2-6、真题
真题1:
真题2:
真题3:
真题4: