Contenu principal

Éliminer du code redondant en combinant des actions d’état

Vous pouvez combiner les actions entry, during et exit qui exécutent les mêmes tâches en un état.

En combinant les actions d’état qui exécutent les mêmes tâches, vous éliminez du code redondant. Par exemple :

Actions séparéesActions combinées équivalentes

entry:
  y = 0;
  y=y+1;
during: y=y+1;

entry: y = 0;
entry, during: y=y+1;

en: 
  fcn1();
  fcn2();
du: fcn1();
ex: fcn1();

en, du, ex: fcn1();
en: fcn2();

Combiner des actions d’état de cette façon produit le même comportement d’exécution du diagramme (sémantique) et génère le même code que les actions séparées équivalentes.

Comment combiner les actions d’état

Combinez un ensemble d’actions entry, during et/ou exit qui effectuent la même tâche qu’une liste séparée par des virgules en un état. Voici la syntaxe :

entry, during, exit: task1; task2;...taskN;

Vous pouvez également utiliser les abréviations équivalentes :

en, du, ex: task1; task2;...taskN;

Combinaisons valides

Vous pouvez utiliser n’importe quelle combinaison des trois actions. Par exemple, les combinaisons suivantes sont valides :

  • en, du:

  • en, ex:

  • du, ex:

  • en, du, ex:

Vous pouvez combiner les actions dans n’importe quel ordre dans la liste en les séparant par des virgules. Par exemple, en, du: donne le même résultat que du, en:.

Combinaisons invalides

Vous ne pouvez pas combiner deux actions ou plus du même type. Par exemple, les combinaisons suivantes sont invalides :

  • en, en:

  • ex, en, ex:

  • du, du, ex:

Si vous combinez plusieurs actions du même type, vous recevez un avertissement signalant que le diagramme n’exécute l’action qu’une seule fois.

Ordre d’exécution des actions combinées

Les états exécutent des actions combinées dans le même ordre qu’ils exécutent des actions séparées :

  1. Les actions Entry d’abord, de haut en bas dans leur ordre d’apparition dans l’état

  2. Les actions During ensuite, de haut en bas

  3. Les actions Exit enfin, de haut en bas

L’ordre dans lequel vous combinez les actions n’affecte pas le comportement d’exécution de l’état. Par exemple :

Actions combinéesOrdre d’exécution

Entry action y = 0 followed by combined entry and during action y = y+1.

  1. en: y = 0;

  2. en: y = y+1;

  3. du: y = y+1;

Combined entry and during action y = y+1 followed by entry action y = 0.

  1. en: y = y+1;

  2. en: y = 0;

  3. du: y = y+1;

Combined during and entry action y = y+1 followed by entry action y = 0.

  1. en: y = y+1;

  2. en: y = 0;

  3. du: y = y+1;

Combined during and entry action y = y+1 followed by combined entry and exit action y = 10.

  1. en: y = y+1;

  2. en: y = 10;

  3. du: y = y+1;

  4. ex: y = 10;

Règles de combinaison des actions d’état

  • Ne combinez pas plusieurs actions du même type.

  • Ne créez pas de données, d’événements ou de messages qui ont le même nom que les mots-clés d’actions : entry, en, during, du, exit, ex.

Voir aussi

Rubriques