UML--行为图(状态图、活动图)
一、状态机
(一)概念
状态图和活动图是状态机的两种表现形式。利用状态机可以精确地描述对象的行为。
从对象的出事状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新状态下又开始响应事件和执行动作,如此连续进行直到终结状态。
(二)组成
组成部分 | 内容 |
---|---|
状态 | 表示一个模型在其生存期内的状况,满足某些条件、执行某些操作或等待某些事件。一个状态的生存期是有限的一个时间段 |
转换 | 表示两个不同状态之间的联系,事件可以触发状态之间的转换 |
事件 | 在某个时间产生的,可以触发状态转换的部分,如信号、对象的创建和销毁、超时和条件的改变等 |
活动 | 是在状态机中进行的一个非原子的执行,由一系列动作组成 |
动作 | 是一个可执行的原子计算,它导致状态的变更或者返回一个值 |
二、状态图
(一)概念
状态图(State Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的,状态描绘了对象的动态生命周期。在对象的整个生命周期中,它的状态是会发生功能变化的,而状态机就是用来表示一个对象在它的生命周期中响应事件所发生的状态变化以及对事件的响应。
(二)组成
@机房收费系统登录-状态图
(三)状态图和活动图区别
- 状态图侧重从行为的结果来描述(状态)
- 活动图侧重从行为的动作来描述(活动)
三、活动图
(一)概念
- 活动图(Activity Diagram)是状态机的另一种表现形式。用于为一个对象在其生命周期中的行为建模。
- 活动图是一种描述系统动态行为的图,他用于描述活动的顺序,展现从一个活动到另一个活动的控制流。
(二)组成
1、动作状态
- 动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过转换转向另一个动作
- 动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部
2、活动状态
- 活动状态用于表达状态机中的一个非原子的运行
- 活动状态的表示图标也是平滑的圆角矩形,并可以在图标中给出入口动作和出口动作等信息
3、动作流
- 所有动作状态之间的转换流称之为动作流,相当于状态图中的转换。
- 与状态图的转换相同,活动图的转换也用带有箭头的直线表示,箭头的方向指向转入的方向
- 动作流可以是无条件的,也可以是有条件的。无条件的动作流即是活动图中的普通转换(完成转换、内部转换);有条件的动作流通过分支与合并来描述
4、分支与合并
- 条件行为用分支与合并表达;
- 在活动图中分支与合并用空心小菱形表示;
- 一个分支有一个入转换和两个带掉件的出转换,出转换的条件应当是互斥的,这样可以保证只有一条出转换能够被触发;
- 一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束;
5、分叉与汇合
- 分叉用于将动作流氛围两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的;
- 分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流;
- 汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才可以继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换;
- 分叉和汇合都使用加粗的水平线段表示;
6、泳道
- 泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。
- 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
- 每个活动只能明确地属于一个泳道。
- 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
- 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
7、对象流
对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。
对象流中的对象特点:
- 一个对象可以由多个动作操纵。
- 一个动作输出的对象可以作为另一个动作输入的对象。
- 在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
表示方式:
对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。如果箭头从对象指向动作状态,则表示该动作使用对象。
*对象流有两种表示方法,一种是将控制流一分为二,中间加上传送的对象或数据。
*另外一种表示方法是在两个活动节点的输入输出之间连线。
注:Action旁边的小正方形叫ActionPin,用来表示Action的输入/输出管脚。
(三)活动图与流程图区别
1、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理之间有严格的顺序和时间关系;而活动图描述的则是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
2、活动图能够表示并发活动的情形,此时活动图给了我们选择做事顺序的自由,而流程图对活动顺序的描述固定。
3、活动图是面向对象的,流程图是面向过程的。
(四)何时使用活动图?
1、分析用例。能直观清晰地分析用例,了解应当采取哪些动作以及这些动作之间的依赖关系。一张完整的活动图是所有用例的集成图。
2、理解牵涉多个用例的工作流。在难于区分不同用例而对整个系统的工作过程又十分清楚时,可以先构造活动图,然后用切片技术派生用例图。
3、处理多线程应用。采用“分层抽象,逐步细化”的原则描述多线程。
(四)何时不使用活动图?
1、显示对象间的合作。用交互图显示对象间的合作更简单直观。
2、显示对象在生命周期内的运转情况。活动图可以表示活动的激活条件,但不能表示一个对象的状态变换条件。因此,当要描述一个对象整个生命周期的运转情况时,应当使用状态图。
@机房收费系统活动图
感谢阅读,欢迎指正,请顶!
UML--行为图(状态图、活动图)相关推荐
- UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...
- OOSE-5-用例图/顺序图/状态图/活动图
文章目录 1 用例图 1.1 参与者 1.2 用例 1.3 用例描述 1.4 一个示例 2 顺序图 2.1 基本概念 2.2 组成部分 2.2.1 对象 2.2.2 生命线 2.2.3 激活 2.2. ...
- 推荐几个常用在线图工具(支持时序图、用例图、类图、活动图、组件图、状态图、对象图、部署图等。同时还支持非 UML 图的甘特图、架构图等)
推荐几个常用 '在线' 图工具(支持时序图.用例图.类图.活动图.组件图.状态图.对象图.部署图等.同时还支持非 UML 图的甘特图.架构图等) 软件项目开发过程中经常需要 画流程图.接口时序图.框架 ...
- UML 对象图、时序图、活动图 、状态图、协作图 、包图、组件图及部署图
UML 对象图.时序图.活动图 .状态图.协作图 .包图.组件图及部署图 目录 对象图 时序图 活动图 状态图 协作图 包图 组件图 部署图 对象图 对象图是类图的一个实例,用于显示系统执行时的一个可 ...
- UML图:活动图详细介绍
活动图简介 什么是活动图(Activity Diagram) 活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流,活动图在本质上是一种流程图: ...
- UML教程7:活动图
文章目录 大纲 七.活动图 7.1 活动图概要 7.2 活动图事物 7.3 活动图关系 7.4 活动图实例 1.一般的活动图 2.带泳道的活动图 本文转载自:https://www.cnblogs.c ...
- 行为建模(状态图-活动图)
行为建模--状态图 状态机(State Machine) 状态(State) 转移 状态机图的建模技术 用户 绘制用例机图 新增运动员报名 修改运动员报名 管理员 什么是活动图 活动图的用途 活动图的 ...
- 时序图怎么看?时序图、活动图、状态图、协作图的区别详解
时序图怎么看?时序图.活动图.状态图.协作图的区别详解 2019-12-16 10:05:32 燚智能物联网 简介 时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用 ...
- uml点餐系统活动图_UML活动图(Activity Diagram)
目录: 1.什么是活动图 2.活动图的构成 (1)起点 (2)重点 (3)活动名称 (4)判断条件 (5)同步条 (6)接收信号 (7)发送信号 (8)泳道 (9)转移 3.活动图实例--订单处理 4 ...
- UML统一建模语言第7章 状态机图和活动图课后习题
<UML2基础.建模与设计教程>杨弘平等编著,清华大学出版社,第7章 状态机图和活动图课后习题 1.下面哪个不是UML中的静态视图?(A) A.状态机图 B.用例图 ...
最新文章
- OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
- extern “C”的作用详解
- [PWA] Show Notifications when a Service Worker is Installed or Updated
- SAP Fiori Elements - fixed value help data request and how drop down list entry is rendered
- centos 生成 ssh-key github 连接 配置
- 防止电子邮件地址被搜索到的新方法
- MFC小笔记:上下控件
- 《DSP using MATLAB》示例Example 8.10
- oracle数据库sql查询,oracle数据库中常用经典SQL查询
- maven中引用JDK中的tools jar
- jvisualVm用法
- java验证码(采用struts2实现)
- MWC2010传递出什么信号?
- LOIC低轨道离子拒绝服务攻击
- edm邮件直投_EDM邮件直投专家V3.8.5官方版下载 - 下载吧
- MVC下压缩输入的HTML内容
- 百度地图高德地图谷歌地图腾讯地图商家数据采集
- 如何实现发票信息的自动录入与查验?
- 怎么在Word文档中更改所有数字和英文字母的字体
- backtrader FAQ:什么是一篮子订单Bracket Orders optMaster
热门文章
- ORM框架 之 Entity Framework
- Python链接Sql server
- JVM的内存管理 Ⅰ
- 《设计模式详解》行为型模式 - 模板方法模式
- 【恋上数据结构】串匹配算法(蛮力匹配、KMP【重点】、Boyer-Moore、Karp-Rabin、Sunday)
- Linux操作Oracle(9)——Oracle数据库导入导出方法详解 EXP IMP EXPDP IMPDP
- Python3 Time 模块详解 import time
- openCVPracticalExercise学习笔记02
- c语言 乘号 指针 避免,C语言指针篇(一)指针与指针变量
- 数据分析用这样的可视化报表,秒杀Excel,再也不怕被说low