Vous êtes sur la page 1sur 30

Diagrammes

d’états-transitions
Aziza EL OUAAZIZI
Faculté Polydisciplinaire de Taza
Département des Mathématiques, Physique et Informatique
Licence Informatique

1
Introduction
Les diagrammes d’états-transitions présentent les
séquences possibles d'états et d'actions qu'une instance
de classe (objet) peut traiter au cours de son cycle de vie
en réaction à des événements discrets.
Rassemble et organise les états et les transitions d'un objet
donné.

Offrent une vision complète et non ambiguë de l'ensemble des


comportements de l'élément auquel il est attaché.

La vision globale du système n'apparaît pas sur ce type de


diagrammes puisqu'ils ne s'intéressent qu'à un seul élément du
système indépendamment de son environnement.

2
Etat

L'état d'un objet est défini à la fois par les valeurs de ses attributs
et par les valeurs de ses associations avec d'autres objets.
l'état d'un objet a une durée finie, quantifiable à l'échelle du
système.
se représente graphiquement dans un diagramme
Etat A
d'états-transitions par un rectangle aux coins arrondis.

Œuf Larve Nymphe Coccinelle adulte

Les états possibles d’une coccinelle

3
État initial et final

L'état initial est un pseudo-état qui indique l'état de départ,


par défaut, lorsque le diagramme d'états-transitions, ou
l'état enveloppant, est invoqué.
Lorsqu'un objet est créé, il entre directement dans l'état initial.

L'état final est un pseudo-état qui indique que le


diagramme d'états-transitions, ou l'état enveloppant, est
terminé.

4
Evénement
Un événement est un fait significatif qui se produit et qui
peut par conséquent déclencher un changement d’état. Il
est lié à la réception d’un message par un objet.
Exemple: l'arrivée d'une commande, l’arrivée d’une demande de
réservation …

Un événement peut transporter des informations


(paramètres). Contrairement à un état, Il n'a pas de durée
et peut être de type:
Signal
Appel
changement
temporel

5
Événement de type signal
Un classeur destiné explicitement à véhiculer une communication
asynchrone à sens unique entre deux objets.
Permet de modéliser certains types de communications matérielles
(interruptions matérielles, entrées/sorties)

Représenté par un classeur portant le stéréotype «signal» ne


fournissant pas d'opération et dont les attributs sont interprétés comme
des arguments.

La syntaxe d'un signal est la suivante :


<nom_événement>([<par>:<type>[;<par>:<type> ... ] ] )

Nom de
Paramètres du « signal » l’événement signal
signal Souris
+posx: Entier
+posy: Entier
6
Événement d'appel (call)
Généré par l’appel d'une opération déclarée au niveau du
diagramme de classes.

Les paramètres de l'opération sont ceux de l'événement d'appel.

La syntaxe d'un événement d'appel est la même que celle d'un


signal:
<nom_événement>([<par>:<type>[;<par>:<type> ... ] ] ))

Démarrer()
Inactif Actif
Arrêter()

Etats d’un moteur


Les opérations démarrer() et arrêter() changent l’état du moteur
De l’état Inactif à l’état Actif et inversement

7
Événement de changement (change)
Généré par la satisfaction (i.e. passage de faux à vrai) d'une
expression booléenne sur des valeurs d'attributs.

Il s'agit d'une manière déclarative d'attendre qu'une condition


soit satisfaite.

La syntaxe d'un événement de changement est la suivante:


when(<condition_booléenne>)

N.B: Un événement de changement est évalué continuellement


jusqu'à ce qu'il devienne vrai.

8
Événement temporel (when ou after)

Généré par le passage du temps. Il est spécifié soit de


manière absolue (date précise), soit de manière relative
(temps écoulé). Par défaut, le temps commence à s'écouler
dès l'entrée dans l'état courant.

Un événement temporel spécifié de manière absolue est défini


en utilisant un événement de changement:

when ( date = <date> )

