Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UML状态机,本地与外部转换_Uml_Modeling - Fatal编程技术网

UML状态机,本地与外部转换

UML状态机,本地与外部转换,uml,modeling,Uml,Modeling,正如我在书中已经问过的那样 我不确定我是否正确理解了局部转换的含义,我想知道我是否使用了正确的语义 这两个状态机相等吗 在UML2.4.1下,第一个图显示了从收到触发器时的状态1的本地转换,第二个图显示了收到触发器时子状态之间的转换。从状态1到状态1的外部过渡显示为箭头指向状态1,然后弯曲回到状态1(上部结构规范图15.48) 第15.3.15节转换UML上层建筑的种类2.4.1给出了内部、本地和外部转换的语义: kind=local意味着转换如果被触发,将不会退出复合(源)状态,但它将应用于

正如我在书中已经问过的那样 我不确定我是否正确理解了局部转换的含义,我想知道我是否使用了正确的语义

这两个状态机相等吗


在UML2.4.1下,第一个图显示了从收到触发器时的状态1的本地转换,第二个图显示了收到触发器时子状态之间的转换。从状态1到状态1的外部过渡显示为箭头指向状态1,然后弯曲回到状态1(上部结构规范图15.48)

第15.3.15节转换UML上层建筑的种类2.4.1给出了内部、本地和外部转换的语义:

kind=local意味着转换如果被触发,将不会退出复合(源)状态,但它将应用于复合状态中的任何状态,并且这些状态将被退出和输入


由于本地和子状态之间的转换都不会导致State1退出,因此图表显示了类似的状态机-不同之处在于,与State1.3相比,第一台机器将重新进入State1.3(导致调用其退出和进入行为),而第二台机器在触发时不会从State1.3执行任何操作

外部过渡是退出其源顶点的过渡。因此state1.1->state1.3;state1.2->state1.3和state1.1->state1.2是外部转换我认为第一个图中的本地转换会导致执行当前state1子状态的退出行为(而不是state1状态的退出行为),然后执行state1.3的进入行为。据我所知,与第二个图的唯一区别是缺少transition state1.3->state1.3,它具有相同的触发器,实际上在第一个图中也由本地转换表示。内部转换由UML规范定义为本地转换的特例,即自转换(即具有相同的源状态和目标状态)。声明state1.1->state1.2的另一个原因;state1.1->state1.3和state1.2->state1.3不适用internal@Sindico转换状态1.1->状态1.2等是状态1的内部-它们不会导致状态1的退出行为。它们是相关子状态的外部-它们会导致状态1.1的退出行为和进入行为状态1.2的r。你必须对上下文有点谨慎,有时必须说什么是内部/外部的转换才能清楚。