Разница между защитой и событием в диаграмме состояний UML

Я думал, что смогу различать event и guard. Но я наткнулся на событие, похожее на guard:

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

где я просматривал изменения счетчика переменных с некоторого значения меньше 4 на значение больше 4 как событие. Означает ли это, что событие также может быть условием, таким как охрана?


person kaosad    schedule 04.09.2015    source источник


Ответы (1)


Событие — это то, что запускает переход. В вашем случае 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 Переходы ... Переходу может принадлежать набор Триггеров, каждый из которых определяет Событие, возникновение которого при отправке может инициировать обход Перехода. Триггер перехода считается включенным, если отправленное вхождение события соответствует его типу события.

14.2.4.9 Переход ... Текстовое обозначение перехода по умолчанию определяется следующим выражением BNF:

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

Другими словами: trigger [guard] / behavior

person sergej    schedule 04.09.2015