La syntaxe d'un événement temporel spécifié de manière


relative est la suivante:

after ( <durée> )

9
Transition
Définit la réponse d'un objet à l'occurrence d'un événement donné

La syntaxe d'une transition est la suivante:

[ <événement> ][ '[' <garde> ']' ] [ '/' <effet> ]

Permet de lier, généralement, deux états E1 et E2 et indique qu'un


objet dans un état E1 peut entrer dans l'état E2 et exécuter
certaines actions, si un événement déclencheur se produit et que la
condition de garde est vérifiée.
état

PressionInterrupteur
Eteinte allumée
PressionInterrupteur

Transition
Etats d’une lampe
10
La garde
Il s'agit d'une expression logique sur les attributs de l'objet, associé
au diagramme d'états-transitions, ainsi que sur les paramètres de
l'événement déclencheur.
La condition de garde est évaluée uniquement lorsque l'événement
déclencheur se produit.
Si l'expression est fausse à ce moment-là, la transition ne se déclenche
pas.
Si l’expression est vraie, la transition se déclenche et ses effets se
produisent.
Retour [bon état] Retour [mauvais état]
Empruntée

Disponible En réparation
Etats d’une voiture de location

11
Effet d'une transition
Lorsqu'une transition se déclenche (on parle également
de tir d'une transition), son effet s'exécute.
Il s'agit généralement d'une action qui peut être:
une opération primitive comme une instruction d’affectation;
envoi d'un signal ;
appel d'une opération ;
création ou destruction d’objet.

La façon de spécifier l'action à réaliser est laissée libre


(langage naturel ou pseudo-code).
Lorsque l'exécution de l'effet est terminée, l'état cible de
la transition devient actif.

12
Transition interne
Une transition interne ne modifie pas l’état courant, mais suit
globalement les règles d’une transition simple entre deux états.

Les règles de déclenchement d'une transition interne sont les


mêmes que pour une transition externe excepté qu'une transition
interne ne possède pas d'état cible et que l'état actif reste le même
à la suite de son déclenchement.

La syntaxe d'une transition interne reste la même que celle d'une


transition classique:

[ <événement> ][ '[' <garde> ']' ] [ '/' <effet> ]

Quatre déclencheurs (événements) particuliers sont introduits


permettant le tir de transitions internes : entry/, do/, exit/, include.

13
Evénements internes
Entry: permet de spécifier une action qui s'accomplit quand on
entre dans l'état.

Exit: permet de spécifier une action qui s'accomplit quand on sort


de l'état.

Do: une activité do commence dès que l'action entry est terminée.
Lorsque cette activité est terminée, une transition d'achèvement
peut être déclenchée, après l'exécution de l'action exit bien entendu.
Si une transition se déclenche pendant que l'activité do est en
cours, cette dernière est interrompue et l'action de l’événement
exit de l'état s'exécute.

Include: permet d'invoquer un sous-diagramme d'états-transitions.

14
Représentation de transition interne

Les transitions internes ne sont pas représentées par


des arcs, mais sont spécifiées dans un compartiment de
leur état associé.

Saisie mot de passe

entry/ set echo invisible


character/ traiter caractère
help/ afficher aide
exit/ set echo normal

Représentation de la saisie d'un mot de passe dans un état


unique en utilisant des transitions internes

15
Transition réflexive

Une transition réflexive possède le même état d’origine et de


destination. Un événement associé à une telle transition ne fait pas
changer l’état de l’objet, mais provoque une réaction (appel d’une
méthode, envoi d’un signal à d’autres objets).

[crédit suffisant] / taxer()

[crédit insuffisant] / taxer()


Communication Fin de communication

Etats d’un répondeur téléphonique

16
Point de jonction
un pseudo-état qui permet de partager des segments de transition. Il
donne une notation plus compacte et plus lisible des chemins
alternatifs.
Peut avoir plusieurs segments de transition entrante et plusieurs segments
de transition sortante.
Ne peut pas avoir d'activité interne ni des transitions sortantes dotées de
déclencheurs d'événements

