🖨️ Version PDF
Si vous maitrisez le diagramme de classes, vous allez mieux comprendre comment est construit un diagramme d’Etats avec les éléments qui le composent et les relations entre eux.
Définition UML : Un Vertex est un nœud d’un graphe d’états. Il représente un point de passage ou un point de décision dans la machine à états.
C’est un point du diagramme où le flux peut arriver ou repartir.
Un Vertex peut être :
Pour mieux comprendre, imaginez un plan de métro : Chaque station est un Vertex, et les lignes entre elles sont des Transitions.
Définition UML : Une Region est un conteneur logique d’états et de transitions.
C’est une sous-partie d’une machine à états (ou d’un état composite) où l’on place les nœuds (Vertex) et transitions associées.
Pour illustrer ces notions, prenons un ascenseur qui a deux régions simultanées :
Les deux régions vivent en parallèle dans la même machine !
Définition UML : Un Guard est une condition booléenne attachée à une transition. La transition n’est franchie que si le Guard est vrai au moment du déclenchement.
C’est un filtre logique sur une transition.
Exemple de transition :
[etat1] --[boutonAppuyé && !batterieFaible]--> [etat2]
Précisions :
Visseuse électronique : Éteint –> [bouton appuyé] –> Allumé –> [timer 5s/erreur] –> Éteint
À partir du texte ci-dessous :
Une porte automatique est Fermée. Elle s’Ouvre quand on approche un badge valide. Elle reste Ouverte 3 secondes puis se Referme. Si un obstacle est détecté pendant la fermeture, elle retourne à Ouverte.
Un diagramme d’états est une machine composée de Régions, elles-mêmes peuplées de sommets reliés par des Transitions, chacune conditionnée par une Garde (condition) et déclenchée par un événement.
@startuml ' ============================================================ ' Méta-modèle UML — Diagramme d'États (version française) ' ============================================================ hide empty methods hide empty fields skinparam classAttributeIconSize 0 skinparam wrapWidth 240 skinparam maxMessageSize 120 title Méta-modèle UML — Diagramme d'états (version FR) ' ====================== ' Éléments principaux ' ====================== class MachineDEtats { + nom : Chaîne } class Région { + nom : Chaîne } abstract class Sommet { + nom : Chaîne } class État { + estComposite : Booléen + estSousMachine : Booléen + déclencheursDifférables : Déclencheur[*] + entrée : Comportement [0..1] + activité : Comportement [0..1] + sortie : Comportement [0..1] } class ÉtatFinal class PseudoÉtat { + type : TypePseudoÉtat } enum TypePseudoÉtat { initial historiqueProfonde historiqueSuperficielle choix jonction fourche jonctionParallèle pointEntrée pointSortie terminer } class Transition { + type : TypeTransition + effet : Comportement [0..1] } enum TypeTransition { externe interne locale } class Déclencheur abstract class Événement class SignalÉvénement class AppelÉvénement class ÉvénementTemporel { + quand : ExpressionTemporelle } class ÉvénementConditionnel { + condition : ExpressionBooléenne } class Garde { + expression : ExpressionBooléenne } class Comportement { + corps : Chaîne } ' ====================== ' Relations hiérarchiques ' ====================== Sommet <|-- État Sommet <|-- PseudoÉtat État <|-- ÉtatFinal Événement <|-- SignalÉvénement Événement <|-- AppelÉvénement Événement <|-- ÉvénementTemporel Événement <|-- ÉvénementConditionnel MachineDEtats "1" *-- "1..*" Région : contient > Région "1" *-- "1..*" Sommet : possède > Région "0..*" o-- "0..*" Transition : relie > Transition "1" --> "1" Sommet : source > Transition "1" --> "1" Sommet : cible > Transition "0..1" --> "0..1" Garde : condition > Transition "0..*" o-- "0..*" Déclencheur : déclenche > Déclencheur "0..*" --> "1" Événement : événement > Transition "0..1" --> "0..1" Comportement : effet > État "0..*" *-- "0..*" Région : sousRégions > ' ====================== ' Notes pédagogiques ' ====================== note top of MachineDEtats Racine du comportement dynamique. Contient une ou plusieurs régions. end note note right of Région Conteneur d'états et de transitions. Sert à séparer ou paralléliser les comportements. end note note bottom of Transition Liée à un Sommet source et un Sommet cible. Peut comporter : - un Déclencheur (Trigger) - une Garde (condition) - un Effet (Comportement) end note note right of Garde Expression booléenne qui doit être vraie pour que la transition soit franchie. end note @enduml