用staruml怎么画并发复合状态的状态机 并发图

【图文】状态机图_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
大小:2.24MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢UML 状态图
每天15篇文章
不仅获得谋生技能
更可以追随信仰
UML 状态图
作者:佚名 来源:网络
&&& 状态和状态机
&&& 状态、状态表示法及状态机
&&& 状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况
一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成
状态机是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图
如何阅读状态机图
阅读最简单的状态?
最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换
转换的五要素
源状态:即受转换影响的状态
目标状态:当转换完成后对象的状态
触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件
监护条件:布尔表达式,决定是否激活转换、
动作:转换激活时的操作
&&& 与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果[没水],则仍然处于off状态;如果[有水]则转为on状态,并执行“烧水”动作。
而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了
对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换
事件(参数)[监护条件]/动作
对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换
事件(参数)[监护条件]/动作
当进入某一状态时,执行相应活动
entry/活动
当离开某一状态时,执行相应活动
只有动作描述,进入和退出和操作方法写在了里面
各种转换的区别
进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示
内部转换:用来处理一些不离开该状态的事件
活动与延迟事件
活动:当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断
延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件
复合状态表示法
顺序复合状态图
监护条件为“应答音”,代表已连接。
并发复合状态图
三种评测方式
“一个圆圈中加上字母H”,是用来表示历史状态的。
它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物车或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。
将子状态机单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它
引用C状态机
如何绘制状态机图
绘制状态机图
绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节
寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有
-- 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态
-- 对订座而言显然有“部分预订”和“预订完”两种状态
-- 而当航班快要起飞时,显然要“预订关闭”
总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭
确定状态间转换
不直接转换
表格横向是转出
表格纵向是转入
不直接转换
退订(),使预订人=0
预订(),无空座
细化状态内的活动与转换
使用复合状态
状态机图应用说明
对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响
&&& 对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作
&&& 状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁
&&& 首先介绍了“状态”的概念和UML表示法,然后引入了状态机的概念
&&& 通过三个例子逐一说明简单状态机图、包含复杂转换的状态机图以及包含复合状态的状态机图的阅读方法
&&& 紧接着通过一个航班机票预订系统来阐述了状态图的绘制过程:确定状态,分析状态间的转换,细化活动与内部转化,通过复合状态来组织
&&& 简明地点出状态图的两大功能:对对象的生命周期建模以及对反应型对象的行为建模
面向对象的分析设计
基于UML的面向对象分析设计
UML + 嵌入式系统分析设计
关系数据库面向OOAD设计
业务建模与业务架构
使用用例进行需求管理
更多课程...&&&
UML+OOAD项目敏捷咨询
更多咨询...&&&
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
|&京ICP备号&京公海网安备号随笔 - 43&
评论 - 46&
&&&&&&&&&&&
--说明:本文部分图片来源于互联网
状态图主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。
1、状态图的组成
  主要用于描述一个对象在生命周期内的一个时间段。状态图中的状态包括状态名、内部活动、内部转换、入口和出口动作等部分。
  转换是指状态之间在某种事件或条件的驱动下的切换的过程。转换分为外部转换、内部转换、完成转换、复合转换等。如下图:
  &&&&&&&&&&&&&&&&&&&&&&&&
  判定用来表示一个事件依据不同的监护条件有不同的影响。在实际建模的过程中,如果遇到需要使用判定的情况,通常用监护条件来覆盖每种可能,使得一个事件的发生能保证触发一个转换。
&  同步是为了说明并发工作流的分支与汇合。状态图和活动图中都可能用到同步。
  事件可以分成几种,主要包括:信号事件、调用事件、改变事件和时间事件等。
  1. 信号事件(Signal Event)信号是作为两个对象之间的通信媒介的命名的实体,它以对象之间显式通信为目的。
  2. 调用事件(Call Event)调用事件指的是一个对象对调用(Call)的接收,这个对象利用状态的转换而不是利用固定的处理过程实现操作。
  3. 改变事件(Change Event)指的是依赖与特定属性值的布尔表达式所表示的条件满足时,事件发生改变。
  4. 时间事件(Time Event)时间事件(Time Event)表示时间表达式被满足的事件,它代表时间的流逝。
2、组成状态
  在一个复杂的状态中,可以细化为多个简单的子状态。这个复杂的状态就被称之为组成状态(Composite State)。
2.1 顺序组成状态
2.2 并发组成状态
  (订货的状态图)
