软件设计师-UML4

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1三、状态图(StateDiagram)状态图是系统分析的一种常见工具,用于描述系统的行为。实体的生存期比较复杂时,需要状态图对其建模。UML中的状态图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动的转移而伴随的动作。2三、状态图—示例闲置状态拨号状态通话状态拿起听筒拨号电话机状态图3主要内容1.状态机2.状态3.转移4.组合状态5.状态图的应用43.1状态机[1]UML用状态机对系统的动态特征建模。状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。状态机的组成:状态、转移、事件、活动、动作等。状态(State):表示一个模型元素在生存期的一种状况,如满足某些条件,进行某些活动,或等待某些事件出现等。一个状态在有限的时间段内存在。转移(Transition):表示一个模型元素的不同状态之间的联系。在事件触发下,一个状态可以转移到另一个状态。事件(Event):一个有意义的出现(Occurrence)的说明。该出现在某个时间或空间点发生,并且立即触发一个状态的转移。例如,一个信号、一个操作的调用、一个对象的创建或销毁、超时、某个条件的改变等。动作(Action):一个可执行的原子计算,它导致状态的变更或返回一个值。不能被中断。活动(Activity):是在状态机中一系列动作的执行。活动可能被某个事件中断。53.1状态机[2]状态机用于对一个模型元素建立行为模型,该模型元素通常是一个对象类,也可以是一个子系统,甚至整个系统。在UML中状态机用状态图可视化表示。状态图:状态的节点、转移的弧、事件等组成。源状态目标状态事件63.2状态状态:对象全部属性的当前值。(问题:对象任何一个新的属性值组合就是一个新状态,状态空间太大)状态属性:对确定对象的状态有重要意义的属性。状态属性一般具有少量的值,而且这些属性的值的转换是有限的。并且其属性值反映所属对象的特定状态。如:对于“汽车”对象,可能有“型号”、“车况”、“使用情况”、“公里数”、“汽油剩余量”等属性。不应取“公里数”或“汽油剩余量”作为状态属性,可取“使用情况”作为属性状态。则,“汽车”对象的有限个不同状态:“跑车”、“停车”、“维修”、“闲置”、“报废”等。在UML中,对一个对象(模型元素)的行为建模时,所选择的该对象的生存期中的状态数量是有限的,对象处于每个状态的持续时间也是有限的。当发生某个事件,或完成某个动作,都会触发状态的转移。73.2.1状态图标状态图标(状态节点)一个状态可以加入信息:进入操作、退出操作、活动、事件等状态名entry/动作do/活动exit/动作83.2.2状态行为[1]进入操作(entry):系统进入该状态时要发生的动作,前面加上entry和“/”。不可中断。注:航班进入预定状态时,系统将时刻表发布到Internet。尽管发布动作在技术上是可以中断的,但其速度很快,用户很难在其发生时取消事物。活动(do):系统处于该状态时要发生的活动,前面加上do和“/”。活动是可中断行为,可以在对象处于该状态时运行完毕,也可以在对象转入另一状态时中断。航班预定entry/将时刻表发布到Internet航班取消do/为客户寻找其它航班93.2.2状态行为[2]退出操作(exit):系统离开该状态时要发生的动作,前面加上exit和“/”。不可中断。注:飞机着陆时退出飞行状态,系统记录登陆时间。发送事件:在活动、进入和退出操作的动作中可以是对象内部发生的行为,也可能是向另外一个对象发送消息。飞行状态exit/记录登陆时间状态名entry/^目标对象.消息名(消息参数)do/^目标对象.消息名(消息参数)exit/^目标对象.消息名(消息参数)103.2.3初始与终结状态初始状态:是模型元素的初始状况,代表一个状态图的起始点,是一个伪状态。初始状态是转移的初始源,而不能是转移的目标。实心圆表示。终结状态:是模型元素的最后状态,代表一个状态图的终止点,是一个伪状态。终结状态是转移的最后目标,而不能是转移的初始源。牛眼表示。113.3转移[1]转移:用实箭线表示,箭尾连接出发状态,即源状态,箭头连接到达状态,即目标状态。在箭线上可以标示与该转移有关的选项:事件、保护条件和动作。当处于源状态的对象接收到一个事件,并且保护条件得到满足时(如果有的话),则执行相应的动作,并从源状态转移到目标状态。当发生一个转移时,该转移进入的状态为活动状态,它将执行相应的动作。当发生一个转移离开一个状态时,该状态变为非活动状态。转移类型:简单转移、自转移、自动转移、复合转移等。源状态目标状态事件[保护条件]/动作123.3转移[2]初始化do/自启动工作关闭打开PC机关闭机器屏幕保护[等待超时]击键或移动鼠标GUI的状态图133.3.1转移类型[1]自身转移(Self-Transition):是指那些源状态与目标状态是同一状态的转移。如:卖票的航班中增加乘客或减少乘客时,航班是打开的。自动转移(Automatic-Transition):自动转移又称完成转移(Completion-Transition)。每个状态都可能有一个不由事件触发的转移,它是根据该状态内的动作完成而自动触发的。见GUI状态图。打开增加乘客[人数+1未满]/sum+1关闭增加[人数+1已满]/sum+1减少乘客/sum-1减少乘客/sum-1143.3.1转移类型[2]判定:是在状态图中的一个特定的位置,工作流在此依据保护条件的取值而发生的分支。判定用空心小菱形表示。复合转移(Compound-Transition):复合转移由简单转移组成,这些简单转移通过分支判定、分叉组成。源状态目标状态2目标状态1[条件1][条件2]153.3.1转移类型[3]制定计划招聘人员实施[人员齐备][人员未齐备]制定计划招聘人员实施[人员齐备][人员未齐备]16源状态目标状态4目标状态3目标状态2目标状态1事件1[条件1]/动作1[条件3]/动作3[条件4]/动作4[条件5]/动作6[条件2]/动作2[条件6]/动作6多条件链式分支源状态目标状态4目标状态3目标状态2目标状态1事件1[条件1and条件3]/动作1,动作3多条件非链式分支事件1[条件2and条件6]/动作2,动作6事件1[条件2and条件5]/动作2,动作5事件1[条件1and条件4]/动作1,动作4173.3.2转移示例未分配任务已分配任务取消对任务的资源分配[NumAssTasks1]/NumAssTasks-1[NumAssTasks=1]/NumAssTasks=0分配任务给资源/NumAssTasks+1资源休闲资源管理员PRMS的一个资源状态图分配任务给资源/NumAssTasks+1183.4.1组合状态—子状态一个状态内嵌套了若干个状态,则称该状态为组合状态(超状态)。其中,被嵌套的状态称为子状态。子状态本身仍然可以是组合状态。一个组合状态可以有一个被嵌套的子状态图,它代表了该组合状态的一个活动。子状态图中必须有自己的初始和终结状态。对组合状态的一个入转移代表对其子区域内的初始状态的入转移,对子区域内的终结状态的转移代表包含它的组合状态的相应活动的完成。采用组合状态可以简化复杂行为的建模。发货处理取消已发货取消网上商店处理送货过程的状态图检查do/检查商品办货处理do/启动发货等待取消已发货[全部商品已检查完,但部分商品缺货][全部商品检查完且全部商品都有]收到商品[全部商品都有]收到商品[部分商品缺货][未检查完全部商品]/取下一个取消取消取消网上商店处理送货过程的状态图检查do/检查商品办货处理do/启动发货等待取消已发货[全部商品已检查完,但部分商品缺货][全部商品已检查完且全部商品都有]收到商品[全部商品都有]收到商品[部分商品缺货]发货处理[未检查完全部商品]/取下一个网上商店处理送货过程的状态图取消21在店内entry/令store=theStore(本店)购入项目已出租归还项目弃置项目租出项目已租出正常entry/令store=null(空值)do/每天检查到期时间[超过到期日子]过期entry/通知会员租借店软件系统中的租借项目(录像带、游戏等)状态图租出项目223.4.2顺序子状态顺序子状态:子状态是一个一个顺序转移的,不是并发存在的。等待用户输入登记用户输入显示用户输入输入工作GUI中“工作”的组合状态23活动????????验卡拨号通话挂断休闲继续维修结束维修完成维修插卡取消IC卡电话机顺序状态示例243.4.3并发子状态[1]并发状态图用于描述一个对象在某个时刻有多个并发的子状态机的情况,并发状态图是这些子状态图的组合。等待用户输入登记用户输入显示用户输入输入工作监视系统时钟更新界面显示[时钟间隔已过]GUI中“工作”的并发组合状态253.4.3并发子状态[2]网上商店系统中“订货”对象的并发状态图等待商品检查办理装货付款检查已付款取消发货拒绝订货Signals26Themainpurposeofthisnotationistovisuallyemphasizesendingandreceivingsignals.Althoughbothdiagramssaythesamething,theversionwiththesignaliconsfocusesonthetransitionsand,inthiscase,makesthediagrammorereadable.273.4.4同步同步:同步可定义为并发工作流的分劈(Fork)与接合(Join)。分劈:是一个源状态分为两个或两个以上的目标状态。接合:是两个以上的源状态连接为一个目标状态。同步在状态图中用一条粗短实线表示,称为同步杆。源状态目标状态目标状态1目标状态2源状态1源状态2283.4.4并发子状态—同步在并发状态图中一个子状态图中的子状态,常常需要与另一个子状态图中的子状态的行为同步。在UML中使用同步状态表示这种情况。并发子状态之间的同步状态用含“*”的小圆表示(伪状态),放在分隔子状态的虚线上。例:建筑住宅的并发状态图。其中有二个子状态图,分别代表主体工程施工和水电工程施工,它们是并行进行的。砌筑基础铺设室内管线安装水电设备主体结构水电准备安装门框室内装修竣工验收**293.4.5历史状态[1]历史状态(HistoryState):代表上次离开组合状态时的最后一个活动子状态。历史状态用含有字母“H”的小园圈表示。每当转移到组合状态中的历史状态时,对象便恢复上次离开该组合状态时最后一个子状态,并执行入口动作。历史状态是一个伪状态的图形标记,只能作为组合状态中的子状态,不能在顶层状态图中使用。303.4.5历史状态[2]停止播发选择暂停H恢复活动中断影碟机对象工作的部分状态图313.5状态图的应用状态图为一个对象的生命周期建立模型。状态图可以表示一个对象的历史,引起一个状态向另一个状态转移的事件,以及由于状态的转移而引发的动作。状态图适合描述一个对象穿越多个UseCase的行为,但不适合描述多个对象的协同行为。使用状态图可以对一个对象(类)的行为建模,也可以对一个子系统或整个系统的行为建模。32使用状态图设计类类的状态图应该尽量简单。对象的行为依赖它的状态,状态越多,则越难理解。很难正确地为这样的类编写代码,最终的实现方法具有多个条件分支。很难测试该类。“单元测试”时,要测试对象状态图中的每个细节。如果类的行为以一种非常复杂的方式依赖它的状态,则外部编码很难正确使用该类。一个具有多个状态的类,应该考虑是否有好的设计方法。有时,一个具有多个状态的类可以被分割成两个或多个具有简单行为的类。333.5.1状态图的建立建立状态图可以参照下列步骤:(1)确定状态机的上下文,它可

1 / 77
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功