状态图和活动图课件

上传人:痛*** 文档编号:241610455 上传时间:2024-07-09 格式:PPT 页数:107 大小:2.03MB
返回 下载 相关 举报
状态图和活动图课件_第1页
第1页 / 共107页
状态图和活动图课件_第2页
第2页 / 共107页
状态图和活动图课件_第3页
第3页 / 共107页
点击查看更多>>
资源描述
第第7 7章章 状态图和活动图状态图和活动图 7.1 概述状态机状态机Statechart用于描述用于描述一个对象一个对象在其生存期间的动态行为,在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随表现对象响应事件所经历的状态序列以及伴随的动作。的动作。状态机是用于描述状态与状态转换的。状态机是用于描述状态与状态转换的。状态图(状态图(StatechartDiagram)状态图状态图主要用于描述一个对象在其生存期间的主要用于描述一个对象在其生存期间的动态行为动态行为,表现一个对象所经历的状态序列,表现一个对象所经历的状态序列,引起状态转移的引起状态转移的事件事件(event),以及因状态转移,以及因状态转移而伴随的而伴随的动作动作(action)。一个状态机可以被一个状态图描述,对于一个一个状态机可以被一个状态图描述,对于一个比较复杂的状态机,也可用多张状态图来表示。比较复杂的状态机,也可用多张状态图来表示。描述一个门的状态图描述一个门的状态图状态图是为系统的动态行为建模,是系统分析的常用工状态图是为系统的动态行为建模,是系统分析的常用工具,因为系统中对象状态的变化比较容易发现和理解。具,因为系统中对象状态的变化比较容易发现和理解。图7.1 图书馆书籍的状态图一本图书对象从它的起始点开始,一本图书对象从它的起始点开始,首先是首先是“新书新书”状态(状态(new booknew book),),然后是然后是“可以借阅可以借阅”(availableavailable)的状态,如果有)的状态,如果有读者将书借走,则该书的状态为读者将书借走,则该书的状态为“已借出已借出”状态(状态(borrowedborrowed),如果),如果图书被归还图书馆,图书的状态又图书被归还图书馆,图书的状态又变为变为“可以借阅可以借阅”状态。图书馆如状态。图书馆如果放弃该图书对象的收藏,则图书果放弃该图书对象的收藏,则图书对象处于对象处于“删除删除”状态(状态(deletedelete),),最后到达最后到达“终止终止”状态。状态。7.1.1状态图的组成状态图的组成状态状态state转换转换/迁移迁移transition(1)状态图中的事物状态图中的事物记账接到订单7.1.2 状态(state)什么是状态?什么是状态?状态是指在对象的生命期中满足某些条件、执行某些活动或状态是指在对象的生命期中满足某些条件、执行某些活动或等待某些事件时的一个等待某些事件时的一个条件或状况条件或状况。下面一些例子形象地说明了对象和状态。下面一些例子形象地说明了对象和状态。(1)支票(对象)已付(状态)。)支票(对象)已付(状态)。(2)汽车(对象)已启动(状态)。)汽车(对象)已启动(状态)。(3)小王(对象)睡着了(状态)。)小王(对象)睡着了(状态)。(4)小红(对象)未婚(状态)。)小红(对象)未婚(状态)。对象在任何时候都会处于某种状态中,所有对象都有对象在任何时候都会处于某种状态中,所有对象都有状态状态对象所处的状态决定了它如何响应所检测到的事件或对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。所接收的消息。清醒(被批评)生气清醒(被批评)生气醉酒醉酒(被批评)无反应(被批评)无反应通常,事件使对象从一个状态转向另一个状态(即状通常,事件使对象从一个状态转向另一个状态(即状态的转换)态的转换)CD Player需要stop状态吗?7.1.2 状态状态的类型:状态的类型:初态初态终态终态中间状态中间状态组合状态组合状态历史状态历史状态1.初态和终态初态初态(startstate)显示状态图中状态机执行的开始显示状态图中状态机执行的开始一个状态机一个状态机只能有一个只能有一个初态,因为每一个执行都是从初态,因为每一个执行都是从相同的地方开始的。如果一个状态机用多张状态图描相同的地方开始的。如果一个状态机用多张状态图描述,则多张图用一个初态。述,则多张图用一个初态。嵌套状态中可以使用新的初态嵌套状态中可以使用新的初态终态终态(endstate)表示最后的或者终端状态;表示最后的或者终端状态;终态终态数目可以不确定,也可以没有。数目可以不确定,也可以没有。2.中间状态中间状态中间状态的组成中间状态的组成(除初态终态外,最常见的状态)(除初态终态外,最常见的状态)状态名(状态名(name)是可以把该状态和其他状态区分开的字符串是可以把该状态和其他状态区分开的字符串;状态也可能状态也可能是匿名的,即没有名称。是匿名的,即没有名称。在一个状态中允许有多个动作。在一个状态中允许有多个动作。1.入口动作入口动作(entryaction),),用来指定进入状态时用来指定进入状态时发生的动作。发生的动作。语法形式:语法形式:entry/动作名动作名2.出口动作(出口动作(exitaction),),用来指定离开该状态时用来指定离开该状态时发生的动作。发生的动作。语法形式:语法形式:exit/动作名动作名注意:由于入口动作和出口动作是隐式注意:由于入口动作和出口动作是隐式地激活,因此它们既没有参数也没有守地激活,因此它们既没有参数也没有守卫条件。卫条件。与状态相关的动作与状态相关的动作3.内部转移(内部转移(internaltransition)-用于标记内部活动,用来指定处于该状态时执行用于标记内部活动,用来指定处于该状态时执行的动作。不导致状态改变的转换,不会执行的动作。不导致状态改变的转换,不会执行entry和和exit动作动作语法形式:语法形式:do/动作名动作名内部转移内部转移不会改变对象的状态,内部转移在入不会改变对象的状态,内部转移在入口动作执行完毕后开始执行。口动作执行完毕后开始执行。4.还可以添加其他事件和动作还可以添加其他事件和动作event用来指定当特定事件触发时发生指定用来指定当特定事件触发时发生指定动作,但此事件不会激发状态的改变,属动作,但此事件不会激发状态的改变,属于内部活动。于内部活动。延迟事件(延迟事件(deferredevent)是指在该状态下暂不处理,但将推迟到该对象的另是指在该状态下暂不处理,但将推迟到该对象的另一个状态下排队处理的事件一个状态下排队处理的事件语法形式为语法形式为延迟事件延迟事件/defer子状态(子状态(substate)-嵌套在另外一个状态中的状态嵌套在另外一个状态中的状态例如:空调:停止、运行状态,运行状态中可例如:空调:停止、运行状态,运行状态中可嵌套制冷、制热、除湿等子状态嵌套制冷、制热、除湿等子状态名字域转换域,可选当转入该状态时,做开灯动作当转出该状态时,做关灯动作当处于该状态时,灯闪烁5次当电源关闭事件发生时,用自备电源当selfTest事件发生时,对象将延迟响应,到别的状态中再处理,用defer这个特定动作表示延迟内部转换do活动是只在状态内出现的活动,不能附加到转换上。2.中间状态举例中间状态举例3.组合组合/嵌套状态嵌套状态含有子状态的状态被称为组合或嵌套状态含有子状态的状态被称为组合或嵌套状态为何不在组合中加初态、终态?可以将任一子状态作初态去掉运行这个大的状态行吗?行,但效果不好隐藏子状态,简化模型复杂度,增强清晰性组合状态可以使用组合状态可以使用“与与”关系分解为并发子状态,关系分解为并发子状态,或者通过或者通过“或或”关系分解为互相排斥的顺序子状态。关系分解为互相排斥的顺序子状态。组合状态的一个入转换代表对其嵌套子状态区域内组合状态的一个入转换代表对其嵌套子状态区域内的初始状态的入转换。的初始状态的入转换。3.组合组合/嵌套状态嵌套状态两种表示方法两种表示方法顺序子状态顺序子状态如果一个组合状态的子状态对应的对象在其生命期如果一个组合状态的子状态对应的对象在其生命期内的任何时刻都只能处于一个子状态,即多个子状内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。顺序子状态。并发子状态并发子状态有时组合状态有两个或者多个并发的子状态机,此有时组合状态有两个或者多个并发的子状态机,此时称组合状态的子状态为并发子状态。时称组合状态的子状态为并发子状态。3.组合组合/嵌套状态嵌套状态顺序子状态图顺序子状态图-IC卡电话的使用卡电话的使用顺序子状态与并发子状态的区别在于后者在同一顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,对象处于同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。层次中来自每个并发子状态的一个时序状态中。当离开一个组合状态重新进入此状态时,不希望从当离开一个组合状态重新进入此状态时,不希望从它的初始状态开始执行,而是希望直接进入上次离它的初始状态开始执行,而是希望直接进入上次离开组合状态时的最后一个子状态,这种情况下就要开组合状态时的最后一个子状态,这种情况下就要用到用到历史状态历史状态。历史状态代表上次离开组历史状态代表上次离开组合合状态时的最后一个活动状态时的最后一个活动子状态,它用一个包含字母子状态,它用一个包含字母“H”的小圆圈表示。的小圆圈表示。每当转换到组合状态的历史状态时,对象便恢复到每当转换到组合状态的历史状态时,对象便恢复到上次离开该组合状态时的最后一个活动子状态,并上次离开该组合状态时的最后一个活动子状态,并执行入口动作。执行入口动作。4.历史状态(历史状态(Historystate)MP3播放器对象的状态图播放器对象的状态图4.历史状态(历史状态(Historystate)7.1.4转换(转换(Transition)转换是两个状态间的一种关系,表示当一个特转换是两个状态间的一种关系,表示当一个特定事件发生或者某些条件得到满足时,一个源定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态状态下的对象在完成一定的动作后将发生状态转变,转向另目标状态。转变,转向另目标状态。每个转换只允许有一个事件触发,一个事件只每个转换只允许有一个事件触发,一个事件只允许有一个动作允许有一个动作是由一种状态到另一种状态的迁移。这种转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部事件或外部事件触发。对一由被建模实体内部事件或外部事件触发。对一个类来说,转移通常是调用了一个可以引起状个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的结果。态发生重要变化的操作的结果。转换的五要素转换的五要素:源状态源状态目标状态目标状态触发事件触发事件如果箭头上不带任何事件名,如果箭头上不带任何事件名,叫叫无触发转移无触发转移(完成转移),(完成转移),当与源状态相关的活动完成时就会自动触发。当与源状态相关的活动完成时就会自动触发。监护条件监护条件动作动作 在用电磁炉烧开水的过程中,水的状态由源状态“Off”(不沸腾)转换为目标状态的“On”(沸腾)时,水壶中“有水”就是其监护条件,开启电源开关“turnOn”是其触发事件,进行“烧水”是状态转换的动作。7.1.4转换(转换(Transition)注意:监护条件:是用方括号括起来的布尔表达监护条件:是用方括号括起来的布尔表达式,它放在事件的后面。式,它放在事件的后面。如果监护条件和事件放在一起使用,则当如果监护条件和事件放在一起使用,则当且仅当事件发生且监护条件为真时,转移且仅当事件发生且监护条件为真时,转移发生;如果只有监护条件,只要监护条件发生;如果只有监护条件,只要监护条件为真就发生转移。为真就发生转移。从相同的状态出来的、事件相同的几个转从相同的状态出来的、事件相同的几个转移之间的条件应该时互斥的。移之间的条件应该时互斥的。动作动作(Action)可执行的行为。可执行的行为。不可中断,其执行时间可忽略不计不可中断,其执行时间可忽略不计当转换被引发时,它对应的动作被执行。它一般是一当转换被引发时,它对应的动作被执行。它一般是一个简短的处理过程。个简短的处理过程。两种特殊动作(只要进入或离开该状态一定会执两种特殊动作(只要进入或离开该状态一定会执行该动作)行该动作)入口动作(入口动作(entry)进入某一状态时执行的动作进入某一状态时执行的动作出口动作(出口动作(exit)退出某一状态时执行的动作退出某一状态时执行的动作7.1.4转换转换-动作动作动作可以与状态相动作可以与状态相关,也可以与转关,也可以与转移相关:移相关:1.如果动作与状态如果动作与状态相关,则对象在相关,则对象在进入一个状态时进入一个状态时将触发此动作,将触发此动作,而不管是从哪个而不管是从哪个状态转入这个状状态转入这个状态的。态的。2.如果动作与转移如果动作与转移相关,当对象在相关,当对象在不同的状态转移不同的状态转移时,将触发相应时,将触发相应的动作。的动作。转换的种类转换的种类 1外部外部转换2内部内部转换 3自自转换4复合复合转换1.外部转换外部转换外部转换是一种改变对象状态的转换,外部转换是一种改变对象状态的转换,是最常见的一种转换。是最常见的一种转换。对事件做出响事件做出响应,引起状,引起状态转换或自或自身身转换,同,同时执行一个特定的行一个特定的动作,作,如果离开或如果离开或进入状入状态,将引起入口,将引起入口动作和出口作和出口动作的作的执行行外部转换用从源状态到目标状态的箭外部转换用从源状态到目标状态的箭头表示。头表示。语法:事件法:事件(参数参数)监护条件条件/动作作2.自转换自转换当当事件发生时,导致状态中断,事件发生时,导致状态中断,使对象退出当前状态,然后又使对象退出当前状态,然后又重新回到该状态。重新回到该状态。自转换在作用时首先将当前状自转换在作用时首先将当前状态下的活动终止,然后执行该态下的活动终止,然后执行该状态的出口动作,接着执行引状态的出口动作,接着执行引起转移事件的相关动作,紧接起转移事件的相关动作,紧接着返回该状态,开始执行该状着返回该状态,开始执行该状态的入口动作和其他操作。态的入口动作和其他操作。3.内部转换内部转换内部转换有一个源状态但是没有目标状态,它转换后的状内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。态仍旧是它本身。对事件做出响事件做出响应,并,并执行一个特定的行一个特定的动作,但不引起状作,但不引起状态的改的改变或不引起入口或不引起入口动作或出口作或出口动作的作的执行行内部转换的激发规则和外部转换的激发规则相同。内部转换的激发规则和外部转换的激发规则相同。如果一个内部转换带有动作,动作也要被执行,但是由于如果一个内部转换带有动作,动作也要被执行,但是由于没有状态改变发生,因此不需要执行入口和出口动作。没有状态改变发生,因此不需要执行入口和出口动作。语法:事件法:事件(参数参数)监护条件条件/动作作内部转换和自转换(完成转换)不同:内部转换和自转换(完成转换)不同:自转换是离开本状态后重新进入该状态,自转换是离开本状态后重新进入该状态,它会激发状态的入口动作和出口动作的执它会激发状态的入口动作和出口动作的执行。行。内部转换自始至终都不离开本状态,所以内部转换自始至终都不离开本状态,所以没有出口或入口事件,也就不执行入口和没有出口或入口事件,也就不执行入口和出口动作。出口动作。4.复合转换复合转换复合转换由简单转换组成,这些简单转换复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起。通过分支判定、分叉或接合组合在一起。除了两个分支的判定,还有多条件的分支除了两个分支的判定,还有多条件的分支判定。判定。多条件的分支判定有分为链式的和非链式多条件的分支判定有分为链式的和非链式的分支。的分支。4复合转换复合转换链式分支:链式分支:非链式分支:非链式分支:名字域转换域,可选当转入该状态时,做开灯动作当转出该状态时,做关灯动作当处于该状态时,灯闪烁5次当电源关闭事件发生时,用自备电源当selfTest事件发生时,对象将延迟响应,到别的状态中再处理,用defer这个特定动作表示延迟内部转换do活动是只在状态内出现的活动,不能附加到转换上。外部转换,自转换也是外部转换外部转换判定(决策点)判定(决策点)判定在状态图中的位置:工作流在此处按判定在状态图中的位置:工作流在此处按监护条件的取值而发生分支。监护条件的取值而发生分支。判定用空心小菱形表示。判定用空心小菱形表示。判定判定它在建模状态机图时提供了方便,因为它通过在中它在建模状态机图时提供了方便,因为它通过在中心位置分组转移到各自的方向,从而提高了状态机心位置分组转移到各自的方向,从而提高了状态机图的可视性。图的可视性。因为监护条件为布尔表达式,所以通常条件下的判因为监护条件为布尔表达式,所以通常条件下的判定只有一个入转换和两个出转换。定只有一个入转换和两个出转换。根据监护条件的真假可以触发不同的分支转换。根据监护条件的真假可以触发不同的分支转换。同步状态同步状态使用同步条可以显示并发转移。使用同步条可以显示并发转移。并并发发转转移移表表示示一一个个同同步步将将一一个个控控制制划划分分为为并并发发的的线线程程。状状态态机机图图中中使使用用到到同同步步条条是是为为了了说说明明某某些些状状态态在在哪哪里里需需要要跟跟上上或或者者等等待待其其他他状状态态。状状态态机机图图中中同同步步条条是是一一条条黑黑色色的的粗粗线线,图图显显示示了了使使用用了了同步条的状态机图。同步条的状态机图。例题,一个汽车的状态有前进、后退、例题,一个汽车的状态有前进、后退、低速、高速。低速、高速。7.1.5事件事件Event是对一个时间和空间上占有一定位置的有意义是对一个时间和空间上占有一定位置的有意义的事情的规格说明。的事情的规格说明。事件触发状态的转换事件触发状态的转换四类主要事件四类主要事件信号事件信号事件调用事件调用事件变化事件变化事件时间事件时间事件信号信号signer事件事件所谓所谓信号信号,是指由一个对象,是指由一个对象异步异步地发送,并由另外一地发送,并由另外一个对象接收的一个已命名的个对象接收的一个已命名的对象对象。信号事件表示对象接收到某个信号。信号事件表示对象接收到某个信号。信号间可以有泛化,信号可以是其他信号的子信号,信号间可以有泛化,信号可以是其他信号的子信号,它们继承父信号的属性,并可以触发包含信号类型的它们继承父信号的属性,并可以触发包含信号类型的转换。转换。7.1.5事件事件Event接收到input信号这一事件发生调用调用call事件事件表示一个操作的调度。请求调用另一个对象的操表示一个操作的调度。请求调用另一个对象的操作作当对象调用另一对象的操作时,控制就从发送者当对象调用另一对象的操作时,控制就从发送者传送到接收者,该事件触发转换,完成操作后,传送到接收者,该事件触发转换,完成操作后,接收者转换到一个新的状态,控制返还给发送者。接收者转换到一个新的状态,控制返还给发送者。信号是一个异步事件,而调用事件一般是信号是一个异步事件,而调用事件一般是同步同步的。的。变化变化change事件事件如果一个布尔表达式中的变量发生变化,使得如果一个布尔表达式中的变量发生变化,使得该表达式的值相应变化,从而满足条件,则这该表达式的值相应变化,从而满足条件,则这种事件叫变化事件。种事件叫变化事件。用关键字用关键字When,后面跟布尔表达式,后面跟布尔表达式When(temperature120)/alerm()变化事件的意图是要频繁测试表达式,只要表变化事件的意图是要频繁测试表达式,只要表达式由假变为真,事件就会发生。达式由假变为真,事件就会发生。注意:变化事件与监护条件的不同。注意:变化事件与监护条件的不同。监护条件监护条件是转移说明的一部分,只有所相是转移说明的一部分,只有所相关的事件出现后计算一次这个条件,如果关的事件出现后计算一次这个条件,如果值时值时false,则不进行转移,以后也不再重,则不进行转移,以后也不再重新计算这个监护条件,除非事件又重新出新计算这个监护条件,除非事件又重新出现。现。变化事件变化事件表示的是一个要被不断测试的事表示的是一个要被不断测试的事件。件。时间(时间(time)事件)事件时间事件是指在绝对时间或在某个时间间隔内时间事件是指在绝对时间或在某个时间间隔内发生的事情所引起的事件。发生的事情所引起的事件。例如到达某一时间或经过了某一时间段。用关例如到达某一时间或经过了某一时间段。用关键字键字When或或After表示。表示。(1)状态图中包含以下状态状态图中包含以下状态初始状态初始状态Available状态状态Locked状态状态Sold状态状态(2)状态间的转移状态间的转移初始状态初始状态Available状态状态票被预订票被预订(lock):AvailableLocked预定后付款预定后付款(buy):LockedSold预定解除预定解除(unlock):LockedAvailable预定过期预定过期(timeout):LockedAvailable直接购买直接购买(assignedto):AvailableSold换其它票换其它票(exchang),该票重有效:,该票重有效:SoldAvailable7.1.6 状态图的例子登陆要求提交个人社会保险号登陆要求提交个人社会保险号(SSN)和密码和密码(PIN)经验证有效后登陆成功。经验证有效后登陆成功。登陆过程包括以下状态登陆过程包括以下状态:初态初态(Initial state)获取社会保险号状态获取社会保险号状态(Getting SSN)获取密码状态获取密码状态(Getting PIN)验证状态验证状态(Validating)拒绝状态拒绝状态(Rejecting)终态终态(Final state)出发状态动作到达状态Initial state移移动鼠鼠标到到SSNGetting SSNGetting SSN键入非入非tab键,显示示键入内容入内容Getting SSN键入入tab键,或移,或移动鼠鼠标到到BINGetting PIN提交提交ValidatingGetting PIN键入非入非shift-tab键,显示示“*”Getting PIN键入入shift-tab键,或移,或移动鼠鼠标到到SSNGetting SSN提交提交Validating Validating验证提交信息有效,状提交信息有效,状态转移移Final state验证提交信息无效,提交信息无效,显示示错误信息信息Rejecting Rejecting退出退出Final state重重试,清除无效的,清除无效的SSN,PINGetting SSN状态转移的过程有有两两个个不不同同的的终终态态(2)网上银行登陆系统网上银行登陆系统练习练习分析下面的状态图,回答问题分析下面的状态图,回答问题下降状态在第一层上升状态向第一层下降空闲状态上升到达到达上升超时下降到达第一层(1)以下那些图形元素是对状态的描述?以下那些图形元素是对状态的描述?(a)超时超时 (b)到达到达 (c)在第一层在第一层(2)空闲状态空闲状态 超时后转移到超时后转移到_状态状态(a)向第一层下降向第一层下降(b)上升状态上升状态 (c)终态终态答案(1)(c)(2)(a)7.1.6 状态图7.1.7 状态图建模步骤步骤寻找主要的状态寻找主要的状态确定状态之间的转换确定状态之间的转换细化状态内的活动与转换细化状态内的活动与转换用组合用组合/嵌套状态来展开细节嵌套状态来展开细节7.1.7状态图建模状态图建模细化状态内的活动与转换细化状态内的活动与转换使用复合状态使用复合状态7.1.7 状态图订单处理系统订单处理系统7.1.7 状态图状态图与交互图的区别状态图与交互图的区别交互图不显示对象所有可能的动态行为,只显示特交互图不显示对象所有可能的动态行为,只显示特定交互场景(一个具体的用例)中对象的行为。定交互场景(一个具体的用例)中对象的行为。状态图可以显示对象所有的动态行为。状态图可以显示对象所有的动态行为。笔有完整和折断两种状态,是由谁折断?只能由交互图笔有完整和折断两种状态,是由谁折断?只能由交互图看出看出7.1.8状态图的建模技术及应用状态图的建模技术及应用使用状态图对系统反应型对象建模时,应遵循如下策略:使用状态图对系统反应型对象建模时,应遵循如下策略:选择状态机的语境(即建模对象),不管它是类、用例或是整个系统;选择状态机的语境(即建模对象),不管它是类、用例或是整个系统;选择这个对象的初态和终态。为了指导模型的剩余部分,可能要分别选择这个对象的初态和终态。为了指导模型的剩余部分,可能要分别地说明初态和终态的前置条件和后置条件;地说明初态和终态的前置条件和后置条件;考虑对象可能在其中存在一段时间的条件,以决定该对象所在的稳定考虑对象可能在其中存在一段时间的条件,以决定该对象所在的稳定状态。从这个对象的高层状态开始,然后考虑它的可能的子状态;状态。从这个对象的高层状态开始,然后考虑它的可能的子状态;在对象的整个生命周期中,决定稳定状态的有意义的顺序;在对象的整个生命周期中,决定稳定状态的有意义的顺序;决定可能触发从状态到状态的转换的事件。将这些事件建模为触发者,决定可能触发从状态到状态的转换的事件。将这些事件建模为触发者,它触发从一个合法状态序列到另一个合法状态序列的转换;它触发从一个合法状态序列到另一个合法状态序列的转换;把动作附加到这些转换上,并且附加到这些状态上;把动作附加到这些转换上,并且附加到这些状态上;考虑通过使用子状态、分支、汇合和历史状态,来简化状态图;考虑通过使用子状态、分支、汇合和历史状态,来简化状态图;核实所有的状态都是在事件的某种组合下可达的;核实所有的状态都是在事件的某种组合下可达的;核实不存在死角状态,即不存在那种不能转换出来的状态;核实不存在死角状态,即不存在那种不能转换出来的状态;通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它们的响应。们的响应。拨打电话工作的行为建模 首先,确定主要的状态,在这里电话开机时,处于空闲状态,当用户拨号呼叫某人时,话机进入拨号状态。如果呼叫成功则电话接通,电话处于通话状态,如果呼叫不成功,拨号失败,这时话机重新回到空闲状态。话机在空闲状态被呼叫,进入响铃状态。如果用户摘机接听电话,话机处于通话状态。完成通话挂机后话机回到空闲状态。如果用户没有摘机则话机处于继续响铃状态。如果用户拒绝来电,话机回到空闲状态。因此,拨打电话的过程可以总结出4个状态,即空闲、拨号、通话和响铃。练习电水壶:电水壶:on和和off两个状态,初态两个状态,初态off,烧坏则转,烧坏则转换到终态。换到终态。trunOn事件发生时,判断水壶是否有事件发生时,判断水壶是否有水,若没有水,则仍处于水,若没有水,则仍处于off状态,若有水,则状态,若有水,则turnOn事件引起烧水活动,使状态从事件引起烧水活动,使状态从off转入转入on,水开,则从,水开,则从on转入转入off状态状态练习练习进程进程就绪就绪运行运行阻塞三个状态阻塞三个状态初态就绪初态就绪;程序运行结束后终态程序运行结束后终态就绪状态获得就绪状态获得CPU时间片转为运行态;运行态时间片用完时间片转为运行态;运行态时间片用完转为就绪态;运行态不满足所需资源转为阻塞态,阻塞态转为就绪态;运行态不满足所需资源转为阻塞态,阻塞态若资源满足则回到就绪态若资源满足则回到就绪态练习图书馆管理系统中的还书业务图书馆管理系统中的还书业务还书业务的动态行为是由:空闲(还书业务的动态行为是由:空闲(idle)、图)、图书查找(书查找(finding)、还书()、还书(reversion)、失)、失败(败(Failure)、归还成功()、归还成功(Success)5种状种状态及激活相互转换的事件。态及激活相互转换的事件。请根据分析运用请根据分析运用UML绘制还书的状态图。绘制还书的状态图。7.2活动图活动图(ActivityDiagram)用于描述活动流程的图形称为活动图。描述系统的动态用于描述活动流程的图形称为活动图。描述系统的动态行为。行为。活动图适合描述在没有外部事件触发的情况下的系活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。统内部的逻辑执行过程;否则,状态图更容易描述。和结构化方法中的工具程序流程图作用基本一致。和结构化方法中的工具程序流程图作用基本一致。是一种特殊的状态图是一种特殊的状态图。与状态图的区别与状态图的区别活动图着重表现从一个活动到另一个活动的控制流,是活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程;内部处理驱动的流程;状态图着重描述从一个状态到另一个状态的流程,主要状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。有外部事件的参与。7.2 活动图活动图可以用作以下目的:活动图可以用作以下目的:描述一个操作执行过程中所完成的工作(动作),这是描述一个操作执行过程中所完成的工作(动作),这是活动图最常见的用途。活动图最常见的用途。描述对象内部的工作。描述对象内部的工作。显示如何执行一组相关的动作,以及这些动作如何影响显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。它们周围的对象。显示用例的实例如何执行动作以及如何改变对象状态。显示用例的实例如何执行动作以及如何改变对象状态。说明一次业务流程中的人(参与者)和对象是如何工作说明一次业务流程中的人(参与者)和对象是如何工作的。的。7.2.1活动图的组成活动图的组成1.活动图中的活动图中的事物事物状态状态(State)活动状态和动作状态活动状态和动作状态起点起点(InitialState)活动图的开始活动图的开始终点终点(FinalState)活动图的终点活动图的终点对象流对象流(ObjectFlowState)活动之间的交换的信息活动之间的交换的信息发送信号发送信号(signalSending)活动过程中发送事件,触发另一活动过程中发送事件,触发另一活动流程活动流程接收信号接收信号(SignalReceipt)活动过程中接收事件,接收到信活动过程中接收事件,接收到信号的活动流程开始执行号的活动流程开始执行泳道泳道(SwimLane)活动的负责者活动的负责者迁移迁移(transition)活动的完成与新活动的开始活动的完成与新活动的开始分支分支(junctionpoint)根据条件,控制执行方向根据条件,控制执行方向分叉分叉(fork)以下的活动可并发执行以下的活动可并发执行结合结合(join)以上的并发活动再此结合以上的并发活动再此结合2.活动图中的关系活动图中的关系(1)执行执行setuporder(2)根据根据order的类型是执行不同的类型是执行不同的分支:的分支:singleorder:执行:执行assignseat、chargecreditcardsubscription:同时执行:同时执行assignseats、debitaccount或或 award bonus奖金singleorder与与subscription两步可同时进行两步可同时进行(3)最后最后mailpacket。7.2.2活动图实例活动图实例1.一般的活动图一般的活动图本活动图描述一个处本活动图描述一个处理订单的用例执行过程理订单的用例执行过程存款活动图存款活动图1.状态(State)状态是指在对象的生命周期中满足某些条件、执行某状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。些活动或等待某些事件时的一个条件或状况。活动图中的状态包括活动图中的状态包括动作状态动作状态和和活动状态活动状态。动作状态动作状态对象的动作状态是活动图中最小单位的构造块,表示对象的动作状态是活动图中最小单位的构造块,表示原子动作。原子动作。动作状态有三个特性:动作状态有三个特性:原子性;原子性;不可中断性:不可中断性:瞬时性:瞬时性:活动状态(活动状态(ActiveState)表示的是可以分割的动作表示的是可以分割的动作特点是:它可以被分解成若干活动状态或动作特点是:它可以被分解成若干活动状态或动作状态,它能够被中断,占有有限的时间。状态,它能够被中断,占有有限的时间。活动状态可以理解为一个组合,它的控制流由活动状态可以理解为一个组合,它的控制流由其他活动状态或动作状态组成。其他活动状态或动作状态组成。动作状态和活动状态使用带圆端的方框表示动作状态和活动状态使用带圆端的方框表示活动图中也有初态和终态活动图中也有初态和终态初态表示一个工作流程的开始,用实心圆点来初态表示一个工作流程的开始,用实心圆点来表示表示终态表示了一个活动图的最后和终结状态,用终态表示了一个活动图的最后和终结状态,用实心圆点外加一个小圆圈来表示实心圆点外加一个小圆圈来表示转换(转换(transition)转换是两个状态间的一种关系,表示对象将在转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。或某个特定的条件满足时进入后继状态。分支分支(Branch)分支用于描述基于某个条件的可选择路径。分支用于描述基于某个条件的可选择路径。一个分支可以有一个进入转换和两个或多个输一个分支可以有一个进入转换和两个或多个输出转换出转换在每条输出转换上都有监护条件表达式保护,在每条输出转换上都有监护条件表达式保护,当且仅当监护条件表达式为真时,该输出路径当且仅当监护条件表达式为真时,该输出路径才有效。才有效。在所有输出转换中,其监护条件不能重叠,而在所有输出转换中,其监护条件不能重叠,而且它们应该覆盖所有的可能性。且它们应该覆盖所有的可能性。分支在图形上分支在图形上用菱形表示用菱形表示分叉(分叉(fork)和汇合()和汇合(join)在在UML中使用分叉和汇合表示并行发生的事件流中使用分叉和汇合表示并行发生的事件流分叉表示把一个单独的控制流分成两个或多个并发的控制分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。每一个转移表示一个独立的控制流。汇合表示两个或多个并发控制流的同步发生,一个汇合可汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。以有两个或多个进入转移和一个输出转移。分叉和汇合在图形上都使用同步条来表示,同步条通常用分叉和汇合在图形上都使用同步条来表示,同步条通常用一条粗的水平线表示一条粗的水平线表示图7.16显示了分叉和汇合的图示。示例:描述打电话活动中的并发事件示例:描述打电话活动中的并发事件泳道(泳道(swimlane)“泳道泳道”技术,是将一个活动图中的活动状态进技术,是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。他们负责完成组内的活动。“泳道泳道”技术来描述每个活动是由哪个对象负技术来描述每个活动是由哪个对象负责完成责完成UML中,每个组被称为一个泳道,用一条垂直中,每个组被称为一个泳道,用一条垂直的实线与邻居分开的实线与邻居分开每个活动都明确属于一个泳道,不可以跨越泳每个活动都明确属于一个泳道,不可以跨越泳道,而转移则可以跨越泳道道,而转移则可以跨越泳道用活动图描述客户在商店用活动图描述客户在商店中购买物品的过程。中购买物品的过程。7.2.9对象流(对象流(objectstream)对象流是动作状态或活动状态与对象间的依赖关系。对象流是动作状态或活动状态与对象间的依赖关系。用活动图描述某个对象时,可以把所涉及的对象放置用活动图描述某个对象时,可以把所涉及的对象放置在活动图上,并用一个依赖将这些对象连接到对它们在活动图上,并用一个依赖将这些对象连接到对它们进行创建、撤销和修改的活动转移上。这种包括依赖进行创建、撤销和修改的活动转移上。这种包括依赖关系和对象的应用被称为对象流。关系和对象的应用被称为对象流。在在UML中,使用矩形表示对象中,使用矩形表示对象,对象和动作之间使用对象和动作之间使用带箭头的虚线连接,带箭头的虚线表示对象流。带箭头的虚线连接,带箭头的虚线表示对象流。工具栏工具栏customize7.2.9 对象流对象流可用于对下列关系建模:动作状态对对象的使用以对象流可用于对下列关系建模:动作状态对对象的使用以及动作状态对对象的影响。及动作状态对对象的影响。对象流中的对象有以下特点:对象流中的对象有以下特点:一个对象可以由多个动作操作。一个对象可以由多个动作操作。一个动作输出的对象可以作为另一个动作输入的对象。一个动作输出的对象可以作为另一个动作输入的对象。在活动图中,同一个对象可以多次出现,它的每一次出在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。现表明该对象正处于对象生存期的不同时间点。7.2.9 对象流如果箭头是从动作状态出发指向对象,则表示动作对对象如果箭头是从动作状态出发指向对象,则表示动作对对象施加了一定的影响。施加的影响包括创建、修改和撤销等。施加了一定的影响。施加的影响包括创建、修改和撤销等。如果箭头从对象指向动作状态,则表示该动作使用对象流如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象。状态图中的对象用矩形表示,矩形内是该所指向的对象。状态图中的对象用矩形表示,矩形内是该对象的名称,名称下的方括号表明对象此时的状态。对象的名称,名称下的方括号表明对象此时的状态。下图显示了一个支付账单的对象流。下图显示了一个支付账单的对象流。用活动图描述客户在商用活动图描述客户在商店中购买物品的过程。店中购买物品的过程。(使用对象流技术描述使用对象流技术描述购物这个动态过程中系购物这个动态过程中系统内对象的状态变化统内对象的状态变化)7.2.10 活动图的建模技术在对一个系统建模时,通常有两种使用活动图的方式:在对一个系统建模时,通常有两种使用活动图的方式:为工作流建模为工作流建模为对象的操作建模为对象的操作建模为工作流建模为工作流建模对工作流建模强调与系统进行交互的对象所观察到的活动。工作流一对工作流建模强调与系统进行交互的对象所观察到的活动。工作流一般处于系统的边界,用于可视化、详述、构造和文档化开发系统所涉般处于系统的边界,用于可视化、详述、构造和文档化开发系统所涉及的业务流程。用于业务建模的时候,每一条泳道表示一个职责单位,及的业务流程。用于业务建模的时候,每一条泳道表示一个职责单位,该图能够有效地体现出所有职责单位之间的工作职责,业务范围及之该图能够有效地体现出所有职责单位之间的工作职责,业务范围及之间的交互关系、信息流程。间的交互关系、信息流程。为对象的操作建模为对象的操作建模在这种情况下活动图本质上就是流程图,它描述系统的活动、判定点在这种情况下活动图本质上就是流程图,它描述系统的活动、判定点和分支等部分。因此,在和分支等部分。因此,在UML中,可以把活动图作为流程图来使用,中,可以把活动图作为流程图来使用,用于对系统的操作建模。每一个对象占据一个泳道,而活动则是该对用于对系统的操作建模。每一个对象占据一个泳道,而活动则是该对象的成员方法。象的成员方法。使用活动图对系统建模的步骤使用活动图对系统建模的步骤1、确定活动图所关注的业务流程。、确定活动图所关注的业务流程。2、确定该业务流程中的业务对象。、确定该业务流程中的业务对象。3、确定该工作流的起始状态和终止状态。、确定该工作流的起始状态和终止状态。4、从该工作流的起始状态开始,说明随着时间发生的动作、从该工作流的起始状态开始,说明随着时间发生的动作和活动,并在活动图中把它们表示成活动状态或动作状态。和活动,并在活动图中把它们表示成活动状态或动作状态。5、将复杂的动作,或多次出现的动作集合归并到一个活动、将复杂的动作,或多次出现的动作集合归并到一个活动状态,并对每个这样的活动状态提供一个可展开的单独的状态,并对每个这样的活动状态提供一个可展开的单独的活动图。活动图。6、找出连接这些活动和动作状态的转移。、找出连接这些活动和动作状态的转移。如果工作流中涉及重要的对象,则也把它们加入到活动如果工作流中涉及重要的对象,则也把它们加入到活动图中。图中。实例新增读者新增读者用例属于读者信息管理中的一个功能,主要用于在用例属于读者信息管理中的一个功能,主要用于在系统中增加新的读者信息,其具体的办理流程是:系统中增加新的读者信息,其具体的办理流程是:(1)读者读者填写申请表,并交给填写申请表,并交给图书管理员图书管理员;(2)图书管理员图书管理员将申请表中的信息通过录入界面,输入将申请表中的信息通过录入界面,输入到图书管理系统;到图书管理系统;(3)系统中的)系统中的业务逻辑业务逻辑组件将判断输入的信息是否合法;组件将判断输入的信息是否合法;(4)如果不合法则转入步骤()如果不合法则转入步骤(5),否则转入步骤(),否则转入步骤(6);(5)显示)显示添加错误信息添加错误信息,转到(,转到(8););(6)在)在“数据库数据库”添加相信的用户信息;添加相信的用户信息;(7)显示)显示添加成功信息添加成功信息;(8)结束。)结束。7.2 活动图活动被按职责分配到用线活动被按职责分配到用线分开的不同区域分开的不同区域(泳道泳道):CustomerSalesStockroom仓库仓库(1)顾客要求服务,顾客要求服务,Sales负责接收定单,并负责接收定单,并提交到提交到Stockroom(2)Stockroom处理定处理定单,与此同时,单,与此同时,Customer付款,并由付款,并由Sales处处Deliverorder至至Customer。2.带泳道的活动图带泳道的活动图本例为一个按活动职责本例为一个按活动职责(带泳道带泳道)组织的处理订单用例的活组织的处理订单用例的活动图动图(模型中的活动按职责组织模型中的活动按职责组织)。状态图与活动图的区别状态图与活动图的区别状态图只建模状态图只建模一个对象一个对象的行为,活动图可以建的行为,活动图可以建模多个对象的活动模多个对象的活动活动图中也允许建模特定活动中对象的某个状活动图中也允许建模特定活动中对象的某个状态态7.活动图7.5 活动图练习1.请选择下面所列的活动图的事物中,表示信号的是请选择下面所列的活动图的事物中,表示信号的是(),表示对象流的是,表示对象流的是()。A BCD2.关于右面的活动图,下面的说关于右面的活动图,下面的说法中正确的是法中正确的是()。A aPrinter:Printer是信号。是信号。B 操作开始从操作开始从“删除报文框删除报文框”活动开始。活动开始。C 在在“创建创建PS文件文件”和和”删删除报文框除报文框”活动中活动中 发送发送“print(file)”信号。信号。D 信号发送的方向是从左到信号发送的方向是从左到右。右。习题答案习题答案1 C,B 2 C1)使用)使用RationalRose创建状态图创建状态图右击右击browser框中的框中的CourseOffering类,弹出快类,弹出快捷菜单;捷菜单;选择选择NewStatechartDiagrams项;项;输入状态图的名字输入状态图的名字“CourseOfferingStates”。2)创建状态(States)在工具条中选择在工具条中选择State图标;图标;在状态图中单击要放置状态的位置;在状态图中单击要放置状态的位置;输入状态的名字。输入状态的名字。(如出错,可用如出错,可用Rename命令更改命令更改)3)创建状态转换)创建状态转换在工具条中选择在工具条中选择StateTransitions图标;图标;单击起始状态,并拖至下一个状态;单击起始状态,并拖至下一个状态;输入状态转换的名字。输入状态转换的名字。(如出错,可用如出错,可用Rename命令更改命令更改)4)细化状态图)细化状态图4-1.增加状态转换的细节部分增加状态转换的细节部分4-2增加状态的增加状态的Actions部分部分1)双击某个状态,打开规格设定框;双击某个状态,打开规格设定框;2)选择选择Actions标签页;标签页;3)右击右击Actions框中的任一位置,弹出快捷菜单;框中的任一位置,弹出快捷菜单;4)选择选择Insert项,将创建一个类型为项,将创建一个类型为entry的的action;5)双击这个双击这个action,弹出,弹出action的规格设定框;的规格设定框;双击4-2.增加状态的增加状态的Actions部分部分6)在when框中设定相应的类型;7)在type框中设定:action或者send event(用表示);8)输入action的名字,或event的信息;9)点按OK按扭。状态图完成状态图完成活动图活动图(建立选修课程目录表建立选修课程目录表)1)使用使用RationalRose创建活动图创建活动图右击右击browser框中的框中的UseCaseView包,弹出快捷菜单;包,弹出快捷菜单;选择选择NewActivityDiagram项;项;输入活动图的名字;输入活动图的名字;(如出错,可用如出错,可用Rename命令更改命令更改)双击双击browser框中的框中的ActivityDiagram名称,打开该图。名称,打开该图。2)创建活动)创建活动2使用使用RationalRose创建活动创建活动(Activity)在工具条中选择在工具条中选择Activity图标;图标;在活动图在活动图(ActivityDiagram)中单击要放置活动中单击要放置活动(Activity)的位置;的位置;输入活动名字;输入活动名字;(如出错,可用如出错,可用Rename命令更改命令更改)在工具条中选择在工具条中选择StateTransition图标;图标;单击一个活动,并将其拖到相应的活动上。单击一个活动,并将其拖到相应的活动上。3)创建决策点创建决策点(DecisionPoints)在工具条中选择在工具条中选择Decision图标;图标;在活动图在活动图(ActivityDiagram)中单击要放置决策点的位置;中单击要放置决策点的位置;输入决策的名字;输入决策的名字;在工具条中选择在工具条中选择StateTransition图标;图标;单击一个活动,并将其拖到相应的决策点上;单击一个活动,并将其拖到相应的决策点上;在工具条中选择在工具条中选择StateTransition图标;图标;单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;双击此条转换线,打开规格设定框;双击此条转换线,打开规格设定框;选择选择Detail标签页;标签页;在在GuardCondition框中输入条件框中输入条件No;点按点按OK按扭,关闭规格设定框;按扭,关闭规格设定框;在此条转换线上单击左键,选中此条转换线;在此条转换线上单击左键,选中此条转换线;点按屏幕上方的点按屏幕上方的Format:LineStyle:Rectilinear菜单;菜单;4)创建同步条创建同步条(SynchronizationBar)在工具条中选择在工具条中选择HorizontalSynchronization图标;图标;在活动图在活动图(ActivityDiagram)中单击要放置同步条的位置;中单击要放置同步条的位置;在工具条中选择在工具条中选择StateTransition图标;图标;5)创建泳道创建泳道(Swimlanes)在工具条中选择在工具条中选择Swimlanes图标;图标;在活动图在活动图(ActivityDiagram)中单击要放置泳道的位置;中单击要放置泳道的位置;双击泳道,打开规格说明框;双击泳道,打开规格说明框;在在Name框中输入泳道的名字;框中输入泳道的名字;点按点按OK按扭,关闭规格设定框;按扭,关闭规格设定框;对泳道的大小位置进行调整;对泳道的大小位置进行调整;将所需的活动和变换线拖至新泳道中。将所需的活动和变换线拖
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!