• Aucun résultat trouvé

Diagramme d’états

N/A
N/A
Protected

Academic year: 2022

Partager "Diagramme d’états"

Copied!
5
0
0

Texte intégral

(1)

Julie Vachon, Hiver 2006

IFT2251 : Génie logiciel

Chapitre 4. Analyse orientée objets

Section 5. Diagramme d’états

Chap.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

(2)

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

(3)

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 exclusives

(4)

Chap.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

(5)

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

„

Si un diagramme d’état, pour un état donné E,

n’a pas de transition étiquetée par un événement

X, cela signifie que l’instance n’a pas à réagir à

cet événement dans cet état.

Références

Documents relatifs

Après, l’utilisateur a 2 minutes pour composer le numéro de l’appelé (correspondant). Le numéro composé doit être validé par le système. La ligne peut être libre ou

– information des personnels médicaux, paramédicaux et autres ; – prise de connaissance du déroulement du programme opératoire ; – organisation de son action avec les

3- Ne cessant d’améliorer notre commande, nous avons constaté qu’un phénomène d’oscillation de l’eau autour d’un niveau provoque de nombreux démarrage et arrêt

thaliana met en jeu trois types de gènes du développement (types A, B et C, selon les types de mutants chez lesquels ils ont été découverts). Leur expression détermine

[r]

Dans le cas d’un diagramme d’états-transitions simple (sans transition concurrente), il ne peut y avoir qu’un seul état actif à la fois.. Dans ce cas, les notions d’état actif

Dans le cas d’un diagramme d’états-transitions simple (sans transition concurrente), il ne peut y avoir qu’un seul état actif à la fois.. Dans ce cas, les notions d’état actif

• Il s’utilise dans l’analyse fonctionnelle pour décrire le déroulement d’un cas d’utilisation avec tous ses scénarios alternatifs en plus du scénario nominal.. • Ou