UML--状态图的基本概念和作用

【UML】状态图和活动图 状态图 什么是状态图? 一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。 他不仅可以展现一个对象拥有的状态,还可以说明时间如何伴随着时间的推移来影响这些状态。 状态图的组成 1、状态 状态定义对象在其生命周期中的条件或准概况,在此期间,对象满足某些条件,执行某些操作或等待某些事件。 状态的表示 (1)、名字(name) 由一个字符串构成,用以识别... 阅读详情
AI摘要

本文深入解析了状态图的概念,包括状态机的基本构成、状态图的组成元素及其作用,阐述了状态、转换、事件、活动和动作的定义,以及状态图如何帮助程序员避免事件顺序错误和非法事件的进入。

状态图的含义

1)状态机
状态机是一种记录下给定时刻状态的设备,它可以根据各种不同的输入对每个给定的变化改变其状态或引发一个动作。比如:计算机操作系统中的进程调度和缓冲区调度都是一个状态机。

在UML中,状态机由对象的各个状态和连接这些状态的转换组成, 是展示状态与状态转换的图。

在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这个过程通常被称为对象的生命周期。一般来说,对象在其生命周期内是不可能完全孤立的,它必然会接受消息来改变自身,或者发送消息来影响其他对象。而状态机就是用于说明对象在其生命周期中响应时间所经历的状态序列以及其对这些事件的响应。在状态机的语境中,一个事件就是一次激发的产生,每个激发都可以触发一个状态转换。

状态机由状态、转换、事件、活动和动作五部分组成。

  • 状态:
    状态指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。一个状态的生命周期是一个有限的时间阶段。

  • 转换:
    转换指的是两个不同状态之间的一种关系,表明对象在第一个状态中执行一定的动作,并且在满足某个特定条件下由某个事件触发进入第二个状态。

  • 事件:
    事件指的是发生在时间和空间上的对状态机来讲有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态,如信号、对象额度创建和销毁等。

  • 活动:
    活动指的是状态机中进行的非原子操作。

  • 动作:
    动作指的是状态机中可以执行的哪些原子操作。所谓原子操作,指的是他们在运行的过程中不能被其他消息中断,必须一直执行下去,以至最终导致状态的变更或者返回一个值。

状态图

一个状态图(Statechart Diagram)本质上就是一个状态机,或者是状态机的特殊情况,它基本上是一个状态机中元素的一个投影,这也就意味着状态图包括状态机的所有特征。

状态图描述了一个实体基于事件反映的动态行为,显示了该实体是如何根据当前所处的状态对不同的事件作出反应的。

在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:

在这里插入图片描述

1)状态:
状态用于对实体在其生命周期中的各种状况进行建模,一个实体总是在有限的一段时间内保持一个状态。状态由一个带圆角的矩形表示,状态的描绘素应该包括名称、入口和出口动作、内部转换和嵌套状态。如下图,为一个简单状态:
在这里插入图片描述

  • 状态名
    指的是状态的名字,通常用字符串表示,其中每个单词的首字母大写。状态名可以包含任意数量的字母、数字和除了冒号“:”以外的一些字符,可以较长,甚至连续几行。但是一定要注意一个状态的名称在状态图所在的上下文中应该是唯一的,能够把该状态和其他状态区分开。

  • 入口和出口动作
    一个状态可以具有或者没有入口和出口动作。入口和出口动作分别指的是进入和退出一个状态时所执行的“边界”动作。

  • 内部转换
    指的是不导致状态改变的转换。内部转换中可以包含进入或者退出该状态应该执行的活动或动作。

  • 嵌套状态
    状态分为简单状态(Simple State)和组成状态(Composite State)。简单状态是指在语义上不可分解的、对象保持一定属性值的状况,简单状态不包含其他状态:而组成状态是指内部嵌套有子状态的状态,在组成状态的嵌套状态图部分包含的就是此状态的子状态。

2)转换:
在UML的状态建模机制中,转换用带箭头的直线表示,一端连接源状态,箭头指向目标状态。转换还可以标注与此转换相关的选项,如事件、监护条件和动作等,如下图所示。注意:如果转换上没有标注触发转换的事件,则表示此转换自动进行。

在这里插入图片描述

在状态转换机制中需要注意的五个概念如下:

  • 状态源(Source State):指的是激活转换之间对象处于的状态。如果一个一个状态处于源状态,当它接收到转换的触发事件或满足监护条件时,就激活了一个离开的转换。
  • 目标状态(Event State):指的是转换完成后对象所处的状态。
  • 事件触发器(Event Trigger):指的是引起源状态转换的事件。事件不是持续发生的,它只发生在时间的一点上,对象接收到事件,导致源状态发生变化,激活转换并使监护条件得到满足。
  • 监护条件(Guard Condition):是一个布尔表达式。当接收到触发事件要触发转换时,要对该表达式求值。如果表达式为真,则激活转换:如果表达式为假,则不激活转换,所接收到的触发事件丢失。
  • 动作(Action):是一个可执行的原子计算。

