Julie Vachon, Hiver 2006
IFT2251 : Génie logiciel
Chapitre 4. Analyse orientée objets
Section 5. Diagramme d’étatsChap.4, Sect.5, p.2 Copyrights Julie Vachon, 2006
Diagramme d’états
1.
Introduction
2.
Principaux concepts
3.
Actions d’entrée et de sortie
4.
Gardes
5.
Types de transitions
6.
État composite (séquentiel et concurrent)
7.
Représentation des comportements valides
Chap.4, Sect.5, p.3 Copyrights Julie Vachon, 2006
4.5.1. Introduction
Permet de décrire le comportement d’une instance d’une classe en fonction des des messages reçus
Peut également être utilisé pour décrire l’exécution d’une opération, d’un cas d’utilisation, etc.
Disponible
Verrouillé
Vendu attribué_sur_abonnement
achète verrouiller
déverrouiller délai écoulé
Diagramme d’état d’un billet de spectacle à vendre sur Internet
Chap.4, Sect.5, p.4 Copyrights Julie Vachon, 2006
4.5.2. Principaux concepts
État
Transition
Marqueur d’état initial
Nom_état
événement / action
Chap.4, Sect.5, p.5 Copyrights Julie Vachon, 2006
Principaux concepts
État
Décrit un moment de la vie d’une instance
Une instance ne se trouve que dans un seul état à la fois
Un état est généralement décrit par un nom
Toutes les instances d’une classe qui se trouvent dans un même état réagissent de façon identique aux événements
Les instances qui se trouvent dans un état donné, à un moment donné
Ont des valeurs d’attributs similaires Attendent un événement particulier Exécutent une activité particulière
En UML, il existe différents types d’état : simple, concurrent, composite, etc.
Nom_état
Chap.4, Sect.5, p.6 Copyrights Julie Vachon, 2006
Principaux concepts
Transition
Une transition (sortante) définit la réponse d’une instance, dans un état donné, à un événement donné
Les transitions sont étiquetées par un événement et (optionnellement) par une action
Événement : tout ce qui survient et peut affecter une instance (élément déclencheur de la transition)
Action : opération réalisée lorsqu’une transition est réalisée
Emprunté Sur les rayons
emprunter() / livre.emprunté(self) retourner() / livre.retourné(self)
Diagramme d’état pour la classe Exemplaire_de_livre événement / action
Chap.4, Sect.5, p.7 Copyrights Julie Vachon, 2006
Principaux concepts
Types d’événements
Un événement peut être paramétré
after(time) Temps absolu atteint ou passage d’un certain
intervalle de temps, peut signaler le temps écoulé depuis l’entrée dans un état donné Temps
when(exp) Changement de valeur d’une condition
booléenne, satisfaction soudaine de cette condition, condition fausse qui devient vraie Changement
op(p1:type, p2:type, …) Réception d’un message synchrone (pour
lequel l’émetteur attend une réponse), invocation d’une opération Appel / Signal
Syntaxe Description
Type d’événement
Chap.4, Sect.5, p.8 Copyrights Julie Vachon, 2006
Principaux concepts
Types d’actions
Les actions peuvent prendre des arguments
action1; action2; … Séquence d’action
Séquence
[ description ] Action décrite dans un autre langage
Divers
object.destroy() Destruction d’une instance
Destruction
new Cname(arg1, arg2, …) Création d’une nouvelle instance
Création
opname(arg1, arg2, …) object.opname(arg1, arg2, …) Invocation (synchrone) d’une opération
d’un objet, peut retourner une valeur Appel / Envoi
de message
cible := expression Assigne une valeur à une variable
Affectation
Syntaxe Description
Type d’action
Chap.4, Sect.5, p.9 Copyrights Julie Vachon, 2006
4.5.3. Actions d’entrée et de sortie
Certaines actions peuvent être rattachées à un état au lieu d’une transition
Action d’entrée : exécutée chaque fois qu’on entre dans l’état
Notation : entry / action
Action de sortie : exécutée chaque fois qu’on sort de l’état
Notation : exit / action
Emprunté exit/livre.retourné(self)
Sur les rayons exit/livre.emprunté(self) emprunter()
retourner()
Diagramme d’état d’un exemplaire de livre Ordre d’exécution
des actions ?
Chap.4, Sect.5, p.10 Copyrights Julie Vachon, 2006
Actions d’entrée et de sortie
ETAT_2 entry/ a2()
exit/b2()
ETAT_1 entry/ a1()
exit/b1() evA / c1()
evB / c2()
Ordre d’exécution des
actions ?
Chap.4, Sect.5, p.11 Copyrights Julie Vachon, 2006
4.5.4. Gardes
Une transition peut être conditionnelle à l’évaluation d’une garde
Si la garde est vraie, la transition est réalisée
Si la garde est fausse, la transition n’a pas lieu
Notation : événement [garde]
Ne peut être emprunté
Peut être emprunté est_emprunté(e) [dernier exemplaire]
est_retourné(e)
est_retourné(e)
est_emprunté(e) [pas dernier exemplaire]
Diagramme d’état d’un livre
Cette transition est importante pour marquer que retourner() est bel et bien un message attendu et compris par cet automate dans cet état.
Chap.4, Sect.5, p.12 Copyrights Julie Vachon, 2006
Gardes
Garde
Expression conditionnelle
Évaluée uniquement quand l’événement est déclenché Peut contenir des attributs de l’instance ou des paramètres de
l’événement associé
Lorsqu’un même événement est associé à plusieurs transitions, une garde (condition) peut être ajoutée pour préciser le contexte et déterminer la transition à effectuer
Les gardes associées à un même événement sur les
transitions sortantes d’un état donné, doivent être
mutuellement exclusivesChap.4, Sect.5, p.13 Copyrights Julie Vachon, 2006
4.5.5. Types de transitions
Transition externe: transition standard qui engendre un changement d’état et toutes les actions correspondantes (actions d’entrée et de sortie, ainsi que celles de la transition)
Transition interne : transition qui n’engendre pas de changement d’état et ne déclenche que les actions associées à cette transition (pas les actions d’entrée et de sortie, cf. figure ci-dessous)
Transition de complétion : transition qui n’est pas activée par un événement; est implicitement activée lorsque est atteint la fin d’un flux d’activités
Saisie mot de passe
entry /set echo to star; password.reset() exit /set echo normal
digit / handle character help / display help()
clear
Transitions internes
Transition externe
Chap.4, Sect.5, p.14 Copyrights Julie Vachon, 2006
4.5.6. État composite
État « spécialisé » composé de plusieurs sous-états
Sous-états séquentiels
Sous-états concurrents
Chap.4, Sect.5, p.15 Copyrights Julie Vachon, 2006
État composite séquentiel
Identification
Sélection choisir(siège) / ajouter_à_sélection(siège)
Confirmation
Vente Entry / vendre()
[identification_réussie]/
Initialiser_sélection()
clic_acheter clic_recommencer
clic_confirmer [identification_échouée]
Achat d’un billet Exit / éjecter_carte()
inactif insérer_carte
clic_annuler
Chap.4, Sect.5, p.16 Copyrights Julie Vachon, 2006
État composite
Lorsqu’un état composite est activé, un de ses sous- états est nécessairement activé
Entrer et sortir d’un état composite
Une transition entrant dans un état composite est implicitement conduite vers son état initial
Une transition vers l’état final d’un état composite active implicitement une transition de complétion sortant de l’état composite
Lorsqu’une transition entre/sort en traversant un ou plusieurs états composites imbriqués, toutes les 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
Chap.4, Sect.5, p.17 Copyrights Julie Vachon, 2006
État composite (concurrent)
Labo 1
Projet de semestre
Examen final lab_terminé
[note >= 60]
Cours non terminé
Labo 2 lab_terminé
projet_terminé
réussite
Cours réussi
Cours échoué échec
[note < 60]
Diagramme d’état d’un cours
Chap.4, Sect.5, p.18 Copyrights Julie Vachon, 2006
État composite concurrent
Autre notation possible
Labo 1
Projet de semestre
Examen final
lab_terminé [note >= 60]
Cours non terminé
Labo 2 lab_terminé
projet_terminé
réussite
Cours réussi
Cours échoué échec
[note < 60]
Diagramme d’état d’un cours
fork join
Chap.4, Sect.5, p.19 Copyrights Julie Vachon, 2006
Référence sur un sous-diagramme d’état
Attendre commande
commande d’aide Include Run Include Help commande
d’exécution
entry / afficher écran d’aide exit / effacer écran d’aide
question / show réponse Help
quitter
Chap.4, Sect.5, p.20 Copyrights Julie Vachon, 2006
4.5.7. Représentation des comportements valides
Un diagramme d’états doit représenter tous et seulement les états et les transitions valides des instances d’une classe