Chapitre IV
Diagramme d’Etats Transitions
Cours
Mohammed BEKKALI
[Link]@[Link]
ENSAM-Rabat
Université Mohamed V
Diagramme d’Etat Transition
Sommaire
◦ Présentation du diagramme
◦ Les états
◦ Les transitions / événements
◦ Les actions / activités
◦ Les points de décision
◦ Les états composite
◦ Exemples de synthèse
LE LANGAGE UML – [ M. BEKKALI ] 2
Diagramme d’Etat Transition
Principe
Description
◦ Les diagrammes d'états-transitions d'UML décrivent le comportement interne d'un objet à l'aide d'un
automate à états finis.
◦ Ils présentent les séquences possibles d'états et d'actions qu'une instance de classe peut traiter au
cours de son cycle de vie en réaction à des événements discrets (de type signaux, invocations de
méthode).
◦ Ils offrent une vision complète et non ambiguë de l’ensemble des comportements d’une instance d’une
classe.
◦ Ils utilisent des automates déterministes à états-finis :
◦ un graphe oriente
◦ déterministe : il y a toujours un chemin d’un état initial vers un état final
◦ états-finis : le nombre d’états est fini
LE LANGAGE UML – [ M. BEKKALI ] 3
Diagramme d’Etat Transition
Principe
Description
◦ Les concepts de base d’un diagramme d’état transition sont:
◦ Les états
◦ Les transitions
◦ Les événements
◦ Les activités et les actions
◦ ….
◦ Seules les classes ayant un cycle de vie significatif nécessitent le recours au diagramme états-transitions, par
exemple:
◦ Livre (emprunte, disponible, réservé ...) et Emprunteur (autorisé, bloque, sanctionné ...) dans un système de gestion de bibliothèque
◦ Article (disponible, vendu, livré...) dans un système de vente et achat en ligne
LE LANGAGE UML – [ M. BEKKALI ] 4
Diagramme d’Etat Transition
Exemple
Premier Exemple
◦ Un exemple simple d'automate à deux états finis d’un objet de la classe Lampe (Allumé et Éteint) , et deux
transitions correspondant au même événement : la pression sur un bouton d'éclairage domestique.
◦ Lorsque l'on appuie sur un bouton d'éclairage, la réaction de l'éclairage associé dépendra de son état
courant (de son historique) :
◦ si la lumière est allumée, elle s'éteindra,
◦ si elle est éteinte, elle s'allumera.
Allumé
pression pression
Éteint
LE LANGAGE UML – [ M. BEKKALI ] 5
Diagramme d’Etat Transition
Remarques
◦ Un diagramme d’états-transitions n’offre pas une vision globale car il ne s’intéresse qu’à un seul élément du
système modélisé.
◦ Si les diagrammes de séquences regroupent tous les objets impliqués dans un unique cas d’utilisation, les
diagrammes d’états indiquent tous les changements d’états d’un seul objet à travers l’ensemble des cas
d’utilisation dans lequel il est impliqué.
◦ Les diagrammes d’états identifient pour une classe donnée le comportement d’un objet tout au long de son
cycle de vie (de la naissance ou état initial, à la mort ou état final).
LE LANGAGE UML – [ M. BEKKALI ] 6
Diagramme d’Etat Transition
Les états
Définition
◦ L’état d'un objet est lié aux valeurs de ses variables d'instances et de ses interactions avec les autres objets.
◦ C’est-à-dire que un état, est toujours la conjonction instantanée des valeurs contenues par les attributs de
l’objet, et la présence ou non des liens, de l’objet considéré vers d’autres objets
◦ Un objet passe dans un état donné par un événement qui modifie ses variables, et quitte cet état par un
autre événement qui les modifie à nouveau. Ce sont des transitions d'états.
◦ Graphiquement,
◦ Un état est représenté par des rectangles aux coins arrondis
◦ Une transition est représentée par un arc orienté liant un états avec un autre.
LE LANGAGE UML – [ M. BEKKALI ] 7
Diagramme d’Etat Transition
Les états
Exemple
◦ Le diagramme de classe suivants représente des personnes qui travaillent pour des sociétés
Societe 0..1 1..* Personne
- age : boolean
◦ Les trois états possible d’une personne sont :
En activité En chômage A la retraite
◦ Pour connaitre l’état d’une personne à un moment bien déterminé, il faut étudier la conjonction suivante:
◦ L’âge de la personne
◦ La présence d’un lien vers société
LE LANGAGE UML – [ M. BEKKALI ] 8
Diagramme d’Etat Transition
Les états
Exemple (suite)
◦ Dans le diagramme d’objet suivant :
:Pers1
Age : 30 ans
:Pers2
:Société-X
Age : 40 ans
:Pers3
Age : 75 ans
◦ Il y a pas de lien entre Pers1, âgé de 30 ans, et une société : Pers1 est donc en chômage.
◦ Pers2, quant à lui, possède un lien vers une société et est âgé de 40 ans : Pers2 est donc en activité.
◦ Pers3, enfin, ne possède pas de lien vers une société et est âgé de 75 ans : Pers3 est donc à la retraite.
LE LANGAGE UML – [ M. BEKKALI ] 9
Diagramme d’Etat Transition
Les type d’états
On distingue :
◦ L'état initial, qui indique l'état de départ du diagramme d'états-transitions. Lorsqu'un objet est créé, il entre
dans l'état initial.
◦ L’état courant, qui indique les étapes intermédiaires durant le cycle de vie de l'objet.
◦ L'état final, qui indique que le diagramme d'états-transitions est terminé. Lorsqu’un objet est détruit
Représentation graphique
État Courant
État initial État final
LE LANGAGE UML – [ M. BEKKALI ] 10
Diagramme d’Etat Transition
Les Transitions / Événements
Transition
◦ Une transition est le passage d’un état à un autre
◦ Un événement est un fait qui déclenche le changement d’état
◦ La provenance de l’événement peut être aussi bien interne, qu’externe au système
◦ Les transitions ne relient pas nécessairement des cas distincts. Un cas particulier des transitions, c’est lorsque la
transition est d’un état vers lui-même (Transition Réflexive ou Auto-Transition)
◦ La syntaxe générale d’un événement est : nomEvenement (para1 : Type, para2 : Type, … )
Représentation graphique
Événement
Événement 2
État 1 État 2
1
LE LANGAGE UML – [ M. BEKKALI ] 11
Diagramme d’Etat Transition
Les Transitions / Événements
Exemple 1
◦ Dans un système de gestion de bibliothèque, voici les états d’un objet de la classe Livre (libre, réservé, et prêté)
avec les transitions possibles:
poubelle
Livre libre
libération livre rendu
réservation emprunt
emprunt
Livre réservé Livre prêté
LE LANGAGE UML – [ M. BEKKALI ] 12
Diagramme d’Etat Transition
Les Transitions / Événements
Exemple 2
◦ Dans un système de gestion d’activité professionnelle, voici les états possibles d’un objet de la classe Personne
(chômage, activité, formation, et retraite) avec les transitions possibles :
Au chômage
embauche perte
d’emploi
manque de
compétence > 60
En formation En activité En retraite
validation de
compétence
LE LANGAGE UML – [ M. BEKKALI ] 13
Diagramme d’Etat Transition
Les Transitions / Événements
Remarques :
◦ Contrairement aux états qui durent, un événement est par nature une information instantanée qui doit être
traitée sans plus attendre.
◦ Un événement sert de déclencheur pour passer d’un état à un autre. Les transitions indiquent le chemin dans le
graphe des états. Les événements déterminent quels chemins doivent être suivis.
◦ Les événements, les transitions et les états sont indissociables dans la description du comportement dynamique.
Un objet, placé dans un état donné, attend l’occurrence d’un événement pour passer dans un autre état.
LE LANGAGE UML – [ M. BEKKALI ] 14
Diagramme d’Etat Transition
Les Types d'événements
On distingue :
◦ Événement signal : réception d'un message asynchrone
◦ Événement d’appel : appel d'une opération (synchrone), liée aux cas d'utilisation, opération du diagramme de
classes...
◦ Événement de changement : Satisfaction d'une condition booléenne sur des valeurs d’attributs, when(cond),
évaluée continuellement jusqu'à ce qu'elle soit vraie (et non pas une seule fois comme une garde pour
déclencher la transition ou non)
◦ Événement temporel : sont générés par le passage du temps. Par défaut, le temps commence à s'écouler dès
l'entrée dans l'état courant.
◦ Date absolue : when(date = date)
◦ Date relative : after(durée)
LE LANGAGE UML – [ M. BEKKALI ] 15
Diagramme d’Etat Transition
Les Gardes
Définition
◦ Une garde est une condition booléenne qui valide ou non le déclenchement d’une transition lors de l’occurrence
d’un événement.
◦ Graphiquement, une garde est en dessus de la flèche représentant la transition, sous forme d’une comparaison
Événement [Garde]
État 1 État 2
Exemples
◦ L’événement anniversaire fait passer la personne de l’état Mineur à l’état Majeur, si l’âge est 18 ans,
Anniversaire [age = 18]
Mineur Majeur
◦ La commande n'est expédiée que si la commande comporte au moins 3 produits.
Expédition [nbProduitsCommandes > 2]
En préparation En attente
LE LANGAGE UML – [ M. BEKKALI ] 16
Diagramme d’Etat Transition
Les Actions / Activités
Action
◦ Une action sur une transition est un traitement exécuté lorsque la transition est déclenchée.
◦ L’action à accès aux paramètres de l ’événement, ainsi qu’aux attributs de la l’objet.
◦ Une action (ponctuelle) est attachée à une transition. Elle se caractérise par un traitement bref et atomique, elle n’a
pas de durée.
◦ Une action ne peut pas être interrompue par un événement et s’accomplit.
Représentation Graphique
État 1 Événement / Action État 2
Exemple
◦ Affectation, Envoi d'un signal, Création ou Destruction d'un objet
LE LANGAGE UML – [ M. BEKKALI ] 17
Diagramme d’Etat Transition
Les Actions / Activités
Activité
◦ Contrairement à une action, une activité est une opération qui prend du temps d’exécution, et peut être
interrompue par l’arrivée d’un événement.
◦ Trois activités particulières sont introduits : entry/, do/, et exit/, permettant de définir une Transition Interne.
◦ « entry » définit une activité à effectuer à chaque fois que l'on rentre dans l'état considéré.
◦ « exit » définit une activité à effectuer quand on quitte l'état.
◦ « do » définit une activité continue qui est réalisée tant que l'on se trouve dans l'état, ou jusqu'à ce que le calcul associé soit terminé.
Exemple
SaisieMotPasse
entry / set echo invisible
do / afficher aide
exit / set echo normal
LE LANGAGE UML – [ M. BEKKALI ] 18
Diagramme d’Etat Transition
Les Actions / Activités
Remarque
◦ Une activité interne (do) n’entraine pas l’exécution des activité d’entrée et de sortie, contrairement au
déclenchement d’une transition réflexive.
Exemple
◦ Les deux états A et B ne sont pas équivalents
m1 / activité
A B
entry / activité d’entrée entry / activité d’entrée
m1 / activité exit / activité de sortie
exit / activité de sortie
LE LANGAGE UML – [ M. BEKKALI ] 19
Diagramme d’Etat Transition
Les Points de Décision
Point de décision
◦ On peut représenter des alternatives pour le franchissement d'une transition.
◦ Les points de jonction (petit cercle plein) permettent de partager des segments de transition.
Ils ne sont que des raccourcis d'écriture.
Ils permettent des représentations plus compactes.
◦ Les points de choix (losange) sont plus que des raccourcis d'écriture.
LE LANGAGE UML – [ M. BEKKALI ] 20
Diagramme d’Etat Transition
Les Points de Décision
Point de jonction
◦ Un point de jonction permet de factoriser des segments de transition.
◦ Objectif : aboutir à une notation plus compacte ou plus lisible des chemins alternatifs.
Exemple : Les deux diagrammes suivants sont équivalents
e1 [a >0 and b < 0] [b > 0]
État 1 État 3 État 1 e1 [a >0] État 3
[b = 0]
État 4 État 4
[b < 0]
État 2 État 5 État 2 e2 [a >0] État 5
e2 [a >0 and b > 0]
LE LANGAGE UML – [ M. BEKKALI ] 21
Diagramme d’Etat Transition
Les Points de Décision
Point de choix
◦ Un point de choix possède une entrée et au moins deux sorties.
◦ Les gardes situées après le point de décision sont évaluées au moment où il est atteint.
◦ Une fois le point de choix atteint au moins un chemin doit être franchissable.
◦ Contrairement aux points de jonction, les points de choix ne sont pas de simples raccourcis d'écriture.
Exemple
[Voice] Création d’un
message Vocal
Sélectionner le [SMS] Création d’un
type de message message SMS
[Fax] Création d’un
message FAX
LE LANGAGE UML – [ M. BEKKALI ] 22
Diagramme d’Etat Transition
Les Etats Composites
État Composite
◦ Un état composite, par opposition à un état dit « simple », est décomposé en deux ou plusieurs sous-états.
◦ Tout état ou sous-état peut ainsi être décomposé en sous-états imbriqués sans limite a priori de profondeur.
◦ Un état composite est représenté par les deux compartiments de nom et d'actions internes habituelles, et par un compartiment contenant le sous-
diagramme.
◦ L’utilisation des états composite facilite la représentation et permet d’occulter les détails
Représentation Graphique
E1 E1
A B A B
E2 E2 E2
C C
LE LANGAGE UML – [ M. BEKKALI ] 23
Diagramme d’Etat Transition
Les Etats Composites
Exemple Diagramme d’état d’un vidéoprojecteur
◦ Les états possibles sont : Branché, Débranché, étain, Connecté, et Allumé)
Branché
Brancher
Débranché Éteint Power
Power Power
Allumé
Déconnecter
Débrancher
Connecté Connecter
LE LANGAGE UML – [ M. BEKKALI ] 24
Diagramme d’Etat Transition
États Composites & États Initiaux / Finaux
Remarques
◦ Les transitions peuvent avoir pour cible la frontière d'un état composite. Elle sont alors équivalentes à une transition
ayant pour cible l'état initial de l'état composite.
◦ Une transition ayant pour source la frontière d'un état composite est équivalente à une transition qui s'applique à
tout sous-état de l'état composite source.
◦ Cette relation est transitive et peut traverser plusieurs niveaux d'imbrication.
LE LANGAGE UML – [ M. BEKKALI ] 25
Diagramme d’Etat Transition
États Composites & États Initiaux / Finaux
Exemple : Diagramme d’état d’un individu majeur qui peut se marier
Vivant
Majeur
[Age >= 18] Se marier Décès conjoint
Mineur Célibataire Marié
Power Veuf
Se marier
Divorcer Se marier
Divorcé
Décéder
Décédé
LE LANGAGE UML – [ M. BEKKALI ] 26
Diagramme d’Etat Transition
États Composites et Transitions Internes
États Composites et Transitions Internes (Ordre d’exécution)
◦ Dans l’exemple suivant, depuis Etat11, quand event1 survient
◦ On produit la séquence d'activités quitterE11, quitterE1, action1, entrerE2, entrer21, initialiser, entrer22
◦ L'objet se trouve alors dans Etat22.
Etat 2
Etat 1
Etat 21
Etat 11
event1 / action1 initialiser() Etat 22
exit / quitterE11
entry / entreeE22
exit / quitterE1 entry / entreeE21
entry / entreeE2
LE LANGAGE UML – [ M. BEKKALI ] 27
Diagramme d’Etat Transition
État Historique
État Historique
◦ Une transition ayant pour cible le état historique est équivalente à une transition qui a pour cible le dernier état
visité dans la région contenant le H.
◦ Un état historique est noté par un H cerclé. H
◦ H* désigne un historique profond, c’est à dire un historique valable pour tous les niveaux d'imbrication. H*
LE LANGAGE UML – [ M. BEKKALI ] 28
Diagramme d’Etat Transition
État Historique
Exemple : Diagramme d’état d’une machine à laver
◦ Les états possible sont : Lavage, Rinçage, Filage, et Éteinte
En marche
Lavage Rinçage Filage
rétablir le coupure de
courant courant
Éteint
LE LANGAGE UML – [ M. BEKKALI ] 29
Diagramme d’Etat Transition
État Concurrent
État Concurrent
◦ Un objet peut alors être simultanément dans plusieurs états concurrents.
◦ Avec un séparateur en pointillés, on peu représenter plusieurs automates s'exécutant indépendamment.
◦ Chaque région peut posséder un état initial et final.
◦ Une transition qui atteint la bordure d’un état composite orthogonal est équivalente à une transition qui atteint les
états initiaux de toutes ses régions concurrentes
◦ Toutes les régions concurrentes d’un état composite orthogonal doivent atteindre leur état final pour que l’état
composite soit considéré comme terminé.
LE LANGAGE UML – [ M. BEKKALI ] 30
Diagramme d’Etat Transition
État Concurrent
Exemple : Diagramme d’état d’un distributeur automatique de boissons
◦ Les états possible sont : Préparer Boisson, Terminer Préparation, et Rendre Monnaie
BoissonSelectionnee
PreparerBoisson TerminerPréparation
entry / placerGoblet () do / ajouterSucre ()
do / servirLiquide () exit / signalSonore()
RendreMonnaie
entry / monnaie = credit – [Link]()
do / [Link](monnaie)
LE LANGAGE UML – [ M. BEKKALI ] 31
Diagramme d’Etat Transition
Transition Concurrente
Transition Concurrente
◦ Une transition fork correspond à la création de deux états concurrentes.
◦ Une transition join correspond à une barrière de synchronisation qui supprime la concurrence.
◦ Pour pouvoir continuer leur exécution, toutes les tâches concurrentes doivent préalablement être prêtes à
franchir la transition.
Exemple
PreparerBoisson TerminerPréparation
entry / placerGobelet () do / ajouterSucre ()
do / servirLiquide () exit / signalSonore() GobeletBloque
Nominal do / afficher («Retirer Boisson»)
RendreMonnaie
entry / monnaie = credit – [Link]()
do / [Link](monnaie)
[Gobelet Retiré]
LE LANGAGE UML – [ M. BEKKALI ] 32
Exercice 1
Diagramme d’état transition d’une serrure
◦ Une porte munie d’une serrure offre les opérations ouvrir, fermer, verrouiller, déverrouiller.
◦ La serrure peut être fermée à simple ou à double tour.
◦ Modéliser les états et transitions de la serrure. Mettez en avant les états où la serrure est verrouillée par rapport
aux états où elle ne l’est pas.
Corrigé
Verrouillée
fermer verrouiller
Déverrouillée Simple Tour Double Tour
ouvrir déverrouiller
LE LANGAGE UML – [ M. BEKKALI ] 33
Exercice 2
Diagramme d’état transition d’une fenêtre
◦ Une fenêtre peut être dans trois états : réduite, normale, agrandie.
◦ Lorsqu’elle est réduite, elle est représentée par une icône dans la barre des tâches.
◦ À l’état normal, elle peut être déplacée et redimensionnée.
◦ Lorsqu’elle est agrandie, elle occupe toute la surface disponible de l’écran et ne peut être déplacée ou
redimensionnée.
◦ Représentez à l’aide d’un digramme d’état transition le comportement d’une fenêtre.
LE LANGAGE UML – [ M. BEKKALI ] 34
Exercice 2
Corrigé
Créé
Ouverte
maximiser()
Normale Agrandie
minimiser(
)
dimensionner
positionner()
() H
minimiser() afficher()
Réduite
LE LANGAGE UML – [ M. BEKKALI ] 35
Exercice 3
Diagramme d’état transition d’une HashSet
◦ ensemble de couples (clé, valeur) avec clés uniques
◦ capacité fixe
◦ taille = nombre de couples présents
◦ ajouter(c,v) : ajoute si clé absente, écrase si clé présente ajout au-delà de la capacité interdit
◦ retirer(c) : retire le couple de clé c s'il existe
◦ Représentez à l’aide d’un digramme d’état transition le comportement d’une HashSet.
LE LANGAGE UML – [ M. BEKKALI ] 36
Exercice 3
Corrigé
LE LANGAGE UML – [ M. BEKKALI ] 37
Bilan
Diagramme d’états transitions État
il répond à deux questions : L’état d'un objet est lié aux valeurs de ses variables d'instances
et de ses interactions avec les autres objets.
1) les états possibles que un objet peut prendre
durant son cycle de vie On distingue entre 3 types d’états: initial, final, ou courant
2) les transitions entre ces états qui seront Un état est représenté par un rectangles aux coins arrondis, qui
déclenchées par des événements déclencheurs peut contenir des transitions interne ; ou des sous-états ou
même des sous diagrammes.
Transition
◦ Est le passage entre à un état et un autre / ou vers lui-même, et elle est représenté par une flèche à trait plein
◦ L'événement déclencheur est indiqué à côte de la èche représentant la transition
◦ Une transition peut être ornée d’une condition qui la déclenche (une garde)
◦ Une transition peut avoir plusieurs chemin grâce aux points de choix
◦ Une action est attachée à une transition, c’est un traitement bref et atomique et non interruptible
◦ Une activité est attaché à un état, elle prend du temps d’exécution et peut être interrompue par l’arrivée d’un événement
LE LANGAGE UML – [ M. BEKKALI ] 38