我读了很多关于它的内容,但是仍然不确定状态以什么顺序执行(在“复合状态”中)以及深浅的历史究竟是如何工作的?有人可以帮我吗?
我有一个示例,我不确定如何解决,这里是:
我将不胜感激任何帮助!
最佳答案
问题1:
...不确定..深浅的历史到底是如何工作的?
答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被丢弃