[b<0] Etat 3
Etat 1 e1[a>0]
[b=0]
Etat 4
Etat 2 e2[a>0]
[b>0] Etat 5
N.B: Lorsqu'un chemin passant par un point de jonction est emprunté, toutes
les gardes le long de ce chemin doivent être vrai dès le franchissement du
premier segment.
17
Point de décision
Un point de décision possède une entrée et au moins deux sorties.
Contrairement à un point de jonction, les gardes situées après le point
de décision sont évaluées au moment où il est atteint.
Choix basé sur les résultats obtenus en franchissant le segment avant
le point de choix.

Ok/ ValiderEntree() [Entrée validé]


Saisie formulaire Demander confirmation

[else]

Afficher problème

Formulaire en ligne:
Quand l’utilisateur valide son formulaire en appuyant sur le bouton Ok,
une vérification de la cohérence des données fournies est réalisée par ValiderEntrée().
Si les informations paraissent correctes, on lui demande de confirmer,
sinon on affiche les erreurs détectées et il doit remplir de nouveau le formulaire.

18
États composites
Un état qui englobe d’autres états appelés sous-états.
Si le diagramme d’état transition devient trop complexe, on peut
utiliser des états imbriqués pour le simplifier.
Nombre d’imbrication n’est pas limité (ne pas abusé sinon problème de
lisibilité).

Associer client et commande

[client trouvé] /afficher numéro client


Chercher client Associer client

[client non trouvé]

Créer client

Associer client et commande


Notation abrégée d'un état composite

19
Transition entre états composites
Une transition ayant pour cible la frontière d'un état composite est
équivalente à 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. la transition est franchissable depuis tout état
imbriqué, quelle que soit sa profondeur.

