第10章UML状态机图
状态机图(状态活动)汇总课件
已发货
收到货物[缺部分商品]
检查完[缺部分商品]
等待
收到货物[商品齐全]
取消
取消 取消
取消订单
状态图(订单处理3)
检查 do/检查商品
订单处理
收到货物[缺部分商品]
检查完[缺部分商品]
等待
检查完[商品齐全]
办理发货 do/启动发货
收到货物[商品齐全]
已发货
发货
取消 取消订单
状态图(航班预订1)
无预定
预定/已预订数+=预订数
部分预定
event 预 定 [ 预 订 数 < 空 位 数 ] event退 订 [ 退 定 数 < 已 预 订 数 ] /
取消航班
关闭
预定关闭
关闭 关闭
退订/已预订数-=退定数
预定完
预定[无空位]
状态图(航班预订3)
使用复合状态
预定中 退订[已预订人数==0]/已预订数=退定数
action)
Action 可执行的原子计算。 不可中断,其执行时间可忽略不计。
两种特殊动作:
进入动作 (entry action) 进入状态时执行的动作;Entry/ setMode(onTrack)
退出动作 (exit action)
退出状态时执行的动作;Exit /setMode(offTrack)
●例如:在烧水器的状态图中, turnOn 就是一种调用事 件,用来将开关置于“0n” 状态。
触发事件的四种类型
改变事件
● 某个指定属性值为真时,事件得到触发。 ●在对象生命周期内, 一直在计算改变事件中的属性值。
当属性值为真时,事件触发,计算停止 ●例如: when(temperature>100)/alerm()
第10章:UML系统分析与设计-状态图
状态图的概念
状态
状态用于对实体在其生命周期中的各种状况进行建模,一 个实体总是在有限的一段时间内保持一个状态。状态由一 个带圆角的矩形表示,状态的描述应该包括:名称、入口 和出口动作、内部转换和嵌套状态。
状态图的概念
转换
• 在UML的状态建模机制中,转换用带箭头的直线表示, 一端连接源状态,箭头指向目标状态。转换还可以标 注与此转换相关的选项,如事件、监护条件和动作等, 如果转换上没有标注触发转换的事件,则表示此转换 自动进行。
要创建状态图,首先要标识出哪些实体需要使用状态图进一步建 模。虽然我们可以为每一个类、操作、包或用例创建状态图,但 是这样做势必浪费很多的精力。一般来说,不需要给所有的类都 创建状态图,只有具有重要动态行为的类才需要。 从另一个角度看,状态图应该用于复杂的实体,而不必用于具有 复杂行为的实体。使用活动图可能会更加适合那些有复杂行为的 实体。具有清晰、有序的状态实体最适合使用状态图进一步建模。 对于聊天系统来说,需要建模的实体就是用户的状态。
从一个状态引出的多个转换可以有同样的触发器事件。若此事 件发生,所有监护条件都被测试,测试的结果如果有超过一个 的值为真,也只有一个转换会激发。如果没有给定优先权,则 选择哪个转换来激发是不确定的。
构成状态图的元素
触发器事件
触发器事件就是能够引起状态转换的事件。如果此事 件有参数,这些参数可以被转换所用,也可以被监护 条件和动作的表达式所用。触发器事件可以是信号、 调用和时间段等。 对应与触发器事件,没有明确的触发器事件的转换称 作结束转换(或无触发器转换),是在结束时被状态 中的任一内部活动隐式触发的。
创建状态图
1. 创建状态图
• 在Rational Rose中,可 以为每个类创建一个或 者多个状态图,类的转 换和状态都可以在状态 图中体现。首先,展开 “Logic View”菜单项, 然后在“Logic View”图 标上单击鼠标右键,在 弹出的菜单中选择 “New”下的 “Statechart Diagram” 选项建立新的状态图。
第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图
UML的状态机图
UML的状态机图UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统中的各种构建块和交互关系。
UML的状态机图是其中一个最为重要的建模图之一。
什么是状态机图?状态机图是一种用于描述对象行为的UML图表。
它以有限状态机的形式描述对象或系统在不同状态下对事件以及其他因素产生的响应。
状态机图显示了对象的状态及其之间的转换。
状态机图主要由三个部分组成:状态、转移和事件。
状态表示对象或软件系统处于的状态,转移表示状态之间的转换,事件则表示导致状态转换的触发器或条件。
状态机图的建立过程在建立状态机图之前,需要先确定对象或软件系统的状态、转移和事件。
1. 确定状态首先需要确定对象或软件系统可能出现的所有状态。
每个状态都应该有一个名称、一个描述以及一个标识符。
状态可以是“初态”(启动状态)、“终态”(结束状态)或“中间态”(中间状态)。
2. 确定转移和事件根据对象或软件系统的实际情况,确定状态之间的转移以及导致转移的事件或条件。
每个转移都应该有一个名称、一个标识符以及一个触发器。
触发器可以是一些条件,例如键盘上的一个按键或计时器到期,也可以是上一个状态完成某些任务导致的条件。
例如,在一个自动售货机的状态机图中,售货机可能处于“待机”、“已付款”、“正在出货”、“出货完成”四种状态。
当用户选择购买商品并投入硬币时,售货机会从“待机”状态转移到“已付款”状态,并且会关闭“使用硬币”事件。
当售货机完成出货并关闭接口时,它会从“正在出货”状态转移到“出货完成”状态。
状态机图的用途状态机图有很多用途。
它可以用于描述产品或系统的交互设计,也可以用于演示API和网络安全策略的行为。
一些常见的用途包括:1. 软件开发状态机图可以在软件开发过程中用于确定软件的行为、处理错误和异常情况、定义状态转换以及帮助代码实现。
通过建立状态机图,可以更好地理解软件中各个状态的流转情况,从而提高软件开发效率。
状态机图(精品)
状态机图1.概述状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌套的复合状态等,一个典型的状态机图如图1所示:图1. 状态机图2.基本表示符号状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。
2.1状态(State)状态是对象生命周期中的一个条件或形态。
状态由对象的属性值、与其他对象的关系以及正在执行的活动来确定。
在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆表示,终止状态用牛眼表示,如图2所示:图2. 状态状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换分栏等,如图3所示:图3. 带分栏的状态状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:图4. 带有名称标签符号的状态2.2转移(Transaction)转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转换(嵌套在状态内部)。
如图5所示:图5. 转移2.3事件(Event)事件是对,在特定时间和空间上,所发生的有意义的事情。
在状态机中,事件触发转移,事件或者显示在转换之上,或显示在状态以内。
共有四种类型的事件:信号事件、调用事件、时间事件、改变事件。
信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。
信号事件是通过信号来触发的事件,在UML中,信号如图6所示:图6. 信号调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:图7. 调用事件时间事件用关键字after表示,说明事件被触发的临界时间。
改变事件用关键字when表示,说明将事件改变所满足的条件。
如图8所示:图8. 时间事件和改变事件2.4伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。
它是一个瞬时状态,用于构造转换的细节。
当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。
第10章 状态机图讲解
初始状态的表示
终止状态 终止状态是对象的最后状态,是一个状态图的终止点。 终止状态只能作为转换的目标,而不能作为转换的源。 终止状态在一个状态图中可以有多个,它用一个套有 一个实心圆的空心圆表示。
终止状态的表示
状态
对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一 个带圆角的矩形表示。它包含个三部分: 名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图 中,名字应该是唯一的。 内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改 变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出 该状态时,可以包含退出动作。我们把内部转换标识在状态框的第二 栏;用一条实线箭头来标识外部转换,外部转换是指一种状态到另一 种状态的转换。 嵌套状态 :状态图中的状态可以包含两种状态:一种是简单状态, 简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。 即状态图的某些状态本身也是状态图。
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
阅读最简单的状态图
•
最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、
包含一些文字描述的有向箭头线,这些箭头线称为转换
Hale Waihona Puke 初始状态 初始状态代表状态图的起始位置,只能作为转换的源, 而不能作为转换的目标。初始状态在一个状态图中只 允许有一个,它用一个实心的圆表示
状态机图
知识图谱
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
状态机图
历史状态
历史状态只是一个伪状态(Pseudo State)的图形标
记,只能作为一个组合状态中的子状态,不能在顶层 状态机图中使用。
例题:网上购物车结账
c
广东药学院 · 医药信息工程学院
历史状态
历史状态的分类
同级别子状态:浅历史 含下级子状态:深历史
c
广东药学院 · 医药信息工程学院
对确定对象的状态有重要意义的属性称为状态属
性;
在建立状态机模型时,需要正确地找出一个对象
的全部状态属性,根据它们的值划分对象状态;
c
广东药学院 · 医药信息工程学院
状态
UML对一个状态的描述包含以下信息
名字(允许状态匿名) 入口活动 出口活动
内部转移
子状态 延迟事件
c
广东药学院 · 医药信息工程学院
如何阅读状态机图
例题:网上商店送货处理状态机图 (简单状态表示的)。
c
广东药学院 · 医药信息工程学院
如何阅读状态机图
例题:网上商店送货处理状态机图(复合状态表示)。
c
广东药学院 · 医药信息工程学院
如何阅读状态机图
可以将复合状态整体视为一个简单状态; 采用复合状态可以简化对复杂行为的建模,清楚地表
特殊状态
初态(实心圆)
终态(圈内实心圆)
c
广东药学院 · 医药信息工程学院
状态机
状态机计算机科学理论的一部分。
编译技术:用有限状态机描述词法分析过程; 操作系统:进程调度、缓冲区调度等都可采用状态机描述。
UML用状态机对系统的动态特征建模。
状态机一般用于对一个模型元素建立行为模型,模型
UML状态机图介绍
UML状态机图1.状态机图的作用状态机图是用来为对象的状态及造成状态改变的事件建模。
UML的状态机图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。
状态机图也可用于描述Use Case,以及全系统的动态行为。
状态机图表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。
2.状态机图的基本元素状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。
状态图由状态(state,圆角矩形)与转换(transition,连接状态的箭头)组成。
引起状态改变的触发器(trigger)或者事件(event)沿着转换箭头标示。
如图所示灯光有2个状态:off与on。
当lift switch或者lower switch事件被触发时,灯光状态会改变。
图表1 状态图的基本元素状态图通常有初始伪状态(initial pseudostate)和最终状态(final state),分别表示状态机的开始和结束。
初始状态用实心圆表示,终止状态用牛眼表示。
图表2状态图中的初始伪状态与最终状态2.1状态(state)状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。
一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成。
图表3 带分栏的状态在状态图的下面部分可以标识内部活动,包括事件和动作(event/action)。
Entry和exit事件是标准的,任何一个进入状态的转换都将会调用entry动作,任何一个退出状态的转换都将会调用exit动作,而且也可以添加自己的事件。
与do行为不同,进入和退出行为是无法被中断的。
图表4状态的内部行为例如,咖啡机正在煮咖啡的状态(Brewing),并且可以把行为写在状态内。
UML状态机图介绍
UML狀態機圖1.狀態機圖の作用狀態機圖是用來為對象の狀態及造成狀態改變の事件建模。
UMLの狀態機圖主要用於建立對象類或對象の動態行為模型,表現一個對象所經歷の狀態序列,引起狀態或活動轉移の事件,以及因狀態或活動轉移而伴隨の動作。
狀態機圖也可用於描述Use Case,以及全系統の動態行為。
狀態機圖表示一個模型元素在其生命期間の情況:從該模型元素の開始狀態起,回應事件,執行某些動作,引起轉移到新狀態,又在新狀態下回應事件,執行動作,引起轉移到另一個狀態,如此繼續,直到終結狀態。
2.狀態機圖の基本元素狀態機圖の基本元素包括:狀態、轉移、事件、偽狀態和複合狀態。
狀態圖由狀態(state,圓角矩形)與轉換(transition,連接狀態の箭頭)組成。
引起狀態改變の觸發器(trigger)或者事件(event)沿著轉換箭頭標示。
如圖所示燈光有2個狀態:off與on。
當lift switch或者lower switch事件被觸發時,燈光狀態會改變。
圖表1 狀態圖の基本元素狀態圖通常有初始偽狀態(initial pseudostate)和最終狀態(final state),分別表示狀態機の開始和結束。
初始狀態用實心圓表示,終止狀態用牛眼表示。
圖表2狀態圖中の初始偽狀態與最終狀態2.1狀態(state)狀態是指在對象生命週期中滿足某些條件、執行某些活動或等待某些事件の一個條件和狀況。
一個狀態通常包括名稱、進入/退出活動、內部轉換、子狀態和延遲事件等五個部分組成。
圖表3 帶分欄の狀態在狀態圖の下麵部分可以標識內部活動,包括事件和動作(event/action)。
Entry和exit事件是標準の,任何一個進入狀態の轉換都將會調用entry動作,任何一個退出狀態の轉換都將會調用exit動作,而且也可以添加自己の事件。
與do行為不同,進入和退出行為是無法被中斷の。
圖表4狀態の內部行為例如,咖啡機正在煮咖啡の狀態(Brewing),並且可以把行為寫在狀態內。
活动图与状态图
系统分析 在系统分析系统阶段用状 态图和活动图为对象动态模型 中的状态模型建模。 系统设计 在系统设计阶段阶段对已 经建立的对象动态模型(状态 实现 图、活动图、顺序图和协作图) 采用迭代式的方式进一步细化 测试 和完善。
部署
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.2.2 状态图组成
2. 状态 状态是指在对象的生命期中的一个条件或状况, 在此期间对象将满足某些条件、执行某些活动或等待 某些事件。
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.2.2 状态图组成
UML U ML 系统建模基础教程 建模实例教程
第10章 状态图与活动图
10.1 动态建模概述
5.状态图做什么?
状态图(State Diagram)主要用来描述对象、子系统、系 统的生命周期。通过状态图可以表现系统中一个对象所具有的 各种状态和这个对象从一种状态到另一种状态的转换(迁移), 以及影响对象这些状态的事件(如收到消息、时间已到、报错、 条件为真)等。它主要描述某个对象从一个状态到另一个状态 变化迁移的控制流。
第10章 状态图与活动图
10.2.2 状态图组成
理解状态的特征: (1)进入/退出动作:对象本身的一个操作。如果在电梯里是一个 状态的话,那员工进电梯和出电梯就是状态“在电梯里”的进 入/退出动作。 (2)内部转换:例如员工在去等电梯的时候发现钥匙没带,此时 我们不用在“等电梯”以后,而是在“准备回家”的状态中就 去拿钥匙了。虽然整体的状态没有发生变化,但对于对象本身 来说,前后是不一样的,一个是有钥匙,一个是没有钥匙。 (3)子状态:如果需要进一步描述员工对象在电梯里聊天、打电 话等状态时,这些状态就是该对象的“在电梯里”状态的子状 态。 (4)延迟事件:现在不立即产生的事件,该事件是在一段时间以 后才产生的事件。员工必须等待到达17:50的时候,才能下班。
UML讲义10-状态机图
注意:状态本质上就是对象属性的值, 注意:状态本质上就是对象属性的值,状态的变化就是属性 值的变化。 值的笛卡儿积中, 所构成的笛卡儿积中,尽管 每一个元素均可广义地称为 对象的一个状态, 对象的一个状态,但软件开 发者需要认识的是这个笛卡 儿积上的每一个等价集合, 儿积上的每一个等价集合, 即使对象的操作呈现相同行 为规则的属性值的集合。 为规则的属性值的集合。把 每一个等价集 等价集称为对象的一 每一个等价集称为对象的一 种状态。 种状态。
3、时间事件 时间事件是经过一定的时间或者到达某个时间后发生的 时间事件是经过一定的时间或者到达某个时间后发生的 经过一定的时间或者到达某个时间 事件。时间事件使用after标识,其格式为: after标识 事件。时间事件使用after标识,其格式为: after(时间表达式)/动作 after(时间表达式)/动作 时间表达式)/ at(时间表达式)/动作 时间表达式)/ at(时间表达式)/动作
思考:以下动作发生的先后顺序? 思考:以下动作发生的先后顺序?
第四节 组成状态
简单状态: 简单状态:不内含嵌套状态 状态
组成状态: 组成状态:嵌套了其他状态 子状态: 子状态:被嵌套的状态
简单状态: 简单状态:A 组成状态: 组成状态:B 子状态: 子状态: C D
为什么会出现子状态? 为什么会出现子状态?
状态
状态
初始状态 终止状态
状态还可以添加活动。活动是在该状态时要执行的动作。 状态还可以添加活动。活动是在该状态时要执行的动作。
活动的格式如下: 活动的格式如下: [Entry|exit|do]/动作 [Entry|exit|do]/动作
活动有三个标准事件(参见P139): 活动有三个标准事件(参见P139): P139 entry事件:进入该状态时的特定动作(入口动作) entry事件:进入该状态时的特定动作(入口动作) 事件 exit事件:退出该状态时的特定动作(出口动作) exit事件:退出该状态时的特定动作(出口动作) 事件
uml建模第十章-状态机图
例:CD播放器
5
一、状态(state)
2、状态的表示 状态名称 入口动作 出口动作 内部转换 内部活动 可推迟事件
状态示例
6
动作(Action)
可执行的原子计算。 不可中断,其执行时间可忽略不计。
两种特殊动作:
进入动作(entry action):进入某状态时执 行的动作,用“entry/要执行的动作”表示。
47
34
10.3 建立状态机图
1.寻找主要的状态 飞机票有以下4种状态:无预订、部分预订、
预订完、预订关闭。 (1)在刚确定飞行计划时,显然没有任何预订,
且在顾客预订机票之前都将处于“无预订”状态。 (2)对于订座而言,有“部分预订”和“预订完”
两种状态。 (3)当航班快要起飞时,要“预订关闭”。
35
第10章 状态机图
10.1 状态机图概述 10.2 状态机图基本元素 10.3 建立状态机图 10.4 状态机图应用范围
小结
1
10.1 状态机图概述
状态机图用来对系统的动态行为建模; 描述单一对象在其生命期内受各种事件的
影响而发生的状态变化; 状态机图是展示状态与状态转换的图,可
以描述对象的行为,也可以描述用例、协 作和方法甚至整个系统的动态行为。
无预订 部分预订
预订完 预订关闭
退订()事件发生 后,使预订人=0 不直接转换
无转换
预订()
退订() 无转换
不直接转换 关闭()
预订(), 无空座
关闭()
关闭()
无转换
37
10.3 建立状态机图
确定了状态之间的有效转换,绘制出相应的状态机 图,如图10-18所示。
38
复合状态_UML与Rose建模实用教程_[共2页]
145 10.3 复合状态在本章前面介绍的内容中,所涉及的状态都是不包含嵌套子结构的简单状态。
然而,在建模过程中,需要表现的状态可能会很复杂,这时就需要用到复合状态来进行建模。
复合状态是指包含有一个或多个嵌套状态机的状态。
当想要描述的系统非常复杂,而有一些状态又构成了紧密的相互关联的时候,我们可以先将一部分细小的状态组合成一个状态机,把这个新的状态机作为总状态图中的一个复合状态来呈现。
复合状态中包含的状态称为子状态。
复合状态可以分为顺序复合状态与并发复合状态。
1.顺序复合状态顺序复合状态,在UML 2规范后又被称为非正交状态,是仅包含一个状态机的复合状态。
当顺序复合状态被激活时,只有一个子状态会被激活。
它只增加了一层子结构,没有增加额外的并发性。
例如,在一个游戏中需要有对游戏角色的动画控制。
这个角色的动画控制就可以使用一个状态图来描述。
例如,这个游戏角色在地面上可以站立、蹲下、行走、跑动和起跳,但在空中的时候就没有什么可选动作,只能听候重力的安排随时准备着地了。
那么我们可以先设计一个Ground 状态机,在Ground 状态机中定义了站立、蹲下、行走、跑动这几个状态和它们之间的状态转移,在这里我们排除了“起跳”,因为这实际上是地面状态到空中状态的一个转换。
之后把Ground 本身作为一个状态,和Fly (空中)状态以起跳事件作为转移触发点进行关联,一个比较复杂的行为规范就已经通过复合状态的方式来巧妙解决了,其状态图如图10-7所示。
图10-7 顺序复合状态2.并发复合状态当一个复合状态中包括两个或多个并发执行的子状态机时,这个复合状态称为并发复合状态,也称正交复合状态。
并发复合状态将复合状态分成若干个正交区域,每个区域都有一个相对独立的子状态机。
如果该并发复合状态是激活的,那么该状态中每个区域都将有一个状态是激活的。
例如,参加某门课程的学生需要完成课程任务与期末考试才能获得课程通过。
在课程任务与期末考试完成前应该属于课程的“未完成”状态。
UML类图、活动图、UseCase图、状态机图
一、类图主要构成元素1.类(Classes)类包含3个组成部分。
第一个是Java中定义的类名。
第二个是属性(attributes)。
第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。
加号(+)表示具有公共可见性。
减号(-)表示私有可见性。
#号表示受保护的可见性。
省略这些修饰符表示具有package(包)级别的可见性。
如果属性或操作具有下划线,表明它是静态的。
在操作中,可同时列出它接受的参数,以及返回类型,如下图所示:2.包(Package)UML类图中包是一种常规用途的组合机制。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。
你还会拥有物理性的包,它直接转换成系统中的Java包。
每个包的名称对这个包进行了惟一性的标识。
3.接口(Interface)接口是一系列操作的集合,它指定了一个类所提供的服务。
它直接对应于Java中的一个接口类型。
接口既可用下面的那个图标来表示(上面一个圆圈符号,圆圈符号下面是接口名,中间是直线,直线下面是方法名),也可由附加了<<interface>>的一个标准类来表示。
通常,根据接口在类图上的样子,就能知道与其他类的关系。
二、活动图主要构成元素1、活动状态图(Activity)活动状态用于表达状态机中的非原子的运行,其特点如下:(1)、活动状态可以分解成其他子活动或者动作状态。
(2)、活动状态的内部活动可以用另一个活动图来表示。
(3)、和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移。
(4)、动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态。
UML中活动状态和动作状态的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息。
2、动作状态(Actions)动作状态是指原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态。
UML-状态机图和建模
UML-状态机图和建模
1、⽬标:如何画状态机图
2、定义:描述某个对象的状态、感兴趣的事件、以及对象响应该事件的⾏为。
转换:⽤箭头表⽰
状态:⽤圆⾓矩形表⽰
事件:指的是⼀件值得注意的事情的发⽣。
如:拿起电话。
当事件“off hook”发⽣时,电话从“idle”状态转换为“active”状态。
通常包含⼀个初始状态。
3、准则
为具有复杂⾏为的状态依赖对象⽽不是状态⽆关对象建⽴状态机图。
如:订单对象
4、NextGen处理销售⽤例的状态机图
5、总结
1)、UP中没有叫“状态模型”的东西。
事实上,任何模型(设计模型、领域模型、业务对象模型)中的任何元素都可以使⽤状态机来帮助理解他们响应事件的动态⾏为。
2)、⼀般将状态机图写⼊到操作契约的post-condition中。
第10章UML状态机图
9
10.2.3 分支的表示
对象在外部事件的作用下,根据监护条件的不同值, 转向不同的目标状态,即对象的状态根据监护条件的 取值而发生分支。分支用空心小菱形表示,如图10-13 所示。
根据监护条件的真假可以触发不同的分支迁移。如图 10-14所示,对象处于状态1时,当某个事件作用于对 象,这时就要计算监护条件,当条件满足时(true),对 象的状态变为状态2;当条件不满足时(false),对象状 态变为状态3。
(1) 用户设置密码时,当前状态不会发生改变,可以把 这一动作建模为内部迁移:set/reset password。 (2) 显示帮助时,当前状态也不会改变,可以把这一动 作建模为内部迁移:help/show help。
13
10.3.3 自动迁移
自动迁移是指在没有事件 触发的情况下,当监护条件 为真时执行某些动作。它是 离开某个状态后重新进入原 先的状态,激发状态的入口 动作和出口动作的执行。
6
10.2.2 迁移的表示
迁移是指对象在事件的作用下,当监护条件为 真时执行一定的动作。迁移分四种类型(外部迁 移、内部迁移、自动迁移和复合迁移)。下面主 要介绍外部迁移的表示法。
外部迁移用带箭头的直线表示,箭尾连接源状 态(转出的状态),箭头连接目标状态(转入的状 态)。每个迁移可能包含三个要素:
22
10.4.5 建立状态机图的步骤
绘制状态机图的一般步骤如下。
(1) 寻找主要的状态。 (2) 寻找外部事件,以便确定状态 之间的迁移。 (3) 详细描述每个状态和迁移。 (4) 把简单状态图迁移为复合状态 图。
23
10.5 状态机图应用
1.对对象的生命 周期建模 2.对反应型对象 建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
10.2 状态图的表示
一个状态图包含的元 素有初始状态、终止状 态、状态、迁移和分支, 下面分别描述元素的语 义和表示方法。
5
10.2.1 状态的表示
1.初始状态 2.终止状态 3.状态
(1) (2) (3) (4) (5) 状态名称 entry/action exit/action do/activity event/action(argument)
21
10.4.4 子状态机间的异步通信
在很多情况下,并发子状态机之间可能需要异步通信。为了实 现异步通信,我们采用的策略是:一个子状态机设置某个属性 值,在另一个子状态机中,在某个迁移的监护条件中使用该属 性值。 在图10-23中,订单处理状态包含了两个并发的子状态机:第 一个子状态机包含两个状态,即接收支付和已支付;第二个子 状态机也包含两个状态,即配货和发货。
2.并发子状态
19
10.4.2 复合状态
3.复合状态表示法
1) 将子状态机嵌入圆角矩形中 2) 将复合图标嵌入圆角矩形中
20
10.4.3 历史状态
当状态机通过迁移从某种状态转入复合状态时,被嵌套的子状态 机一般要从子状态机的初始状态开始执行,除非转到特定的子状 态。 但是在有些情况下,当离开一个复合状态,重新又进入复合状态 时,并不希望从复合包含的子状态机的初始状态开始执行,而是 希望直接进入上次离开复合状态时的最后一个活动子状态,此时 需要用一个包含字母“H”的小圆圈表示最后一个活动子状态,称 为历史状态。 下面考虑一个MP3播放器对象的状态图,如图10-22所示。
6
10.2.2 迁移的表示
迁移是指对象在事件的作用下,当监护条件为 真时执行一定的动作。迁移分四种类型(外部迁 移、内部迁移、自动迁移和复合迁移)。下面主 要介绍外部迁移的表示法。
外部迁移用带箭头的直线表示,箭尾连接源状 态(转出的状态),箭头连接目标状态(转入的状 态)。每个迁移可能包含三个要素:
(1) (2) (3) 0或多个事件。 0或多个监护条件。 0或多个动作。
7
10.2.2 迁移的表示
图10-7所示为烧水器的 状态图。我们用该图说明 迁移的三要素。
8
10.2.2 迁移的表示
1.源状态
2.目标状态
3.事件
1) 2) 3) 4) 调用事件 信号事件 改变事件 时间事件
4.监护条件
5.动作
14
10.3.4 复合迁移
复合迁移由简单迁移组成,它通过分支判定, 把多个简单迁移组合在一起,如图10-17所示。
15
10.4 状态的分类
状态机图中的状 态分为简单状态和 复合状态两种。
16
10.4.1 简单状态
简单状态是指不包含子状态的状态,但简单状 态可以具有内部迁移、入口动作和出口动作等。 如图10-18所示的便是某销售POS机的工作流程: 当客户到收银台后,收银员逐一输入用户购买 的商品,输入完之后,计算出总金额,然后等 待用户付款,确定支付成功之后,完成收银, 等待下一个客户。
5.举例说明:简单状态、顺序子状态、互斥子 状态、历史状态的表示法和应用。
17
10.4.2 复合状态
复合状态是指状态本身包含 一个或者多个子状态机的状 态。复合状态中包含的多个 子状态之间的关系有两种: 一种是并发关系,另一种是 互斥关系。
如果子状态是并发关系,则 称子状态为并发子状态;如 果子状态是互斥关系,则称 子状态为顺序子状态。
1.顺序子状态
18
10.4.2 复合状态
2
第10章 状 态 机 图
状态机图描述从一种状态迁移 到另一种状态的控制流程,常 用来对系统的动态特征进行建 模。在大多数情况下,它用来 对反应型对象(外部事件触发对 象,对象接收到事件后产生响 应)的行为建模。
3
10.1 什么是状态机图
状态机图描述对象在整 个生命周期内,在外部 事件的作用下,从一种 状态迁移到另一种状态 的关系图。利用状态图 可以精确地描述对象在 生命周期内的行为特征。 状态图的节点是状态(包 括初始状态和终止状态), 关系是迁移。如图10-1 所示便是一个典型的状 态机图。
22
10.4.5 建立状态机图的步骤
绘制状态机图的一般步骤如下。
(1) 寻找主要的状态。 (2) 寻找外部事件,以便确定状态 之间的迁移。 (3) 详细描述每个状态和迁移。 (4) 把简单状态图迁移为复合状态 图。
ห้องสมุดไป่ตู้
23
10.5 状态机图应用
1.对对象的生命 周期建模 2.对反应型对象 建模
24
10
10.3 迁移的分类
迁移表示当一个外部事件作用于对象,在监护 条件得到满足时,对象在源状态下执行一系列 的动作后,转向目标状态。迁移进入的状态称 为活动状态,迁移离开的状态变为非活动状态。
迁移通常分为外部迁移(用实线箭头表示)、内 部迁移(在状态的第二栏中表示,格式是:事件 名/动作名)、自动迁移(不需要监护条件下,离 开原先状态,然后又回到原先状态)和复合迁移 4种。
6.活动 7.理解简单状态图
9
10.2.3 分支的表示
对象在外部事件的作用下,根据监护条件的不同值, 转向不同的目标状态,即对象的状态根据监护条件的 取值而发生分支。分支用空心小菱形表示,如图10-13 所示。
根据监护条件的真假可以触发不同的分支迁移。如图 10-14所示,对象处于状态1时,当某个事件作用于对 象,这时就要计算监护条件,当条件满足时(true),对 象的状态变为状态2;当条件不满足时(false),对象状 态变为状态3。
(1) 用户设置密码时,当前状态不会发生改变,可以把 这一动作建模为内部迁移:set/reset password。 (2) 显示帮助时,当前状态也不会改变,可以把这一动 作建模为内部迁移:help/show help。
13
10.3.3 自动迁移
自动迁移是指在没有事件 触发的情况下,当监护条件 为真时执行某些动作。它是 离开某个状态后重新进入原 先的状态,激发状态的入口 动作和出口动作的执行。
10.6 小
结
本章介绍了状态的概念和 UML表示法,然后引入状态 机的概念,并通过例子逐一 说明简单状态机图、复合状 态的状态机图的概念。
25
10.7 习
题
1.对象的状态的语义是什么?对象的状态和对 象的属性有什么区别?
2.状态机与状态图有什么区别?
3.状态机图由哪5个部分组成?
4.举例说明迁移的类型和表示方法。
11
10.3.1 外部迁移
外部迁移是一种改变对象状态的迁移。外部迁 移用从源状态到目标状态的箭头表示。如图1015所示即描述了火车上卫生间的简单状态迁移, 该卫生间存在3个状态,包含5个外部迁移。
12
10.3.2 内部迁移
内部迁移是指状态不变的情况下,事件引发的动作。 内部迁移自始至终都不离开源状态,所以不会产生入 口动作和出口动作。因此,当对象处于某个状态进行 一些动作时,可以把这些动作看成是内部迁移。 在图10-16中,当处在登录口令状态(Enter Password) 时,以下的两个动作都不会改变当前的状态。