《统一建模语言状态图和活动》由会员分享,可在线阅读,更多相关《统一建模语言状态图和活动(75页珍藏版)》请在金锄头文库上搜索。
1、第五章第五章 状态图和活动图状态图和活动图统一建模语言Unified Modeling Language统一建模语言状态图和活动第五章第五章 状态图和活动图状态图和活动图 状态图状态图状态图的定义状态图的定义状态图的符号状态图的符号状态图的动作和事件状态图的动作和事件组合状态组合状态状态图的建模方法状态图的建模方法活动图活动图活动图的定义活动图的定义活动图的符号活动图的符号活动图中的条件活动图中的条件活动图的建模方法活动图的建模方法统一建模语言状态图和活动状态图的定义状态图的定义 状态图用来建模对象是如何改变其状态以响应状态图用来建模对象是如何改变其状态以响应事件和展示对象从创建到删除的生命周
2、期。状态定事件和展示对象从创建到删除的生命周期。状态定义为对象行为在某一个时刻的快照或者转折点。例义为对象行为在某一个时刻的快照或者转折点。例如,计算机的状态可以定义为开机、启动、工作中、如,计算机的状态可以定义为开机、启动、工作中、空闲、关机和离线等。空闲、关机和离线等。状态图状态图的任务就是用来描述的任务就是用来描述一个对象一个对象所处的可能状态以及状态之间的转移,并所处的可能状态以及状态之间的转移,并给出状态变化序列的起点与终点。给出状态变化序列的起点与终点。统一建模语言状态图和活动 状态图除了可以用于描述对象接收事件触发时的行为状态状态图除了可以用于描述对象接收事件触发时的行为状态外,
3、它还可以用于许多其他情况。例如,状态图可以用来说明外,它还可以用于许多其他情况。例如,状态图可以用来说明基于用户输入的屏幕状态改变,也可以用来说明复杂用例的状基于用户输入的屏幕状态改变,也可以用来说明复杂用例的状态进展情况。可建模状态图的对象有:态进展情况。可建模状态图的对象有:UNIX进程状态图进程状态图状态图的定义状态图的定义类类用例用例子系统子系统整个系统整个系统统一建模语言状态图和活动 在一般系统中,不需对每个类创建状态图。当一个类实例在一般系统中,不需对每个类创建状态图。当一个类实例(对象)有多种状态,每种状态中的行为表现又不相同,则可(对象)有多种状态,每种状态中的行为表现又不相同
4、,则可创建状态图。例如,银行帐户可以有几种不同的状态,可以打创建状态图。例如,银行帐户可以有几种不同的状态,可以打开、关闭或透支。在这些不同状态下,帐户的处理功能是不同开、关闭或透支。在这些不同状态下,帐户的处理功能是不同的。的。统一建模语言状态图和活动第五章第五章 状态图和活动图状态图和活动图 状态图状态图状态图的定义状态图的定义状态图的符号状态图的符号状态图的动作和事件状态图的动作和事件组合状态组合状态状态图的建模方法状态图的建模方法活动图活动图活动图的定义活动图的定义活动图的符号活动图的符号活动图中的条件活动图中的条件活动图的建模方法活动图的建模方法统一建模语言状态图和活动状态图的符号状
5、态图的符号 状态图由状态、转移和事件组成。联合使用状态状态图由状态、转移和事件组成。联合使用状态和转移可以更好地建模它们,有时需要包含决策点和和转移可以更好地建模它们,有时需要包含决策点和同步条来显示更高层次的细节信息。同步条来显示更高层次的细节信息。1.1.状态状态 状态图中共有状态图中共有3 3种独立的状态标记符,如下图所示种独立的状态标记符,如下图所示统一建模语言状态图和活动 基本状态显示为圆角基本状态显示为圆角矩形矩形。状态的名称放在矩形。状态的名称放在矩形中。这种标记符代表模型中满足条件的一个点。例如,中。这种标记符代表模型中满足条件的一个点。例如,诊断机的状态示例可能包含开、关、诊
6、断和空闲等。诊断机的状态示例可能包含开、关、诊断和空闲等。标准状态的名称指示满足了什么条件,如下图所示。标准状态的名称指示满足了什么条件,如下图所示。状态图的符号状态图的符号(续续)统一建模语言状态图和活动 开始状态和结束状态标记符是指示模型的开始和结束状态开始状态和结束状态标记符是指示模型的开始和结束状态的特殊标记符。模型中的的特殊标记符。模型中的开始状态开始状态是一个实心点。是一个实心点。结束状态结束状态是是带有圆圈的实心点。带有圆圈的实心点。模型不必模型不必同时具有同时具有开始和结束状态开始和结束状态,因为,因为模型可以总是运行,从不停止。模型可以总是运行,从不停止。状态图中可以包含状态
7、图中可以包含0 0到多个到多个开始状态。状态图中也可以包含开始状态。状态图中也可以包含多个多个结束状态结束状态,每一个都表示一个模型能够终止的点。,每一个都表示一个模型能够终止的点。状态图的符号状态图的符号(续续)统一建模语言状态图和活动 状态细节状态细节是指当对象处于特定状态时,可能要进行一些活动,是指当对象处于特定状态时,可能要进行一些活动,例如生成报表、进行计算或向另一对象发送事件。例如生成报表、进行计算或向另一对象发送事件。为了进一步描述对象在特定状态下的一些活动,可加入细节为了进一步描述对象在特定状态下的一些活动,可加入细节活动、进入、退出、事件和状态历史信息。活动、进入、退出、事件
8、和状态历史信息。状态图的符号状态图的符号(续续)统一建模语言状态图和活动送货处理状态图统一建模语言状态图和活动2 2转移转移 转移用来显示从一个状态到另一个状态的处理流。转移使转移用来显示从一个状态到另一个状态的处理流。转移使用从一个状态到另一个状态的用从一个状态到另一个状态的开放箭头开放箭头来标记,如下图所示。来标记,如下图所示。状态图的符号状态图的符号(续续)统一建模语言状态图和活动 下面的示例演示了银行帐户中的转移及其有效状态,如下图下面的示例演示了银行帐户中的转移及其有效状态,如下图所示。所示。状态图的符号状态图的符号(续续)统一建模语言状态图和活动3 3决策点决策点 决策点在建模状态
9、图时提供了方便,因为它通过在中心位决策点在建模状态图时提供了方便,因为它通过在中心位置分组转移到各自的方向,从而提高了状态图的可视性,如下置分组转移到各自的方向,从而提高了状态图的可视性,如下图所示。图所示。状态图的符号状态图的符号(续续)统一建模语言状态图和活动4 4同步同步 状态图中使用同步条是为了说明并发工作流的状态图中使用同步条是为了说明并发工作流的分叉分叉与与联合联合。下图所示为同步条的标记符。下图所示为同步条的标记符。状态图的符号状态图的符号(续续)统一建模语言状态图和活动第五章第五章 状态图和活动图状态图和活动图 状态图状态图状态图的定义状态图的定义状态图的符号状态图的符号状态图
10、的动作和事件状态图的动作和事件组合状态组合状态状态图的建模方法状态图的建模方法活动图活动图活动图的定义活动图的定义活动图的符号活动图的符号活动图中的条件活动图中的条件活动图的建模方法活动图的建模方法统一建模语言状态图和活动 条件条件用来描述状态转移的前提。用来描述状态转移的前提。事件事件用来指示什么触发了转用来指示什么触发了转移,移,动作动作用来说明当转移发生时会产生什么情况。事件、条件用来说明当转移发生时会产生什么情况。事件、条件和动作是转移的三个选项,其定义格式见下图所示。和动作是转移的三个选项,其定义格式见下图所示。该图描述的信息是该图描述的信息是“如果如果guardConditiong
11、uardCondition为为truetrue,当,当anEventanEvent发生时,将执行发生时,将执行anActionanAction,并立即进入状态,并立即进入状态B”B”状态图的动作和事件状态图的动作和事件事件事件条件条件动作动作统一建模语言状态图和活动状态图的动作和事件状态图的动作和事件1 1事件事件 事件通常在从一个状态到另一个状态的转移路径上直接指定。事件通常在从一个状态到另一个状态的转移路径上直接指定。事件用来指示是什么导致了模型中状态的改变。下图演示了事件事件用来指示是什么导致了模型中状态的改变。下图演示了事件的标记符。的标记符。事件事件统一建模语言状态图和活动状态图的动
12、作和事件状态图的动作和事件(续续)2 2动作动作 动作说明了当事件发生时发生了什么行为。动作说明了当事件发生时发生了什么行为。EventEvent类型的动作示例如类型的动作示例如右图右图.这个示例说明了只这个示例说明了只要要ResetUsersResetUsers事件传递事件传递的所有用户都没有打开,的所有用户都没有打开,他们就会被全部删除。他们就会被全部删除。动作动作统一建模语言状态图和活动状态图的动作和事件状态图的动作和事件(续续)3 3条件条件 条件说明状态转移必须要满足的前提。条件一般为一个布尔条件说明状态转移必须要满足的前提。条件一般为一个布尔表达式。如下图所示。表达式。如下图所示。
13、条件条件统一建模语言状态图和活动练习:练习:阅读一个电梯系统的状态图阅读一个电梯系统的状态图步骤步骤:1 1)标识出状态。)标识出状态。2 2)标识出转移。)标识出转移。3 3)标识出事件和动作。)标识出事件和动作。统一建模语言状态图和活动统一建模语言状态图和活动第五章第五章 状态图和活动图状态图和活动图 状态图状态图状态图的定义状态图的定义状态图的符号状态图的符号状态图的动作和事件状态图的动作和事件组合状态组合状态状态图的建模方法状态图的建模方法活动图活动图活动图的定义活动图的定义活动图的符号活动图的符号活动图中的条件活动图中的条件活动图的建模方法活动图的建模方法统一建模语言状态图和活动组合
14、状态组合状态 一个对象可以通过同步操作同时拥有多个状态。一个对象可以通过同步操作同时拥有多个状态。有时,对象还可以拥有层次结构的状态。当单个状态有时,对象还可以拥有层次结构的状态。当单个状态具有独有的附加的子状态时,可以在状态图中使用层具有独有的附加的子状态时,可以在状态图中使用层次结构的状态。次结构的状态。统一建模语言状态图和活动组合状态组合状态(续续)在一个复杂的状态中可以细化为多个子状态的合在一个复杂的状态中可以细化为多个子状态的合成。该复杂状态称为成。该复杂状态称为组合状态组合状态。如下图所示。如下图所示。统一建模语言状态图和活动组合状态(续)收录机状态图统一建模语言状态图和活动 并发
15、子状态并发子状态 在一个状态在一个状态中可能多个并发中可能多个并发的子状态。如右的子状态。如右图所示的订货对图所示的订货对象状态图。象状态图。组合状态组合状态(续续)统一建模语言状态图和活动第五章第五章 状态图和活动图状态图和活动图 状态图状态图状态图的定义状态图的定义状态图的符号状态图的符号状态图的动作和事件状态图的动作和事件组合状态组合状态状态图的建模方法状态图的建模方法活动图活动图活动图的定义活动图的定义活动图的符号活动图的符号活动图中的条件活动图中的条件活动图的建模方法活动图的建模方法统一建模语言状态图和活动状态图的建模方法状态图的建模方法状态图建模需要执行以下步骤:状态图建模需要执行
16、以下步骤:1)标识出需要进一步建模的实体。)标识出需要进一步建模的实体。2)标识出每一个实体的开始状态和结束状态。)标识出每一个实体的开始状态和结束状态。3)确定与每一个实体相关的事件。)确定与每一个实体相关的事件。4)从起始状态开始创建状态图。)从起始状态开始创建状态图。5)如果必要则创建组合状态。)如果必要则创建组合状态。统一建模语言状态图和活动状态图的建模方法状态图的建模方法(续续)1标识出需要进一步建模的实体标识出需要进一步建模的实体 首先要标识出哪些实体需要使用状态图进一步首先要标识出哪些实体需要使用状态图进一步建模。状态图应该用于复杂的实体,而不必用于具建模。状态图应该用于复杂的实体,而不必用于具有复杂行为的实体。对于有复杂行为的实体,使用有复杂行为的实体。对于有复杂行为的实体,使用活动图可能会更加适合。具有清晰、有序的状态实活动图可能会更加适合。具有清晰、有序的状态实体最适合使用状态图进一步建模。后面将会建模一体最适合使用状态图进一步建模。后面将会建模一个个Grade对象,尤其是它的保存功能。对象,尤其是它的保存功能。统一建模语言状态图和活动状态图的建模方法状态图的建模方