4

我读了很多关于它的内容,但仍然不确定状态执行的顺序(在复合状态中)以及深度和浅层历史究竟是如何工作的?有人可以帮助我吗?我有一个例子,我不知道如何解决,这里是: 在此处输入图像描述

我将不胜感激任何帮助!

4

2 回答 2

4

问题一:

...不确定..深刻和浅薄的历史究竟是如何运作的?

答案1:

请注意:

浅历史由一个包含“H”的小圆圈表示。它适用于直接包围它的州区域。

浅历史伪状态表示其包含状态的最新活动子状态(但不是该子状态的子状态)。...

来源:http ://www.uml-diagrams.org/state-machine-diagrams.html#shallow-history-pseudostate

问题2:

...我不确定我是否应该总是从初始点开始,这是所有复合材料之外的?

答案 2:

是的。您从根状态(在本例中为 A)的初始伪状态开始。

例子:

对于给定的状态图和事件链,您将获得以下结果(使用 Rhapsody 模拟):

默认转换为 A 后

  • x 的值(过渡到 A):x = 3
  • x 的值(条目 A):x = x * 2 = 6
  • 新状态:A

默认转换到 A::B 后

  • 新状态:A::B
  • x的值:x = 6

在此处输入图像描述

e1之后

  • x 的值(条目 A::C):x = x + 1 = 7
  • 新状态:A::C

默认转换为 A::C::G 后

  • x 的值(条目 A::C::G):x = x + 1 = 8
  • 新状态:A::C::G

在此处输入图像描述

e3 之后

  • x 的值(退出 A::C::G):x = x - 2 = 6
  • x 的值(条目 A::C::H):x = x / 2 = 3
  • 新状态:A::C::H

在此处输入图像描述

e4之后

  • x 的值(条目 A::C::G):x = x + 1 = 4
  • 新状态:A::C::G

在此处输入图像描述

e6之后

  • x 的值(退出 A::C::G):x = x - 2 = 2
  • x 的值(退出 A::C):x = x - 1 = 1
  • x 的值(出​​口 A):x = x - 1 = 0
  • x 的值(过渡到 Y):x = (x * 4) + 2 = 2
  • 新状态:Y

在此处输入图像描述

e7之后

  • x 的值(条目 A::C 见上面的注释):x = x + 1 = 3
  • x 的值(条目 A::C::G):x = x + 1 = 4
  • 新状态:A::C::G

在此处输入图像描述

e4 被丢弃

在此处输入图像描述

于 2016-01-12T10:23:45.630 回答
0

e7之后

x 的值(退出 Y):x = x / 2 = 1

x 的值(条目 A):x = x * 2 = 2

x 的值(条目 A::C 见上面的注释):x = x + 1 = 3

x 的值(条目 A::C::G):x = x + 1 = 4

新状态:A::C::G

于 2016-01-18T08:29:03.963 回答