3)初始状态:
每个状态图都应该有一个初始状态,它代表状态图的起始位置。初始状态是一个伪状态(一个和普通状态有连接的假状态),对象不可能保持在初始状态,必须要有一个输出的无触发转换(没有事件触发器的转换)。通常初始状态上的转换是无监护条件的,并且初始状态只能作为转换的源,而不能作为转换的目标。在UML中,一个状态图只能有一个初始状态,用一个实心圆表示。

4)终止状态:
终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。对象可以保持在终止状态,但是终止状态不可能有任何形式的和触发转换,它的目的就是为了激发封装状态上的转换过程的结束。因此,终止状态只能作为转换的目标而不能作为转换的源,在UML中,终止状态用一个含有实心圆的空心圆表示。

5)判定:
活动图和状态图中都有需要根据给定条件进行判断,然后根据不同的判断结果进行不同转换的情况。实际就是工作流在此处按监护条件的取值发生分支,在UML中,判定用空心菱形表示。

状态图的作用

状态图的作用主要体现在以下几个方面。

  • 状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。
  • 清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。例如,对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员开发程序的过程中加以限制。
  • 状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。例如,飞机起飞前半小时不允许售票,在状态图中就可以清晰地看到,可以提醒程序员不要遗漏这些限制条件。
  • 状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。例如,当一个班的人数少于10人的时候需要和其他班合为一班上课,大于10人则单独上课,在状态图中就可以很明确地表达出来。

总之一个简洁完整的状态图可以帮助一个设计者不遗漏任何事情,最大程度地避免程序中错误的发生。

UML设计实例详解与应用 类图是面向对象程序设计中的一种静态结构图,用于描述系统中类的静态结构。它包含了类的属性、方法以及类之间的各种静态关系,如继承、依赖、关联和聚合等。在类图中,每个类通常用一个带有三个分格的矩形表示,分别列出类名、属性和操作(方法)。类名:位于矩形的上部分,通常是名词且首字母大写。属性:位于中间部分,可以包括属性名、类型以及初始值等。方法:位于底部部分,包括方法名、参数列表、返回类型和访问权限。序列图是UML中用来描述对象之间交互的动态视图,特别强调时间顺序。 阅读详情

相关推荐

云计算学习——5G网络技术

华为eNSP网络设备模拟器的基础安装及简单使用

qq_42520799的博客 1445

UML--状态图

一、 概述 状态图(State Diagram)用来描述一个特定对象在其生命周期中的各种状态以及状态之间的转换。这些对象可以是类、接口等等 二、作用 -状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序可以清晰看出事件的执行顺序。如果没有状态图就不可避免的要使用大量的文字来描述外部事件的合法顺序。 -清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况,例如对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员在开发程序的过程中加以限制。 -状态图清晰地描述了状

Stronger的博客 3万+

一文带你弄懂thermal governor IPA

当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。

yxw0609131056的博客 1245

状态图详解

状态图 一、状态图概要 ​ ★说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件 的响应。 ​ ★状态图用于揭示Actor、类、子系统和组件的复杂特性。为实时系统建模。 二、状态图的组成 ​ ★状态——对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将 满足某些条件、执行某些活动,或等待某些事件。 ​ ★转移——转移是由一种状态到另一种状态的迁移。这种转移由...

爱书不爱输的程序猿 1万+

ERA5 hourly data批量下载与cdo处理(一)

本篇文章主要介绍了ERA数据的批量下载

qq_40511689的博客 3872

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1265

状态图

何谓状态图1. 状态图的概念 状态图由状态、转换、事件、活动和动作5部分组成:   (1)状态指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。一个状态的生命周期是一个有限的时间阶段。   状态由一个带圆角的矩形表示,状态的描述应该包括:名称、入口和出口动作、内部转换和嵌套状态。   初始状态:每个状态图都应该有

mj_ww的博客 2万+

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

UML(统一建模语言)是通用的可视化标准建模语言。由构造块、公共机制、构架三部分组成。...

UML UML(统一建模语言)是通用的可视化标准建模语言。由构造块、公共机制、构架三部分组成。 1、构造块:包括基本的UML建模元素(类、接口、用例等)、关系(关联关系、依赖关系、泛化关系、实现关系)和图(9种图形,分为静态模型和动态模型) 2、公共机制:包括规格说明、修饰、公共分类、扩展机制 3、构架:系统的五个视图,逻辑视图、进程视图、实现视图、部署视图、用例视图 UML包...

