UML——行为图(活动图、状态图)_uml 状态图 活动-程序员宅基地

技术标签: uml  软考-系统架构师  

 

状态图是做什么的?

描述了一个具体对象的可能状态以及它们之间的转换。展现一个对象拥有的状态,还可以说明时间(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态。

先上一张导图看看状态图都有哪些内容吧!

                                

         

状态图的的组成

①、状态(State):表示对象在其生命周期中的某个特定状态,如"待处理"、"进行中"、"已完成"等

  • 初始状态(Initial State):表示对象的初始状态,通常用一个空心圆圈表示。
  • 终止状态(Final State):表示对象的最终状态,通常用一个空心圆圈内有一个实心圆圈表示。

②、状态转换(Transition):表示对象从一个状态转换到另一个状态的过程,通常用箭头表示。箭头上可以标注触发状态转换的事件或条件。

③、条件(Guard Condition):表示触发状态转换的条件,通常用方括号内的逻辑表达式表示。

④、动作(Action):表示状态转换发生时执行的动作或操作,通常用在状态转换的箭头上。

事件是触发状态转换的外部或内部事件,条件是触发状态转换的条件,动作是状态转换发生时执行的操作


活动图

什么是活动图

描述一个过程或操作的工作步骤,描述系统的动态行为。与流程图很类似,但他们也有不同点。

                           

活动图和流程图的不同点:

  1. 流程图着重描述处理过程,主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系

         活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程

  1. 活动图能够表示并发活动的情形,而流程图不能
  2. 活动图是面向对象的,而流程图是面向过程的

比方说现在要登录机房收费系统:步骤分为输入用户名和密码,系统判断输入的密码是否正确,正确的话走哪一个活动,不正确的话又走哪一个活动。而活动图是把这些步骤用图形的方式表现出来了

活动图的作用有哪些?

  • 描述一个操作的执行过程中所完成的工作或者动作
  • 描述对象内部的工作
  • 显示如何执行一组相关的动作,以及这些动作如何影响周围对象
  • 描述用例的执行
  • 处理多线程应用

一般什么情况下使用活动图?

  1. 描述一个并行的过程或者行为
  2. 描述一个算法
  3. 描述一个跨越多个用例的活动

活动图包含了哪些图标?

活动(ActionState)

动作的执行

fj4urHWJDgQoGXcG3Q2xycnJ2djadLZLLRZEgwkorDIuqh5cKSumlglJ6qaCUXhqYTP8AgfzkPTD83JcAAAAASUVORK5CYII=

起点(InitialState)

活动图的开始

Hxg3Xz8w9PfDA+N+H+mJyfQHkN1SAcohrKkAAAAASUVORK5CYII=

终点(FinalState)

活动图的终点

PYvSAAAAABJRU5ErkJggg==

对象流(ObjectFlowState)

活动之间的交换的信息

nFPEDsQOxA7EDsQOxA7EDsQOxA5Uy339+n4Zx3Hfd1kX0zTNsiy375cHcU4RO1AdHUp9AS88usauldAHAAAAAElFTkSuQmCC

发送信号(SignalSending)

活动过程中发送时间,出发另一活动流程

RwDzBbA4BuaRlJQUdnZ2qCgY0MkRP378mDlz5pcvX3Jzc4HJEyoKA3RyxPz588+cORMTE6OmpgYVQgLojvjz5w8w+VAX7Nq1a+HChTo6Os7OzshJAQ7Qa1FjY2NeXl6ICLXAjRs3gPViR0eHgoICVAgVDIpGzWhrGwZGHQEBDAwA1UVCAe9MsI0AAAAASUVORK5CYII=

接受信号(SignalReceipt)

活动过程中接收事件,接收到信号的活动流程开始执行

5EtmcGAoF4PP7tm9js5AZIe5yRjxMb7nPiuC+YLzDxVb61wQAAAABJRU5ErkJggg==

泳道(SWimLane)

活动的负责者

lmyiKonEcn7yJHETbg4cqsXjeBf++U1ryni0QAAAAAElFTkSuQmCC


活动的关系表示

迁移(transition)

活动的完成与新活动的开始

SduiKhO9xMziAaEiItMugAAAABJRU5ErkJggg==

分支(junction point)

根据条件,控制执行方向

xwc8PH4HuEjgm5gINYIAAAAASUVORK5CYII=

分叉(fork)

以下的活动可并发执行

EdEHzMvhy0PHFgXZYQsCwsHoGXgxMvJuAcy5ShFTqD0ZvYWPlUm7KAAAAAElFTkSuQmCC

结合(join)

以上的并发活动再此结合

K79arUZXN5CU1xwUjIyjqIf3JyGkldvtRlMwuckvPO2RJuvRkCqLYznorl3eK4my4D4Nl0+owa4L+x8PETJeUncRRtpuQdNjWRgmXT5Emew3JP8+iCAoK4IAAAAASUVORK5CYII=

我的理解:

  • 活动图中的“分叉与合并”很像我们平常生活中的两条路径,它描述了软件对象在不同的判断结果下所执行的不同动作。一条是“Yes”的路,一条是“No”的路,就看你的操作是要执行哪条路径,但最后终是会走到终点的

                                    

  •  “分叉和汇合”像我们学数据库中“and”的关系,当进入考场后,老师检查证件,学生对号入座,他们同时在做一件事情

                                                         


系统中“用户登录”的应用

状态图

活动图

总结

状态图和活动图是两种不同的图形化表示方法,用于描述系统或对象的行为。状态图关注对象的状态变化和状态之间的转换,而活动图关注对象的行为和活动之间的流程。它们在应用场景和表示形式上有所不同,但都能帮助开发人员可视化和理解系统或对象的行为

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhousenshan/article/details/133844555

智能推荐

面试官:啥是集群策略啊?-程序员宅基地

文章浏览阅读290次。之前有读者问了 Dubbo Cluster 集群的一些问题。那么本文聊一聊Dubbo 的 Cluster 集群和 Failover Cluster (失败自动切换)策略。如果没有特别说明..._sticky invoker

Mysql8.0的安装_安装mysql-8.0.20-linux-glibc-程序员宅基地

文章浏览阅读498次。generated for root@localhost: SQqy8#7#5PUK 临时密码。vi /etc/my.cnf 修改配置文件。3、创新用户与用户组以及修改权限。_安装mysql-8.0.20-linux-glibc

python类之间变量互相调用_python两个类之间变量和函数的调用-程序员宅基地

文章浏览阅读1.1k次。1.class_a()class_b()2.class_b使用class_a中的变量和函数3.变量class_a中:class_a.num=...函数class_b中:先实例化class_a(如果在class_a中有初始化,则此时还会初始化一次,为避免二次初始化可以把class_a中的初始化不写为初始化函数), 然后调用函数在调用函数中再调用的函数里用到的class_a的变量,也必须在class..._python 类a 调用类b的函数

TypeScript 从入门到进阶之基础篇(八)函数篇-程序员宅基地

文章浏览阅读983次,点赞24次,收藏21次。函数是一种可重复使用的代码块,是构建应用的一块基石。在本章我们将学习TypeScript 中如何定义函数。在JavaScript中,函数可以被定义、调用和传递给其他函数作为参数。函数可以用来组织代码,使其更加模块化和可读性,同时也提供了代码的重用性和灵活性。在TypeScript 使用函数的方法是直接定义函数所需参数的类型,也是最基本的用法//箭头函数写法需要注意的是 但我们的函数没有返回值时 ,就不能定义这个函数的返回值类型 (void除外)//正确写法//正确写法2。

u-center软件配置Ublox NEO-M8T详细教程-程序员宅基地

文章浏览阅读1.4w次,点赞13次,收藏80次。1.使用u-center软件时请先检查驱动是否安装完成(如CH340/PL2303),后连接数据线等。2.打开u-center软件,在左上角选择正确的串口及波特率,一般NE0-M8默认波特率为115200.3.配置M8模块的功能,如选择北斗/GPS/GLONASS等功能左上角点message view 或者config view 或F9/CTRL+F9,进入配置页面。如图标红区域4.按F9进入CFG界面,选择UBX选项卡,有时候UBX没有弹出菜单,显示为灰色,这时候可以等十几秒在单击灰色的UB_u-center

oracle的索引不可用,Oracle异常处理——ORA-01502:索引或这类索引的分区处于不可用状态...-程序员宅基地

文章浏览阅读722次。Oracle异常处理——ORA-01502:索引或这类索引的分区处于不可用状态参考自:https://www.cnblogs.com/lijiaman/p/9277149.html1、原因分析经过查证,发现是在删除分区的时候,导致分区表上的唯一性全局索引为不可用状态,导致新的数据无法正常插入,从而引发了该错误。是不是索引不可用会导致DML操作失败呢?经过验证,发现以下特点:(1)对于非唯一性索引,..._errorora-01502: 索引 'data168.pk_yunqu_call_sdr' 或这类索引的分区处于不可用

随便推点

易语言多线程封装线程启动返回句柄_易语言取线程句柄-程序员宅基地

文章浏览阅读6.7k次。封装多线程模块-线程启动• 1、CreateThread• 2、线程_启动_句柄()• 3、线程_启动_逻辑()• 4、线程句柄• 5、线程ID• 6、易语言SHCreateThread511遇见易语言多线程大漠多线程SHCreateThread function | Microsoft Docs https://docs.microsoft.com/zh-cn/windows/desktop/api/shlwapi/nf-shlwapi-shcreatethread.版本 _易语言取线程句柄

禁忌搜索算法求解TSP旅行商问题C++(2020.11.19)-程序员宅基地

文章浏览阅读3.5k次,点赞6次,收藏27次。TS算法求解TSP问题C++1、禁忌搜索算法1.1 基本思想及主要特点1.2 基本概念1.3 算法流程22.1 主函数1、禁忌搜索算法 禁忌搜索算法(tabu search/taboo search,TS)是一种模拟人类记忆功能特性的全局性搜索算法。它最初是由Glover提出的,主要用于解决组合优化问题,与局部优化法相比陷入局部极小值的概率更小,比遗传算法、模拟退火算法更易于利用问题的特殊信息。因此,它具有很强

突破编程_C++_C++11新特性(智能指针shared_ptr与weak_ptr)-程序员宅基地

文章浏览阅读942次,点赞15次,收藏22次。C++11 新特性:智能指针 shared_ptr 与 weak_ptr

2021.08.04 -- 2021.08.06 第三章 栈和队列_csdn 嘻嘻子-程序员宅基地

文章浏览阅读157次。栈和队列一、栈1.栈的基本概念2.栈的顺序存储结构3.栈的链式存储结构4.栈的应用二、队列1.队列的基本概念2.队列的顺序存储结构3.队列的链式存储结构4.队列的应用三、特殊矩阵的压缩存储四、其他1.迷宫的"穷举求解":五、总结我有想过要不要把栈和队列和在一起讲,因为他们之间太多相似的地方了,但是我还是决定分开来写,这样复习梳理起来会更加的细致,如有不对的地方也请大家指出,多多包涵。一、栈1.栈的基本概念栈(stack)是只能在尾部添加数据或者删除数据的线性表。表尾,表顶:top,表头,栈底:b_csdn 嘻嘻子

CentOS7.6Arm Qt开发环境(GCC+Qt5+QtCreator+JDK8+MySQL8+CMake+ProtoBuf+Python+SVN)_centos 7.6 arm-程序员宅基地

文章浏览阅读2.5k次。基于运行与qemu上的CentOS 7.6 Arm虚拟机,在线安装配置Qt5.13开发环境(含Qt Creator),并进行所需的GCC环境配置、MySQL8环境配置,为开发环境准备CMake、Protobuf、Python、SVN客户端配置,并额外安装JDK8。_centos 7.6 arm

matlab字母随机排列,matlab – 从具有特定概率的字母表生成随机字符串(randsrc问题)...-程序员宅基地

文章浏览阅读1k次。所以我熟悉randsrc并且我可以使用给定概率的整数随机字母表创建.所以我想说我有这个字母表alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};prob=[0.08167 0.01492 0.02782 0.04254 0..._字母随机排序成个单词的的概率高数

推荐文章

热门文章

相关标签