状态图简介
状态图演示元素(通常是一个类)如何在状态之间移动,并根据转换触发器和约束条件对其行为进行分类。
您可以从图表工具箱的“状态”页面生成状态图元素和连接器。
状态图示例
这是一个复合状态图,其中“Saved”状态含有子图,双击“Saved”可显示其子图。
默认情况下,子图在表示其上下文中父对象的带标记的框架中显示。您可以右键单击背景并选择“隐藏关系图框架”选项来隐藏该框架,并在“显示关系图框架”选项上再次显示该框架。
或者,您也可以右键单击主图上的复合元素,并选择‘AdvancedBayShowCompositeDiagram’选项,该选项再次在标记的框架中显示子图,但这次是在父图的上下文中显示,如下图所示。
状态图的元素
图标 |
元素 |
描述 |
|
状态 |
State表示某些不变条件保持的情况;该条件可以是静态的(等待事件),也可以是动态的(执行一组活动)。 |
|
状态机 |
State
Machine是相关状态元素组的容器 |
|
初始 |
Initial用于表示复合状态的默认状态的伪状态;复合状态的每个区域可以有一个初始顶点 |
|
结束 |
Final表示活动的完成;在到达结束时,活动关系图中的所有执行都将被中止。 |
|
历史 |
UML定义了两种History状态:浅历史和深历史。 |
|
同步 |
Synch用于指示状态机的并发路径是同步的。它们用于分割和重新连接并行处理的周期。 |
|
对象 |
Object是类在运行时的特定实例。 |
|
选择 |
Choice用于构成复杂的过渡路径,其中输出的过渡路径由动态的运行时条件决定。 |
|
连接 |
在状态图中,用Junction设计复杂的过渡路径。连接可以用于将多条路径组合或合并到共享的转换路径中。 |
|
终止 |
Terminate表示在进入其状态时,状态机的执行结束。 |
|
分支/联接 |
Fork/Join元素可用于:1)将单个流拆分为多个并发流,2)连接多个并发流,或3)将多个传入流连接并分叉到多个传出流。 |
|
状态(State)
状态表示某些不变条件保持的情况;该条件可以是静态的(等待事件),也可以是动态的(执行一组活动)。状态建模通常与类相关,并描述类或元素可启用的状态以及使元素能够在其中移动的转换。状态有两种:简单状态和复合状态,它们都是从工具箱中的“State”图标创建的。
此外,也有伪态,类似于一个状态的某些方面,但具有预先定义的含义。伪状态对复杂的过渡路径进行建模,并对常见的状态机行为进行分类。
可以使用操作为State定义进入、执行和退出操作。State元素的三个操作(进入, 执行和退出)通过“功能”窗口的“行为”选项卡创建和定义(开始>桌面>设计>功能)。该选项卡仅在选定元素为状态时显示。它会自动列出这三个操作,您可以在“名称/注释”字段中键入文本值,也可以使用“属性”窗口的“行为”页面分配代码的行为元素(请参见操作行为帮助主题)。
状态机(StateMachine)
StateMachine元素是相关状态元素组的容器。您可以创建状态机图,显示相互关联的状态元素的组织,并将每个部分包含在一个StateMachine元素中。还可以在StateMachine元素上创建区域。
初始(Initial)
初始元素由活动图和状态机图使用。在活动图中,它定义了调用活动时流的开始。对于状态图,初始元素是一个伪状态,用于表示复合状态的默认状态;复合状态的每个区域可以有一个初始顶点。
结束(Final)
结束元素可以用于定义活动中的最终状态,这是在UML2.1中定义的,类型为FinalNode。ActivityFinal元素指示活动的完成;在到达Finish时,活动关系图中的所有执行都将被中止。另一种类型的最终节点“Flow
Final”描述了对活动中的其他执行流没有影响的退出系统。
历史(History)
UML定义了两种历史状态:浅历史和深历史。浅历史子状态用于表示复合状态的最新活动子状态;如果存在,则该状态不会递归到该子状态的活动配置;如果从未输入复合状态,则可以使用单个连接器来描述默认的浅历史记录状态。
相反,深历史子状态反映了复合状态的最新活动配置。包括所有区域的活动子状态,并在存在的情况下递归到这些子状态的活动子状态。在一个复合状态中最多可以存在一个深历史和一个浅历史。您可以使用“高级”元素上下文菜单,将浅历史记录子状态重新分配为深历史记录子状态。
同步(Synch)
同步状态对于指示状态机的并发路径已同步,很有用。它用于拆分和重新加入并行处理的周期,使路径进入同步状态后,让新出现的过渡指示一致。
对象(Object)
对象是运行时类的特定实例。例如,带有牌照AAA-001的汽车是具有牌照号属性的通用汽车类别的实例。在分析中经常使用对象来表示业务中存在的大量人工制品和物品,例如纸片,传真和信息。若要对对象在运行时的行为进行建模,可使用运行时状态。
选择(Choice)
选择用于在状态图中构成复杂的过渡路径,其中传出的过渡路径由动态的运行时条件决定。运行时条件由状态机决定选择的路径上执行的操作确定。
连接(Junction)
连接(Junction)用于设计状态图中的复杂过渡路径。连接点可用于将多个路径合并或合并为共享的过渡路径。另外,连接结点可以将进入的路径分为多个路径,类似于分支(Fork)状态。与Forks或Joins不同,Junctions可以将guard应用于每个传入或传出的过渡,这样,如果guard表达式为False,则禁用过渡。
分支/联接(Fork/Join)
分支用于将传入的转换分为并发的多个转换,从而导致不同的目标状态。联接用于将并发的多个转换合并到一个导致单个目标的转换中。两者是逆语义。
状态图连接器工具箱图标
图标 |
元素 |
描述 |
|
转换 |
转换连接器表示状态机关系图中从一个状态到另一个状态的逻辑移动。 |
|
对象流 |
对象流连接两个元素,并通过它传递特定的数据,对活动转换进行建模。 |
希望本文对您的建模工作有帮助。更多的有关EA建模资料如下:
视频:http://tool.uml.com.cn/ToolsEA/jswd-ysm.asp?partname=sp
文章:
http://tool.uml.com.cn/ToolsEA/docea.asp?partname=wk
如果您希望了解更多信息:
下载PDF:UML的状态图建模(使用EA)
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|