UML_状态图

•状态和状态机

状态、状态表示法及状态机

状态 是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况

•一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件 等五个部分组成

状态机 是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图

•如何阅读状态机图

阅读最简单的状态图

•最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态 (初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换

转换的五要素

•源状态:即受转换影响的状态

•目标状态:当转换完成后对象的状态

•触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件

•监护条件:布尔表达式,决定是否激活转换、

•动作:转换激活时的操作

读图小结

•与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果[没水],则仍然处于off状态;如果[有水]则转为on状态,并执行“烧水”动作

•而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了

复杂转换


转换类型


描述


语法


外部转换


对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换


事件 ( 参数 )[ 监护条件 ]/ 动作


内部转换


对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换


事件 ( 参数 )[ 监护条件 ]/ 动作


进入转换


当进入某一状态时,执行相应活动


entry/ 活动


退出转换


当离开某一状态时,执行相应活动


exit/ 活动

阅读带有复杂转换的状态图

只有动作描述,进入和退出和操作方法写在了里面

各种转换的区别

进入和退出转换 :当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换 来表示

内部转换 :用来处理一些不离开该状态的事件

活动与延迟事件

•活动:当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断

• 延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正 在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件

复合状态表示法

分解指示符

顺序复合状态图

监护条件为“应答音 ”,代表已连接。

并发复合状态图

三种评测方式

历史

•“一个圆圈中加上字母H”,是用来表示历史状态的。

它的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物车或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。

子状态机

•将子状态机单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它

引用C状态机

•如何绘制状态机图

绘制状态机图

•绘制状态机图的理想步骤是:寻找 主要的状态,确定状态之间的转换细化 状态内的活动与转换,用复合状态来展开细节

•寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有 -- 在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态 -- 对订座而言显然有“部分预订”和“预订完”两种状态 -- 而当航班快要起飞时,显然要“预订关闭” 总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭

•确定状态间转换

表格横向是转出

表格纵向是转入


源目标


无预订


部分预订


预订完


预订关闭


无预订

 
预订 ()


不直接转换


关闭 ()


部分预订


退订 (), 使预订人 =0

 
预订 (), 无空座


关闭 ()


预订完


不直接转换


退订 ()

 
关闭 ()


预订关闭


无转换


无转换


无转换

 

•细化状态内的活动与转换

•使用复合状态

•状态机图应用说明

•对对象生命周期建模 :主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响

•对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作

•状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁

时间: 2024-11-07 18:14:21

UML_状态图的相关文章

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

redis运行状态图形化监控工具 — RedisLive

在Centos中部署redis运行状态图形化监控工具 — RedisLive 写在前面 前两天看到张善友老师的一篇文章<先定个小目标, 使用C# 开发的千万级应用>,里面给出了一张腾讯OA基础服务中redis运行情况的一张监控图,然后想到自己的项目中前不久也上了redis缓存,所以也想找个监控工具.搜索一番,决定使用RedisLive来做监控. 和RedisLive有关的信息 RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基

UML状态图和活动图

UML状态图和活动图 统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效. UML定义了5类,10种模型图: 1.用例图:从用户角度描述系统功能,并指各功能的操作者.2.静态图:包括类图,包图,对象图.   类图:描述系统中

TCP/IP状态图的TIME_WAIT作用

在TCP/IP状态图中,有很多种的状态,它们之间有的是可以互相转换的,也就是说,从一种状态转到另一种状态,但是这种转换不是随便发送的,是要满足一定的条件.TCP/IP状态图看起来更像是自动机.下图即为TCP/IP状态. 由上图可以看出,一共有11种不同的状态.这11种状态描述如下: CLOSED:关闭状态,没有连接活动或正在进行: LISTEN:监听状态,服务器正在等待连接进入: SYN_RCVD:收到一个连接请求,尚未确认: SYN_SENT:已经发出连接请求,等待确认: ESTABLISHE

umlの状态图

前面讲述了活动图,那就从活动图的基础上来分析状态图.我们知道活动图侧重从行为的动作来描述活动,而与之相对状态图侧重从行为的结果来描述状态.在实际项目中,活动图并不是必须的.一般在以下情况需要使用活动图: a.描述一个并行的过程或者行为 b.描述一个算法 c.描述一个跨越多个用例的活动 而状态图描述了一个具体对象的可能状态以及它们之间的转换.联系了这么多以前的内容,那么到底什么是状态图呢.状态图用来描述一个特定对象的所有可能的状态以及由于各种事件的发生而引起的状态之间的转移.为了更好的区分状态.状

UML-状态图,顺序图,活动图

一.编写用例文档 1.用例的内容:   用例编号   用例名  执行者  前置条件  后置条件  基本路径  扩展路径  字段列表  业务规则 非功能需求  设计约束 前置条件必须是系统能够检测到的   必须是系统在用例开始前就能检测到的. 基本路径注意点:  1. 不要有太多专业术语 2.使用主动语句    3.句子以系统或者执行者作为主语 4.每一句要向目标迈进(比如:用户输入个人信息,个人信息参见字段列表) 5.分支和循环   (使用扩展路径)  6.不要涉及界面细节 检查用例模型    

TCP握手及状态图

为什么需要“三次握手”? 为了解决“网络中存在延迟的重复分组”的问题,即为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误. 例:“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server.本来这是一个早已失效的报文段.但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求.于是就向client发出确认报文段,同意建立连

UML视图(四)状态图

以下是一个图书馆管理系统的状态图,非常典型,涵盖状态图的全部元素的使用,由于状态图相对照较简单,直接从看图就能非常好地掌握.假设想对状态图的元素严谨的概念进行了解,在图下方,有仔细的叙述. 看了上面的状态图,相信已经对状态图有了比較宏观的把握,面对接下来的理论知识,你会感觉内容非常少,这个感觉是非常自然的,由于内容确实少.时刻记得UML的重要思想如UML的定义"统一建模语言",重在"统一". 状态图显示一个状态机,通常指用于描写叙述单个对象的行为,主要用于描写叙述对

TCP 状态图网摘

from unkonwn 1.CLOSED:起始点,在超时或者连接关闭时候进入此状态. 2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态.此称为应用程序被动打开(等待客户端来连接). 3.SYN_SENT:客户端发起连接,发送SYN给服务器端.如果服务器端不能连接,则直接进入CLOSED状态. 4.SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态.同时服务