Réserver une Démo
Pré. Proc.

Enregistrement et Mappage Changements de State

Cette rubrique explique comment définir des contraintes par rapport à chaque State dans la Statemachine d'état sous une classe, pour définir le changement d'état à enregistrer.

Exemple

Cet exemple de dialogue State ' Propriétés ' est pour l' State appelé Parlement ; l'onglet 'Constraints' est ouvert pour montrer comment l' State est lié à la classe CXTrain.

Un State peut être défini par une seule contrainte ou par plusieurs ; dans l'exemple, le Parlement State a deux contraintes :

Les valeurs des contraintes ne peuvent être comparées que pour les types elemental, enum et string

La classe CXTrain a un membre appelé Location de type int et un membre appelé Departing.Name de type CString ; ce que cette contrainte signifie, c'est que cet State est évalué à Vrai lorsque :

  • une instance de la classe CXTrain existe et
  • sa variable membre Location a la valeur 0 et
  • la variable membre Departing.Name a la valeur Parlement

Opérateurs dans les contraintes

Il existe deux types d'opérateurs que vous pouvez utiliser sur les contraintes pour définir un State :

  • Les opérateurs logiques AND et OR peuvent être utilisés pour combiner des contraintes
  • Les opérateurs d'équivalence {= et != } peuvent être utilisés pour définir les conditions d'une contrainte
Toutes les contraintes pour un State sont soumises à une opération AND sauf indication contraire ; vous pouvez utiliser l'opération OR sur eux à la place, vous pouvez donc réécrire les contraintes dans l'exemple comme suit :

Emplacement=0 OR

Emplacement=1 AND

Departing.Name!=Centre

Voici quelques exemples d'utilisation des opérateurs d'équivalence :

Departing.Name!=Central AND

Emplacement !=1

Notes

  • Les guillemets autour des chaînes sont facultatifs ; la comparaison des chaînes est toujours sensible à la casse pour déterminer la vérité d'une contrainte

Apprenez Plus