UML状态图中保护和事件的区别



我想我可以区分eventguard。但是我遇到了一个类似于guard的事件:

counter > 4 [pin is high] / switch on
^^^^^^^^^^^ 
   event

中,我将变量计数器从小于4的值更改为大于4的值视为事件。这是否意味着事件也可以是一种状态,比如守卫?

事件是触发转换的事情。在您的示例中,counter > 4是一个更改事件,意味着"计数器值已更改,其值现在大于4"。

括号之间的代码是保护符。在pin is high的情况下,意味着"只有当引脚高时才启用转换"。

switch on是执行转换时执行的行为

脚注:在您的示例中,事件确实与守卫非常相似。

在C语言中可能是这样的:

/** 
 * this interrupt is triggered when the
 * counter exceeds the threshold (4)
 */
static void counter_isr(void)
{
   if (pin_is_high(PIN))
       switch_on();
} 

来自UML 2.5规范:

<

14.2.3.8转换/strong>…一个转换可以拥有一组触发器,每个触发器指定一个事件在分派时,它的出现可能会触发遍历过渡。转换触发器被认为是启用的事件发生与事件类型匹配。

14.2.4.9 Transition…转换的默认文本表示法由以下BNF表达式:

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]

即:trigger [guard] / behavior

相关内容

  • 没有找到相关文章

最新更新