面向对象技术状态图活动图Word文件下载.docx
- 文档编号:13466664
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:12
- 大小:98.58KB
面向对象技术状态图活动图Word文件下载.docx
《面向对象技术状态图活动图Word文件下载.docx》由会员分享,可在线阅读,更多相关《面向对象技术状态图活动图Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
状态(state)是指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。
所有对象都具有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
一个状态有以下几个部分:
状态名(name)、进入/退出动作(entry/exitation),内部转移(internaltransition)、子状态(substate)、延迟事件(deferredevent).
状态可以细分为不同的类型,例如初态、终态、中间状态、组合状态、历史状态等。
一个状态图只能有一个初态,但终态可以有一个或多个,也可以没有终态。
中间状态包括两个区域:
名字域和内部转移域,如图5。
2所示。
其中内部转移域是可选的。
图5。
2:
状态的例子
2的状态的名字是Lighting。
当进入这个状态时,做开灯(turnOn)动作,离开这个状态时,做关灯(turnOff)动作,当对象处于这个状态时,灯要闪烁5次(blinkFivetimes),当电源关闭(pwoerOff)事件出现时,使用自供应电源(powerSupplySelf)e需要注意的是,对象在Lighting状态时,有一个被延迟处理的事件,即当出现自检(seflTest)事件时,对象将延迟响应这个事件。
即不在Lighting这个状态中处理这个事件,而是延迟到以后在别的状态中处理这个事件。
状态图的符号如下图所示:
5.1.1。
2组合状态和子状态
嵌套在另一个状态中的状态称作子状态(substate),一个含有子状态的状态被称作组合状态(compositestate)。
如图5。
3所示是组合状态和子状态的例子,其中W是组合状态,E,F是子状态。
3组合状态和子状态
从图5。
3可以看出,组合状态中也可以有初态和终态。
转移r是从状态B转移到组合状态W本身,转移P则是从A状态直接转移到组合状态中的子状态E类似地,可以从组合状态中的子状态直接转移到目标状态(如转移s),也可以从组合状态本身转移到目标状态(如转移v)。
子状态之间可分为or关系和and关系两种.or关系说明在某一时刻仅可到达一个子状态,and关系说明组合状态中在某一时刻可同时到达多个子状态。
如图5.4所示是子状态之间or关系的例子。
4:
子状态之间的or关系
5所示是子状态之间and关系的例子.其中子状态Forward和Lowspeed之间,Forward和Highspeed之间,Backward和Lowspeed之间、Backward和Highspeed之间都是and的关系。
图5.5:
子状态之间的and关系
1。
3历史状态
历史状态(historystate)是一个伪状态(pseudostate),其目的是记住从组合状态中退出时所处的子状态.当再次进入组合状态时,可直接进人这个子状态,而不是再次从组合状态的初态开始。
在UML中,历史状态用符号或表示,其中是浅(shallow)历史状态的符号,表示只记住最外层组合状态的历史;
是深(deep)历史状态的符号,表示可记住任何深度的组合状态的历史.顺便提一下,UML中其他建模元素的符号都是直接采用图形符号,没有采用英文字母,如类采用矩形符号,用例采用椭圆符号等,只有历史状态的表示符号中采用了英文字母。
需要注意的是,如果一个组合状态到达了其终态,则会丢失历史状态中的信息,就好像还没有进人过这个组合状态一样。
6所示是历史状态的例子.
6历史状态
这是一个对数据进行备份时的状态图,备份时要经过Collecting,Copying,CleaningLlp等几个状态.如果在进行数据备份过程中,有数据查询请求,则可以中断当前的备份工作,然后回到Command状态进行查询操作.查询结束后,可以从Command状态直接到刚才中断时退出的状态接着进行备份操作。
(例如,如果刚才是从Copying状态被中断退出的,则现在可以直接从Command状态到Copying状态.)
当然,如果不采用历史状态,也可以用别的状态图表示出和图8.fi的状态图相同的意思,但得到的状态图中要增加许多新的状态、转移或变量,这样状态图就显得过于混乱和复杂。
5.1.1.4转移
转移(transition)是两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作,并在某个特定事件发生而且某个特定的警戒条件满足时进人第二个状态.描述格式如下:
Event-signatue'
[‘guad—condition’]’‘/’action
其中event—signature是事件特征标记,guad-condition是警戒条件,action是动作,而事件特征标记的格式为:
event—name’(’comma—separated-parameter—list’)'
其中event—name是事件名,comma—separated-parameter-list是逗号分隔的参数列表。
7:
相互之间互斥的转移
5.1.1.5事件
事件(event)是对一个在时间和空间上占有一定位置的有意义的事情的详细说明。
事件产生的原因有调用、满足条件的状态的出现、到达时间点或经历某一时间段、发送信号等。
在UML中,事件分为4类:
(1)调用事件(callevent)。
调用事件表示的事对操作度的调度,其个格式如下:
Event—name’(comma—separated-parameter—list’)’
其中event—name是事件名,comma-separated—parameter—list是逗号分隔的参数列表。
8所示是调用事件的例子,其中事件名是startAutopilot,参数是normal。
8调用事件
(2)变化事件(changeevent)。
如果一个布尔表达式中的变量发生变化,使得该布尔表达式的值相应地变化,从而满足某些条件,则这种事件称作变化事件.变化事件用关键字when表示,如图5.9所示是变化事件的例子.
图5.9变化事件
变化事件和警戒条件(guardcondition)这两个概念很相似,两者的区别是警戒条件是转移(transition)说明的一部分,只在所相关的事件出现后计算一次这个条件,如果值为false,则不进行状态转移,以后也不再重新计算这个警戒条件,除非事件又重新出现.而变化事件表示的是一个要被不断测试的事件。
(3)时间事件(timeevent).时间事件指的是满足某一时间表达式的情况的出现,例如到了某一时间点或经过了某一时间段。
时间事件用关键字after或when表示,如图5.10所示是时间事件的例子。
10时间事件
(4)信号事件(signalevent)。
信号事件表示的是对象接收到了信号这种情况,信号事件往往会触发状态的转移.这里提到了信号这个概念,所谓信号,就是由一个对象异步地发送、并由另一对象接收的已命名的对象.在UML中,信号用版型为<
<
signal〉〉的类表示,信号之间可以具有泛化关系,形成层次结构.如图5。
11所示是信号之间泛化关系的例子。
11:
信号事件
信号事件和调用事件比较相似,但信号事件是异步事件,调用事件一般是同步事件。
另外,信号事件和调用事件的表示格式是一样的.
5.2活动图
活动图是对系统的动态行为建模的5个图之一。
在OMT,Booch,OOSE方法中并没有活动图的概念,UML中的活动图的概念是从别的方法中借鉴来的.与JimOdell的事件图、Petri网、SDL建模技术等类似,活动图可以用于描述系统的工作流程和并发行为。
活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进人下一个活动〔在状态图中状态的转移可能需要事件的触发)。
活动图的几个基本概念有:
活动、泳道、分支、分叉和汇合、对象流。
2。
1活动
活动(activity)表示的是某流程中的任务的执行,它可以表示某算法过程中语句的执行.
在活动图中需要注意迷分动作状态(actionstale)和活动状态(activitystate)这两个概念。
动作状态是原子的,不能被分解,没有内部转移。
没有内部活动,动作状态的上作所占用的时间是可忽略的,动作状态的目的是执行进人动作(entryaction),然后转向另一个状态.
活动状态是可分解的,不是原子的,其工作的完成需要一定的时间可以把动作状态看作活动状态的特例。
2.2泳道
泳道(Swimlane)是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个责任区.泳道和类并不是一一对应的关系。
泳道关心的是其所代表的职责,一个泳道可能由一个类实现,也可能由多个类实现.
12所示是使用泳道的例子。
图5.12泳道
3分支
在活动图中,对于同一个触发事件,可以根据不同的警戒条件转向不同的活动,每个可能的转移是一个分支(branch).
在UML。
中表示分支有两种方法,如图5。
13所示,这两种表示方法的区别是,右边的活动图采用菱形符号表示分支。
图5.13分支的两种表示方法
5.2.4分叉和汇合
分支表示的是从多种可能的活动转移中选择一个,如果要表示系统或对象中的并发行为,则可以使用分叉(fork)和汇合(join)这两种建模元素。
分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的;
汇合正好与分叉相反,表示两个或多个控制流被一个控制流代替。
如图5.14所示是分叉和汇合的例子。
14分叉和汇合
5.2.5对象流
在活动图中可以出现对象。
对象可以作为活动的输人或输出。
活动图中的对象流表示活动和对象之间的关系,如一个活动创建对象(作为活动的输出)或使用对象(作为活动的输人)等。
对象流属于控制流。
所以如果两个活动之间有对象流,则控制流就不必重复画出了。
如图5.15所示是使用了对象流的活动图。
图5。
15对象流
活动SubmitDefect创建对象Defect,该对象的状态是Submitted,活动FixDefect,使用处于Submitted状态的对象Defect,同时把对象的状态改为Fixed状态。
3活动图的用途
活动图对表示并发行为很有用,其应用非常广泛。
一般活动图可以对系统的工作流程建模,即对系统的业务过程建模,也可以对具体的操作建模,用于描述计算过程的细节。
用活动图对工作流程建模的例子。
16所示的用例图有两个用例:
产品制造(MakePart)和发货(shipPart).
图5.16用例图
在进行用例分析时,可以用活动图来描述具体的工作流程。
由于这个工作流程涉及两个用例,所以采用脚本或顺序图都很难描述,而采用活动图则可以很好地解决这个问题.如图5.17所示是对这个工作流程的具体描述例子.
图5.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 技术 状态图 活动