Uml 状态图中的转换顺序是什么?如何使用历史伪状态?

Uml 状态图中的转换顺序是什么?如何使用历史伪状态?,uml,state,diagrams,Uml,State,Diagrams,我读了很多关于它的书,但仍然不确定状态执行的顺序(在复合状态中)以及历史的深度和深度到底是如何工作的?有人能帮我吗? 我有一个例子,我不知道如何解决,这里是: 我将感谢任何帮助 问题1: 。。。不确定。。历史的深浅究竟是如何运作的 答复1: 请注意: 浅历史由一个包含“H”的小圆圈表示。它适用于直接包围它的州区域 浅历史伪状态表示其包含状态的最新活动子状态(但不是该子状态的子状态) 资料来源: 问题2: 。。。我不确定我是否应该总是从初始点开始,它在所有复合材料之外 答复2: 对。从根状态的初

我读了很多关于它的书,但仍然不确定状态执行的顺序(在复合状态中)以及历史的深度和深度到底是如何工作的?有人能帮我吗? 我有一个例子,我不知道如何解决,这里是:

我将感谢任何帮助

问题1:

。。。不确定。。历史的深浅究竟是如何运作的

答复1:

请注意:

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

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

资料来源:

问题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被丢弃

在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

这是家庭作业吗?如果您进一步详细说明您到底做了什么、不理解什么以及您试图找出的解决方案是什么,那就更好了。如果你的问题太宽泛(目前是这样),它可能会被关闭。这是去年考试的问题之一。所以首先,我不确定我是否应该总是从初始点开始,它在所有复合材料之外?我想是的,但如果第一个事件是e1,那么也许我应该从里面的这个开始?2) 如果我从左边的初始点开始,那么在进入B状态之前,我应该已经执行“entry/x=x*2”操作了?3) 我相信当我离开状态Y时,x的值应该是7,但是当我遇到H时,我应该去哪里。。?