状态图

状态图是做什么的?

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

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

                                

         

状态图的的组成

①、状态(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”的关系,当进入考场后,老师检查证件,学生对号入座,他们同时在做一件事情

                                                         


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

状态图

活动图

总结

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