2.7 UML状态图
问题的引出
顺序图是对对象的动态行为进行建模,有多个对象的参与、协作
问题:
当需要考察单个实体的动态行为时, 用UML如何来建模呢?
什么是单个实体:一个软件系统?一个子系统?一个模块、一个构件?
选择单个对象
软件系统中核心的、需要进行详细分析的单个实体
从不同的视点(ViewPoint)可有不同的选择
类的对象、构件、整个系统
原则:从选定的角度,把要考察的实体看作一个整体
UML提供了建模机制
状态图, 单个对象的动态行为
状态图的概念
状态(state):
是对象的生命期中的一个条件或状况
在此期间,对象可以响应事件、执行某活动等
例如,灯,有几个状态?
例如类,color,
状态机(state machine) :
是一种行为,
说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事 件的响应
状态图(state diagram, State Chart ):
状态机可以用状态图来可视化。
状态图显示了一个状态机,它强调从状态到状态的控制流
状态有以下几个部分组成:
1)名称(name)
每个单词首字母大写
2)进入/退出动作(entry/exit action)
3)内部迁移(internal transition)
Transitions that are handled without causing a change in state
4)子状态 (substate)
5)延迟事件 (deferred event)
事件 Event
是对一个在时间和空间上占有一定位置的有意义的事情的描述
在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移
UML 对4种事件进行建模
参量变化 change event
布尔表达式值变化、定时器、溢出:是内部事件
信号 signal (异步)
调用 call (同步)
时间事件 time event
时间事件 是表示一段时间的推移
用关键字after 后面跟着时间表达式
用关键字at 表示某个绝对时间点上发生的时间事件
变化事件 表示状态的一个变化或某些条件得到满足的事件
用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件
迁移Transition
在状态A,发生事件并满足一定条件,转到状态B
一个迁移由5部分组成
源状态 source state
事件触发器 event trigger (触发事件名称)
触发条件 guard condition
效应(effect) (或称,迁移动作)
可执行的动作
目标状态
特殊的迁移
自身迁移 self transition
从状态A迁移到状态A
内部迁移 internal transition
在状态A内部 行为
状态图的建模元素
状态
一般状态:圆角矩形
初始状态:实心圆
结束状态:“牛眼” (bull’s eye)
事件
触发事件名[触发条件]/迁移动作
这三个部分都是可以省略的,但至少有一部分
事件依附于表示迁移的箭线
迁移
叉形箭头实线
从初始状态指向目标状态
状态图建模
建模步骤
1、选择对象及视点
简单类的实例
构件
整个系统 或子系统
用例
2、定义 对象在生命期内可能存在的状态
状态要有意义
状态持续一定的时间
3、在每种状态下可以接受的事件及将要转去的新的状态
状态图建模注意事项:
不允许孤立的状态存在
不允许只进不出的状态迁移 (“黑洞”)
不允许只出不进的状态迁移 (“奇迹”)
不允许没有事件发生的迁移
或者“迁移” 没有指明具体的事件
比较状态图与交互图、活动图
交互
对共同工作的对象群体的行为建模
动态行为
状态机
对单个对象的行为建模
有时,可以对单个“完整系统”的行为建模
说明对象在它的生命期中响应事件所 经历的状态序列以及对那些事件的响应
动态行为建模
活动图
强调从活动到活动的控制流,多个业务角色
状态图是强调 对象潜在的状态和这些状态之间的迁移
UML工具小结
建模、模型
统一建模语言 UML,Unified Modeling Language
工具包
用例模型 UseCase Model
活动图 Activity Diagram
类图 Class Diagram
顺序图 Sequence Diagram
通信图 Communication Diagram
状态图 State Diagram
2.7 UML状态图的更多相关文章
- UML状态图和活动图
UML状态图和活动图 统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对 ...
- 时序扩展的UML状态图的测试用例生成研究
一.基本信息 标题:时序扩展的UML状态图的测试用例生成研究 时间:2014 出版源:西南大学 领域分类:时序扩展:UML状态图:测试用例:需求规格说明:模型 二.研究背景 问题定义:时序扩展的UML ...
- UML状态图(转载)
概述: 图表本身的名称,阐明该图的目的和其他细节.它描述了在一个系统中的一个组成部分不同的状态.状态是特定的一个系统的组件/对象. 状态图描述了一个状态机.我们阐明的状态机可以被定义为一台机器,它定义 ...
- Python设计模式 - UML - 状态图(State Machine Diagram)
简介 状态图主要用于描述对象在其生命周期中各种状态.状态之间的转换过程.触发状态转换的各种事件(条件)及执行的动作. 状态图构建步骤 - 找出适合用状态图描述的类.确定类中需要做状态图的重要对象 - ...
- UML状态图
状态图(Statechart digram)是系统分析的一种经常使用工具,系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,由于系统中对象的状态变化最易被发现和理 ...
- UML——状态图
状态图(Statechart Diagram),主要用于描述对象在其生命周期中基于事件的动态行为,显示了对象如何根据当前的状态对不同的事件(Events)作出反应(Action).一般我们用状态机来对 ...
- 【UML】状态图Statechart diagram(转)
前言 UML由动态图和静态图组成,状态图就是属于动态图中较为重要的一张图. 定义 用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移. 目的 ...
- UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型 ...
- UML(统一建模语言)
最近看了一个UML图,所以特意来了解一下UML 统一建模语言 锁定 同义词 UML(统一建模语言)一般指统一建模语言 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . Unified Mo ...
随机推荐
- X-Pack for the Elastic Stack [6.2] » Securing the Elastic Stack »Setting Up User Authentication
https://www.elastic.co/guide/en/x-pack/current/setting-up-authentication.html Active Directory User ...
- SpringBoot JDBC 源码分析之——NamedParameterJdbcTemplate 查询数据返回bean对象
1,NamedParameterJdbcTemplate 查询列表 /***测试***/ public void queyBeanTest(){ String s = "select * f ...
- Hadoop技术内幕1——源代码环境准备
Hadoop核心 1.HDFS:高容错性.高伸缩性……,允许用户将Hadoop部署在廉价的硬件上,构建分布式系统 2.MapReduce:分布式计算框架,允许用户在不了解分布式系统底层细节的情况下,开 ...
- 用spring tool suite插件创建spring boot项目时报An internal error occurred during: "Building UI model". com/google/common/
本文为博主原创,未经允许不得转载 在用spring tool suite创建spring boot项目时,报一下异常: 查阅很多资料之后发现是因为装的spring tool suite的版本与ecli ...
- mybatis批量更新数据参考
https://blog.csdn.net/xyjawq1/article/details/74129316
- 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
小蚂蚁说: 长期以来,车险定损(通过现场拍摄定损照片确定车辆损失,以作为保险公司理赔的依据)是车险理赔中最为重要的操作环节.以往传统保险公司的车险处理流程,一般为报案.现场查勘.提交理赔材料.审核.最 ...
- hdu 3829 Cat VS Dog 二分图匹配 最大点独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- 关于JAVA中包装类的是什么类型传递这个问题的笔记
背景知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值.如果在函数中改变了副本的值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个参数的引用,这 ...
- C++.运行时类型判断_测试代码
ZC:C++ 编程思想——运行时类型识别 - 浅墨浓香 - 博客园.html(https://www.cnblogs.com/5iedu/articles/5585895.html) -------- ...
- [转][linux]简单的linux下的tcp/udp
转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...