Vous êtes sur la page 1sur 6

Diagrammes d’états 2

• Permettent de décrire le comportement d’une


instance d’une classe en fonction des messages
reçus
IFT2255 - Génie logiciel • Exemple: achat de billets
Diagrammes d’états attribution_sur_abonnement

annulation
Disponible Vendu

délai écoulé
Bruno Dufour
dufour@iro.umontreal.ca achat
Réservé
réservation

Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon

Principaux concepts 3 Principaux concepts 4

• État: État
• Décrit un moment de la vie d’une instance
• Une instance ne se trouve que dans un seul état à la
fois
• Toutes les instances d’une classe qui se trouvent dans
un même état réagissent de façon identique aux
événements • Marqueur d’état initial:
• Transition: événement / action
• Marqueur d’état final:
• Définit la réponse d’une instance, dans un état donné,
à un événement donné
• Événement: élément déclencheur de la transition
• Action: opération réalisée lorsqu’une transition est
exécutée

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Exemple - Fichier 5 Événements 6

• Peuvent être paramétrés


• Types d’événements
• Appel / Signal: op(p1:type, p2:type, …)
• Réception d’un message synchrone
write()

File()
Créé
open()
Ouvert
close()
• Changement: when(condition)
• Changement de valeur d’une condition
booléenne
• Temporel: after(timeInterval)
• Temps absolu atteint ou passage d’un certain
intervalle de temps

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal

Actions 7 Exemple 8

• Types d’actions
• Affectation: cible:=expression
• Appel / envoi de message: object.opname(arg, …)
• Synchrone
• Peut retourner une valeur retourner() / self.retourné()
Sur les
Emprunté
rayons
• Création d’instance: new Cname(arg, …) emprunter() / self.emprunté()

• Destruction d’instance: object.destroy()


• Séquence: action1; action2; …
• Divers: [ description]
• Décrite dans une autre langage

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon
Gardes 9 Gardes - exemple 10

• Une transition peut être conditionnelle à l’évaluation


d’une garde
• Expression conditionnelle: événement [garde]
Cette transition est importante pour
• Évaluée uniquement quand l’événement est marquer que retourner() est bel et bien un
message attendu et compris dans cet état.
déclenché
est_retourné(e)
• Si la garde est vraie, la transition est réalisée
est_retourné(e)
• Si la garde est fausse, la transition n’a pas lieu Emprunté
Sur les
rayons
est_emprunté(e) [dernier exemplaire]
• Lorsqu’un même événement est associé à plusieurs
transitions, une garde peut déterminer la transition à est_emprunté(e) [pas dernier exemplaire]

effectuer
• Les gardes associées à un même événement sur les
transitions sortantes d’un état donné doivent être
mutuellement exclusives

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon

Types de transitions 11 Transitions internes - exemple 12

• Transition externe
• Peut engendrer un changement d’état
• Transition interne
• Rattachée à un état
• N’engendre pas de changement d’état capsuleInsérée()/ Opération
clignoterBoutons()
• Transitions internes spéciales
En attente de formatSélectionné()
Disponible
sélection do / verserCafé()
exit / ejecterCapsule()
• Action d’entrée: entry/activité
• Action de sortie: exit/activité
• Activité non-instantanée: do/activité
‣ Peut-être interrompue
‣ Active une transition sortante lorsque terminée

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


Transitions internes - exemple 13 État composite 14

• État composé de sous-états (séquentiels ou concurrents)


• Lorsqu’un état composite est activé, un de ses sous-
enter [mot de passe invalide]
états est nécessairement activé

Saisie mot de passe


• Entrer et sortir d’un état composite
• Une transition entrante est implicitement conduite vers
entry / echoStar(); reset()
Transitions exit / resetEcho() son état initial
internes digit / handleCharacter()
• Une transition vers l’état final active implicitement une
transition sortante
enter [mot de passe valide] Transition
externe • Lorsqu’une transition entre/sort en traversant un ou
plusieurs états composites imbriqués, toutes les
Authentifié actions d’entrées/sortie sont exécutées
• Actions de sortie de l’état le plus interne en premier
• Actions d’entrées de l’état le plus externe en premier

Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon Bruno Dufour - Université de Montréal

État composite séquentiel - exemple 15 État historique 16

remise en
service Rouge
clignotant
• État historique: H
défaillance
• Pseudo-état qui permet de mémoriser le dernier
Fonctionnement normal sous-état actif d’un état composite

after(2min)
• Permet de restaurer l’état suite à une sortie
Rouge Vert temporaire d’un état composite
• Une transition qui a pour cible l’état historique
est équivalente à une transition qui a pour cible
after(2min)

le dernier état actif du composite


after(20sec)
Jaune

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal


État historique - exemple 17 État composite concurrent 18

Phase_active
Exit / facturer_client()

after(2 min) after(2 min)


Lustrage Lavage
after(4 min)
Séchage
• Un état composite peut être sous divisé en plusieurs
H
arrêt d’urgence états orthogonaux
reprise
arrêt d’urgence • Permet de modéliser des sous-états indépendants
Attente

after(2 min)

Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon Bruno Dufour - Université de Montréal

Concurrence - exemple 19 Exemple - État composite concurrent 20

Commande

annulé

paiement reçu émis


Facturé Payé

Prêt pour livré


livraison

traiter complété
Reçu En traitement

Bruno Dufour - Université de Montréal Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon
Exemple - Autre notation 21 Décomposition en sous-diagrammes 22

Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon Bruno Dufour - Université de Montréal Source: H. Sahraoui et J. Vachon

Exemple - Guichet bancaire 23

Source: uml-diagrams.org
Bruno Dufour - Université de Montréal

Vous aimerez peut-être aussi