状态图主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。

1、状态图的组成

1.1 状态

  主要用于描述一个对象在生命周期内的一个时间段。状态图中的状态包括状态名、内部活动、内部转换、入口和出口动作等部分。

1.2 转换

  转换是指状态之间在某种事件或条件的驱动下的切换的过程。转换分为外部转换、内部转换、完成转换、复合转换等。如下图:

  

1.3 判定

  判定用来表示一个事件依据不同的监护条件有不同的影响。在实际建模的过程中,如果遇到需要使用判定的情况,通常用监护条件来覆盖每种可能,使得一个事件的发生能保证触发一个转换。

  

1.4 同步

  同步是为了说明并发工作流的分支与汇合。状态图和活动图中都可能用到同步。

  

1.5 事件

  事件可以分成几种,主要包括:信号事件、调用事件、改变事件和时间事件等。

  1. 信号事件(Signal Event)信号是作为两个对象之间的通信媒介的命名的实体,它以对象之间显式通信为目的。

  2. 调用事件(Call Event)调用事件指的是一个对象对调用(Call)的接收,这个对象利用状态的转换而不是利用固定的处理过程实现操作。

  3. 改变事件(Change Event)指的是依赖与特定属性值的布尔表达式所表示的条件满足时,事件发生改变。

  4. 时间事件(Time Event)时间事件(Time Event)表示时间表达式被满足的事件,它代表时间的流逝。

2、组成状态

  在一个复杂的状态中,可以细化为多个简单的子状态。这个复杂的状态就被称之为组成状态(Composite State)。

2.1 顺序组成状态

  

2.2 并发组成状态

  (订货的状态图)

  

3 实例:团购旅游活动状态图

    

最新文章

  1. UP Board 妄图启动ubilinux失败
  2. iOS面试用到的知识点和技术点--第二章
  3. 轻量、强大的代码编辑器控件-WinForm完美版
  4. 【C#学习笔记】网页弹出提示框
  5. BFC——块级格式上下文
  6. Ubuntu Hash Sum mismatch 解决方法
  7. 10分钟精通SharePoint - SharePoint拓扑结构
  8. spring的 @Scheduled的cron表达式
  9. __x__(29)0908第五天__高度塌陷 问题
  10. docker 1 为什么要使用docker
  11. Nlog日志组件简介
  12. linux 制作U盘启动,和定制系统
  13. 卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系
  14. iOS:viewController 和 view 的生命周期、不错的代码设计风格
  15. [转]Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
  16. php中直接执行mysqli_init()也是报Property access is not allowed yet的错误。
  17. [.NET] GC垃圾回收机制
  18. Navicat连接阿里云(centos7.3)的MySQL数据库遇到的问题及解决方法
  19. 为什么是static?
  20. BZOJ1492:[NOI2007]货币兑换——题解

热门文章

  1. Flutter控制某个TextField获取焦点及失去焦点
  2. Ajax提交之后,Method从POST变成GET
  3. PHP学习之图像处理-水印类
  4. Visual Studio Team Systems
  5. Android自定义控件之基本图形绘制
  6. python 学生表
  7. Mask_RCNN
  8. Delphi 中自定义异常及异常处理的一般方法
  9. nginx反向代理本地 单台wed -使用ip+端口代理
  10. Generate Maximum revenue by selling K tickets from N windows