我想知道我是否正确理解了ShallowHistory语法。
这是使用它的正确方法吗?
在UML规范中。据说它可以用来代替最初的伪状态。我猜在那种情况下,没有办法重置State1的内存,而在这种情况下,从State0的转换总是从State1.1开始。我是对的吗?
答案 0 :(得分:1)
你的解释似乎是正确的。来自上层建筑:
进入复合状态后,区分以下情况:
•默认条目:以图形方式,这由终止于复合状态外边缘的传入转换指示。在这种情况下,将应用默认条目规则(请参阅语义变体点(默认条目规则))。
并且
语义变异点(默认输入规则)
如果转换终止于封闭状态并且封闭区域没有初始伪状态,则对这种情况的解释是语义变化点。 在某些解释中,这被认为是一种不正确的模型。也就是说,在这些情况下,初始伪状态是强制性的。另一种解释允许这种情况,这意味着,当采取这种转换时,状态机保持复合状态,而不进入任何区域或其子状态。
最后:
浅历史条目:如果转换终止于浅历史伪状态,则活动子状态将成为此条目之前最近活动的子状态,除非最近活动的子状态是最终状态或者这是第一个进入此状态的子状态州。在后两种情况下,输入默认历史状态。这是源自历史伪状态的转换目标的子状态。 (如果没有指定这样的转换,则情况定义不明确并且未定义其处理。)如果由历史确定的活动子状态是复合状态,则它继续其 默认条目。
请注意,从最后一段开始,您似乎应始终从H
伪状态转换,至少转换为initial
伪状态所指向的相同状态,否则您可能会生病定义机器。
我没有找到它说你可以使用H *代替初始伪状态的地方。你在哪里看到这个?