3 实例:团购旅游活动状态图
阅读(...) 评论()&状态图目录:
一、状态图简介(Brief introduction)
二、状态图元素(State Diagram Elements)
1、状态(States)
2、转移(Transitions)
3、动作(State Actions)
4、自身转移(Self-Transitions)
5、组合状态(Compound States)
6、进入节点(Entry Point)
7、退出节点(Exit Point)
8、历史状态(History States)
9、并发区域(Concurrent Regions)
三、状态图案例分析(State Diagram Example Analysis)
Brief introduction)
状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。如下图例子,状态机描述了门对象的生存期间的状态序列,引起转移的事件,以及因状态转移而伴随的动作(Action).
状态有Opened、Closed、Locked。
事件有 Open、Close、Lock和Unlock。
1、并不是所有的事件都会引起状态的转移,比如当门是处于【Opened】状态,不能进行【Lock】事件。
2、转移(Transition)有警备条件(guard condition),比如只有doorWay-&isEmpty 条件满足时,才会响应事件。
二、状态图元素(State Diagram Elements)
&&& 指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
状态用圆角矩形表示
初态和终态(Initial and Final States)初态用实心圆点表示,终态用圆形内嵌圆点表示。
2Transitions
&&& 转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态(Target State)
&&&&& 事件标记(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。
&&&&& 警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。
&&&&& 结果(Effect):对象状态转移后的结果。
3State Actions
动作(Actions)是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的。
在上例中,对象状态转移后的结果显示在转移线上,如果目标状态有许多转移,而且每个转移有相同的结果,这时把转移后的结果(Effect)展示在目标状态中(Target State)更好一些,可以定义进入动作(Entry Action )和退出动作(Exit Action),如下图
4Self-Transitions
&&& 状态可以有返回自身状态的转移,称之为自身转移(Self-Transitions)
2S后,Poll input事件执行,转移到自己状态【Waiting】
5Compound States
&&& 嵌套在另外一个状态中的状态称之为子状态(sub-state),一个含有子状态的状态被称作组合状态(Compound States). 如下图,【Check PIN】是组合状态,【Enter PIN】是子状态。
也可用以下方式进行描述
如上图,状态机【Check PIN】的细节被分割到另外一个图中了。
6Entry Point
&&& 如下图所示,由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态【Ready】,则此节点称之为进入节点(Entry Point)
7Exit Point
8History States
&&& 历史状态是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。
在上图的状态图中,正常的状态顺序是:【Washing】- &【Rinsing】-&【Spinning】。
如果是从状态【Rinsing】突然停电(Power Cut)退出,,洗衣机停止工作进入状态【Power Off】,当电力恢复时直接进入状态【Running】。
9Concurrent Regions
&&& 状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。如下图刹车系统,同时进入前刹车【Applying Front Brakes】状态和后刹车【Applying Rear Brakes】状态。
三、状态图案例分析(State Diagram Example Analysis)
按照的建议(“出货中”是属于条件分支应该使用Decision),改成如下图也是很好的做法:
订单成立状态主要有:
订单取消(Guard:会员订单-缴款期限已过期)
备货中(Guard:已付款、订单成立、库存量足够)
出货中(Effect:扣除商品可接单量及移除购物车中的购买资料)
出货确认(Guard:实际配达日及发票代码、号码均不为空值)
出货完毕(Guard:实际配达日不为空)
订单成立(Guard:出货完毕,已付款、鉴赏期结束日期 小于等于 [系统日期])
1、购物车生成订单进入状态【订单成立】
2、系统检测订单已经付款并且库存量足够,则进入状态【备货中】
3、物流发货,进入状态【发货中】,状态转移为【发货中】后,需要做的操作有“扣除商品可接单量及移除购物车中的购买资料”
4、发货完毕后,状态分为【出货确认】和状态【出货失败】,如果状态是【出货失败】,则【结束】,如果状态为【出货确认】,则进入下一步。
5、配货人员填写实际配达日期,进入状态【出货完毕】。
6、如果”已付款、鉴赏期结束日期 小于等于 [系统日期]”,则【订单成立】。
四、总结(Summary)
阅读(...) 评论()UML 状态图
我的图书馆
UML 状态图
&& & ·状态和状态机& 状态、状态表示法及状态机& ·状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况 & ·一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成&
& ·状态机是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图& ·如何阅读状态机图& 阅读最简单的状态图& ·最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换&
& 转换的五要素&
& ·源状态:即受转换影响的状态& ·目标状态:当转换完成后对象的状态 & ·触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件& ·监护条件:布尔表达式,决定是否激活转换、& ·动作:转换激活时的操作& 读图小结& ·与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果[没水],则仍然处于off状态;如果[有水]则转为on状态,并执行“烧水”动作& ·而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了 &
& 复杂转换& &&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& 对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换&&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& 对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换&&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& 当进入某一状态时,执行相应活动&&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& 当离开某一状态时,执行相应活动&&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& && & 阅读带有复杂转换的状态图&
& 只有动作描述,进入和退出和操作方法写在了里面& 各种转换的区别& ·进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示& ·内部转换:用来处理一些不离开该状态的事件&
& 活动与延迟事件& ·活动:当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断& ·延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件& 复合状态表示法&
分解指示符& 顺序复合状态图&
& 监护条件为“应答音”,代表已连接。& 并发复合状态图&
& 三种评测方式& 历史& ·“一个圆圈中加上字母H”,是用来表示历史状态的。& 它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物车或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。 &
& 子状态机& ·将子状态机单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它 &
& 引用C状态机& && && ·如何绘制状态机图& 绘制状态机图& ·绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节& ·寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有&&& -- 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态&&&& -- 对订座而言显然有“部分预订”和“预订完”两种状态&&&& -- 而当航班快要起飞时,显然要“预订关闭”&&&& 总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭 & ·确定状态间转换& 表格横向是转出& 表格纵向是转入& &&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& &&&&& &&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&&&&& &&&&&&&& &&&&&& &&&& && & & & ·细化状态内的活动与转换&
& ·使用复合状态&
& ·状态机图应用说明& ·对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响& ·对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 & ·状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁& ·本章小结& & & & ·首先介绍了“状态”的概念和UML表示法,然后引入了状态机的概念 & ·通过三个例子逐一说明简单状态机图、包含复杂转换的状态机图以及包含复合状态的状态机图的阅读方法& ·,紧接着通过一个航班机票预订系统来阐述了状态图的绘制过程:确定状态,分析状态间的转换,细化活动与内部转化,通过复合状态来组织 & ·简明地点出状态图的两大功能:对对象的生命周期建模以及对反应型对象的行为建模 & && 内容出自:UML 面向对象设计PPT
TA的推荐TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 状态机 并发 的文章

 

随机推荐