我并没有真正看到状态图中守卫和事件之间的区别,我可以看到的是,事件是一个已经启动的动作或类似的东西而且一个守卫只是一个条件但是我认为它比我不知道这两个术语是否相关或分离更深刻,哪一个是必要的,哪一个是可选的,或者它们的语法之间存在差异;一个没有括号的活动,如果你可以帮我这个,那就太好了。
提前致谢。 [抱歉,如果我拼错了一些东西]
答案 0 :(得分:4)
事件是已启动的操作或其他内容
关闭。事件就是发生的事情。就像火车到达车站一样,电灯开关打开,或者(与季节一致)圣诞老人从烟囱冒出来。
警卫只是一个条件
完全。因此,对于状态转换为触发,事件必须发生并且警卫必须评估为真。所以过渡到状态"离开礼物"要求圣诞老人到达(事件)并且烟囱未被阻挡(警卫)。
哪一个是必要的,哪个是可选的
基本上每次转换都需要一个事件。它不需要警卫。因此灯光可以转换为照明灯光。开关打开时的状态。不需要看守。
事件没有括号
是。该事件没有括号,后卫(如果有的话)放在方括号内。所以
Santa Arrives [chimney unblocked]
H个。
答案 1 :(得分:2)
在状态图中,事件是导致状态之间转换的原因。举个简单的例子,一个门有两个状态,Open和Closed。 ReadIDCard是将当前状态从Closed转换为Open的事件。
保护条件确定接收对象是否应响应该事件。例如,['AuthorizedID']后卫将在将状态更改为打开之前检查卡ID是否已获得授权。如果没有防护条件,ReadIDCard将始终打开门。
为了进一步说明,当门的状态变为打开时,定时器事件(等待,例如,等待五秒后)再次将门的状态更改为关闭。在这种情况下,没有保护条件;站在门口的任何人都被压扁了。 :)
所以,条款不同。总会有某种事件导致从一种状态转换到另一种状态。保护条件是可选的。从图表的角度来看,是否添加事件和保护条件是可选的。