Une transition ayant pour source la frontière d'un état composite et qui
ne porte pas de déclencheur explicite (i.e. s'il s'agit d'une transition
d'achèvement), est franchissable quand l'état final de l'état composite
est atteint.

Les transitions peuvent également toucher des états de différents


niveaux d'imbrication en traversant les frontières des états composites.

20
Exemple d’états composites

Etat2

Etat1 Etat21

Etat11 Event1/action1 Initialiser() Etat22


Exit/QuitterE11 Entry/EntrerE22

Exit/QuitterE1 Entry/EntrerE21

Entry/EntrerE2

Depuis l'état État 1, la réception de l'événement event1 produit la


séquence d'actions QuitterE11, QuitterE1, action1, EntrerE2, EntrerE21,
initialiser(), EntrerE22, et place le système dans l'état État22

21
Points de connexion
Des points d'entrée et de sortie portant un nom, et situés sur la frontière
d'un état composite. Ils sont respectivement représentés par un cercle vide
et un cercle barré d'une croix.
Des points utilisés sur la frontière de l'état composite lorsqu'il existe
plusieurs transitions traversant la frontière de l'état composite et visant
directement, ou ayant pour source, un sous-état de l'état composite.

Distributeur boisson

[crédit < prix]


Vérifier crédit Crédit insuffisant

[crédit>=prix]

Test opérateur
Préparer
boisson

Produit épuisé Erreur matérielle

Erreur boisson non distribuée


22
État historique
Un pseudo-état qui mémorise le dernier sous-état actif d'un état
composite.
Graphiquement, il est représenté par un cercle contenant un H.

Crée

Ouverte
positionnement

agrandissement
Fermée Normale Plein-écran
réduction
dimensionnement H

Réduite
minimisation maximisation

Etats d’une fenêtre d’application sous Windows


23
État historique profond
Permet d'atteindre le dernier sous-état visité d’un état composite, quel que
soit son niveau d'imbrication.
Représenté graphiquement par un cercle contenant un H*.

After(2min)
H* lavage

Arrêt d’urgence
attente After(4min) After(2min)

séchage After(2min) lustrage

Arrêt d’urgence

Arrêt d’urgence

Diagramme possédant un état historique profond permettant de reprendre le


programme de lavage ou de séchage d'une voiture à l'endroit où il était arrivé
avant d'être interrompu

24
Concurrence
Les diagrammes d'états-transitions permettent de décrire
efficacement les mécanismes concurrents grâce à l'utilisation d'états
orthogonaux.
Un état orthogonal est un état composite comportant plus d'une
région, chaque région représentant un flot d'exécution.
Graphiquement, dans un état orthogonal, les différentes régions
sont séparées par un trait horizontal en pointillé allant du bord
gauche au bord droit de l'état composite.
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é.

25
Etat orthogonal
Cet exemple montre un état orthogonal au sein d’un distributeur de type machine
à café. Quand une boisson est sélectionnée et que le montant est validé par rapport
au crédit, deux séquences d’actions sont déclenchées en parallèle: la préparation de
la boisson et le rendu de la monnaie.

servir boisson et rendre la monnaie

préparer boisson et rendre la monnaie

Préparer Boisson terminer préparation


entry/placer gobelet do/ajouter sucre
do/servir liquide exit/signal sonore Gobelet en attente
do/afficher « retirer boisson »

Rendre monnaie
entry/monnaie= credit - boisson.prix()
do/monnayeur.rendre(monnaie)

26
Transition concurrentes
Il est possible de représenter le comportement orthogonal au moyen de transitions
concurrentes. Ces transitions sont représentées par une barre verticale épaisse et
courte, éventuellement associée à un nom. Un ou plusieurs arcs peuvent avoir pour
origine ou destination la transition. La sémantique associée est celle d’un fork / join.

servir boisson et rendre la monnaie

préparer boisson et rendre la monnaie


fork join
Préparer Boisson terminer préparation
entry/placer gobelet do/ajouter sucre
do/servir liquide exit/signal sonore
Gobelet en attente
do/afficher « retirer boisson »

Rendre monnaie
entry/monnaie= credit - boisson.prix()
do/monnayeur.rendre(monnaie)

27
Conclusion

Les diagrammes d’états-transitions sont les seuls de la norme


UML à offrir une vision complète et non ambiguë de
l’ensemble des comportements d’un objet (les diagrammes
d’interactions n’offrant que la vue d’un scénario, sans
vraiment préciser comment les différents scénarios
ébauchés peuvent interagir entre eux).

En raison de leur grand niveau de détails, ils sont surtout


adaptés à la phase d’implémentation.

Ils conviennent peu à la modélisation de systèmes


composés de plusieurs sous-systèmes car ils n’offrent pas de
vision globale.

28
Exercice 1: Machine à café

On souhaite étudier le comportement d’une machine à café


fonctionnant avec des jetons: pour obtenir une boisson, il faut utiliser
un jeton préacheté.
A l’état initial, la machine est en attente d’un jeton. Lorsque l’on
introduit un jeton, elle passe dans un état où elle attend l’appui sur
le bouton de demande de café. Si on appuie sur «Annulation», elle
rend le jeton et attend un jeton de nouveau. Si on appuie sur le
bouton de demande de café, elle passe dans un état «Café
commandé». Dans ce cas, elle fait le café puis elle le sert et revient
en état d’attente de jeton s’il reste des cafés, sinon elle va dans un
état indiquant qu’il faut la recharger.
Représenter le comportement de la machine par un diagramme
d’états-transitions.

29
Exercice 2: Etats d’un individu
Représenter à l’aide d’un diagramme états-transitions les états que peut
prendre un individu du point de vue de l’état marocaine: vivant, décédé, mineur,
majeur, célibataire, marié, veuf et divorcé. Supposer que seul un individu majeur
peut se marier. Utiliser les états composites pour cumuler les états: un individu
peut être simultanément vivant, majeur et divorcé par exemple.

30

Vous aimerez peut-être aussi