1260

UWB 多传感器通信的纳秒无线位置和时钟同步方法

利用UWB高精度的特点,实现多节点下的无线时钟同步和定位。通过优化硬件架构,减少不确定延迟的影响,系统可以提供纳秒级时钟同步消息

DT程序员的博客 1330

【CloudCompare】Windows源码编译CloudCompare

本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的

yijiujiusan的博客 487

UML各种图总结-精华

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。 一,基础概念 如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构件图,部署图。动态...

cangqiong_xiamen的博客 274

基于STM32L4XX、HAL库的TESEO-LIV4FTR定位模块驱动程序设计

支持多星座系统:GPS、GLONASS、Galileo和北斗。支持NMEA 0183协议和ST专有协议。高灵敏度:-167dBm跟踪灵敏度。低功耗设计,适合物联网和便携设备。内置LNA和SAW滤波器。

zhusl6688的博客 237

UML九种图作用

UML统一建模语言:是面向对象的可视化建模语言。 UML中有3种构造块:事物、关系和图,事物是对模型中最具有代表性的成分的抽象,关系是把事物结合在一起,图聚集了相关的事物 UML中有九种图如下: 1、用例图        描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。 2、类图        类图是描述系统中的类,以及各个类之间的关系的静态

似水流年 1395

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【工具】-11UML各种图总结-精华

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。 想要知道UML更多内容的朋友,可以点击以下课程学习相关知识:   https://edu.youkuaiyun.com/course/play/24752/280547 一、基本概念 ...

做一个合格的渣渣 296

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UML概述

什么是UML   Unified Modeling Language统一建模语言是用来设计软件蓝图的可视化语言 支持面向对象系统的分析、设计、实现和交付等各个环节,可用于系统的理解、设计、浏览维护和信息控制 四种关系 关联 Association   描述了两个或多个类之间的结构性关系 依赖 Dependency   表示类与类之间的连接,表示一个类依赖于另外一个类的定义,依赖关...

荼白 465

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UML学习概述 2021.07.16

写在前面:最近在做技术设计,自己画的时序图,发现好多不对的地方,以及对业务的抽象能力也需要加强。同时在领导的建议下,感觉自己很有必要加强下这方面的训练,首先就从UML开始吧。 今天查了一些关于UML的文章,发现总是零零散散的,不太系统,所以就找了一本书《UML精粹:标准对象建模语言简明指南:第3版》,作者是个外国人 Fowler, M。本书是一本思想大于教条的好书,作者的目标就是:寻求UML最有用的部分,而且就告诉你这部分。闲言少叙,正式开始。 什么是UML? ...

拿来吧 你 的博客 219

软考系统架构设计师之UML统一建模语言

【摘要】UML(统一建模语言)是一种平台无关的标准化建模语言,包含构造块、规则和公共机制三大组成部分。核心内容包括:1)用例图描述系统功能和参与者关系;2)类图展示类、接口及其关系(依赖、关联、聚合、组合等);3)交互图(顺序图、通信图)强调消息传递;4)状态图描述对象状态变化;5)活动图展示操作流程;6)部署图表示系统物理架构。SysML作为系统工程扩展,新增需求图等建模元素。典型应用场景包括需求分析、系统设计和交互流程建模。

yangzijiangtou 917

uml

面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language™ ),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: 用例图 类图 对象图 ...

feiyeguohai1的博客 142

UML学习笔记之状态图

状态图的基本概念: 状态图是UML中对系统动态方面建模的图之一,它通过建立类对象的声明周期模型来描述对象随时间变化的动态行为。 状态图用于描述模型元素的实例(如对象或交互)的行为。它适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明时间如何随着时间的推移来影响这些状态。 状态图的定义: 先来了解一下状态机: 状态机是一种记录下给定时刻状态的设备,他可以根据各种不同的输入对每个给定

Java_feng的博客 4484

状态图概念笔记

具体: UML--状态图的基本概念和作用_状态图的作用-优快云博客。

2301_81882590的博客 262

浅谈UML学习笔记动态图之状态图和活动图

在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。 状态图本质上就是一个状态机或是状态机的特殊情况。由表示状态的节点和表示状态之间转换的带箭头的直线组成。

jgw2008的专栏 738

UML各种图总结

UML各种图总结 UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。 一、基本概念     如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对...

zeng25977的专栏 223
上一篇: MyBatis--动态sql之foreach标签
下一篇: MyBatis--一对一关联查询(级联查询)的三种方式
吴声子夜歌
博客等级 码龄9年 2688粉丝 2270原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值