Vous êtes sur la page 1sur 12

UML : DIAGRAMME DETATS

Le modle dynamique reprsente lvolution du systme au cours du temps en raction aux vnements externes. Lvolution du systme est dfinie par lvolution (cycle de vie) des objets. Le formalisme des diagrammes dtats est celui des automates. Le concept dautomate est un concept de base en informatique. Citons le livre de Hopcraft et Ullman paru en 1979 Introduction Automata theory . Les domaines dapplication sont la programmation (spcification de programme), la compilation, et les rseaux (spcification de protocole de communication). La notation utilise est celle des statechart conus en 1988 par David Harel. Elle a t reprise dans la mthode OMT. Nous ne prsentons dans ce cours quune petite partie de cette notation qui est trs riche. Les diagrammes dtats sont bass sur 3 notions : tat dun objet (situation dun objet dfinie par ses proprits) vnement comportement des objets (leurs actions et leurs activits). I Etat Un tat dun objet est une situation stable dans la vie de lobjet o il effectue une activit ou il attend un vnement. Un tat est caractris par : les valeurs des rubriques de lobjet lexistence des associations/liens de cet objet aux autres objets. On considre uniquement les tats caractristiques dun objet (en prenant le point de vue du systme tudi). Extrait du diagramme de classe modlisant la gestion des emprunts de DVDs la bibliothque A . Adhrent 0..5 Emprunt 0..1 - num_adh : int <<id>>

DVD - num_DVD : int <<id>> - date_emprunt : Date -delaiMaxEmprunt : int = 21

Un objet de la classe DVD a les tats suivants : disponible, emprunt, non rendu. Ces 3 tats sont trs importants du point de vue du systme tudi : le DVD est dans la bibliothque la disposition des adhrents, le DVD nest plus dans la bibliothque : il sagit dun emprunt en

UML, C. Johnen

IUT Bordeaux 1, Ver 1

cours ou il sagit dun DVD non rendu (la bibliothque effectue des actions pour essayer de rcuprer le DVD). Ltat disponible est dfini par : date_emprunt a pour valeur NULL (non dfini) et lobjet na pas dassociation/lien de type Emprunt . Ltat emprunt est dfini par date_emprunt < date_jour - delaiMaxEmprunt et lobjet a une association de type Emprunt . Ltat non rendu est dfini par date_emprunt date_jour - delaiMaxEmprunt et lobjet a une association de type Emprunt . Un objet est toujours dans un tat connu. A un instant donn, un objet est dans un et un seul tat. Un DVD est soit disponible, soit emprunt ou non rendu. Les tats sont stables : un objet est dans un tat donn pour un certain temps (une dure non ngligeable) relativement lchelle de temps du systme tudi. Un objet de la classe Facture a les tats suivants : enregistre, impaye et paye. Cest trois tats sont trs importants de point de vue du systme tudi (entreprise C) : la facture a t envoye et on attend le paiement, la facture na pas t paye dans le dlai et la facture a t paye. Ltat enregistre est dfini par date_relance = NULL et date_paiement = NULL. Ltat Impaye est dfini par date_relance NULL et date_paiement = NULL. Ltat Paye est dfini par date_paiement NULL. Reprsentation graphique des tats de la classe Facture : 1. Enregistre 2. Impaye

3. Paye

Dans certain cas, les tats des objets dune classe ne peuvent pas tre caractriss par les valeurs des rubriques de lobjet ou lexistence des associations de cet objet aux autres objets. Dans ce cas-l, la classe a une rubrique supplmentaire etat_classe dont la valeur sera ltat de lobjet. Un four a deux tats : en_marche et inactif. Ces deux tats sont enregistrs au travers de la rubrique etat_four. Les valeurs des autres rubriques ne peuvent pas aider dterminer ltat du four. On a donc ajout une rubrique supplmentaire : etat_four. Four - etat_four : Boolean - mode_cuisson : String - temps_minuteur : Integer = 0

UML, C. Johnen

IUT Bordeaux 1, Ver 1

Si un objet passe par plusieurs tats, on dit que lobjet a un cycle de vie. Tous les objets dune mme classe ont des cycles de vie qui ont la mme structure. Cette structure est dfinie par le diagramme dtats associ la classe. Il y a des classes sans diagramme de classe : leurs instances nont pas de cycle de vie. Seule une minorit de classes ont des cycles de vie. Un diagramme dtats est toujours associ une classe. Un changement dtat a pour origine un vnement (appel dune mthode de la classe). Lexcution dune mthode ne change pas toujours ltat de lobjet. II Transition/Evnement Une transition est le passage dun tat un autre tat. Une transition est reprsente par une flche de ltat dorigine au nouvel tat. Une transition est tiquete par lvnement qui provoque le changement dtat. Toute transition est tiquete par un vnement (nom dune mthode) Ev1 2. Etat2

1. Etat1

I Evnement Il y a 5 types dvnements : Les vnements externes : vnement produit par un acteur et destin un objet du systme (instance dune classe). Un vnement externe correspond une opration/mthode de la classe de lobjet destinataire. Le nom dun tel vnement est prfix par ARR_. Exemple : ARR_paiement, ARR_dde_DVD, ARR_commande. Un vnement externe peut tre ltiquette dune transition dans le diagramme dtats associe la classe des objets qui reoivent cet vnement. Les vnements rsultats : vnement produit par un objet du systme destination dun acteur externe. Le nom dun tel vnement est suffix par ENV . Exemple : ENV_facture, ENV_relance Un vnement rsultat ne peut pas tre tiquette dune transition dans un diagramme dtats. Les vnements temporels : vnement signalisant larrive dune chance temporelle ; ils sont gnrs la fin dun dlai dattente ou larrive dune date prcise (date qui dclenche lexcution de tche par le systme). Ces vnements sont non porteur dinformation : ils nont pas dargument. Un vnement temporel correspond une opration/mthode de la classe de lobjet destinataire. Le nom dun vnement temporel est par exemple : ARR_fin_dlai_de_paiement(), ARR_fin_dlai_livraison(), ARR_date_facturation(). Un vnement temporel peut tre ltiquette dune transition dans le diagramme dtats associe la classe des objets qui reoivent cet vnement.

UML, C. Johnen

IUT Bordeaux 1, Ver 1

Les vnements modificateurs : vnement produit par un objet du systme destination dun autre objet du systme. Un vnement modificateur correspond une opration/mthode de la classe de lobjet destinataire. Il ny a pas de convention sur le nom dun vnement modificateur. Un vnement modificateur peut tre ltiquette dune transition dans le diagramme dtats associe la classe des objets qui reoivent cet vnement. Les vnements propres : vnement gnr par un objet pour lui-mme Un vnement propre peut tre ltiquette dune transition dans le diagramme dtats associe la classe des objets qui reoivent cet vnement. Un vnement propre correspond une opration/mthode prive de la classe de lobjet. Extrait du diagramme dtats de la classe Compte (vnement tre_a_jour est un vnement propre). 2. Dbiteur on ARR_virement\ maj solde; si solde > 0 alors tre_a_jour()[this:Compte] tre_a_jour 1. A jour

tre_dbiteur

Extrait du diagramme de classes Compte -numCompte <<id>> -solde : float -tatCompte : String +ARR_Virement (montant:int):void -tre_a_jour() :void -tre_dbieur() : void

UML, C. Johnen

IUT Bordeaux 1, Ver 1

II.a Evnements particuliers Dans le diagramme suivant, E1 est un vnement crateur. Il cre dune instance de la classe, instance qui est dans l'tat1 : Ev1 1. Etat1

Une classe peut avoir plusieurs vnements crateurs et plusieurs tats initiaux (premiers tats dun objet). Ev1 1. Etat1

Ev2 2. Etat2

Dans le diagramme suivant, E3 est un vnement destructeur. Son occurrence dtruit l'objet (seulement, si il tait dans Etat3). Ev3 1. Etat3

Une classe peut avoir plusieurs vnements destructeur . II.c Garde sur les transitions

1. Etat1

Ev1[c1]

2. Etat2

Daprs lextrait du diagramme dtats prcdant : de ltat1, un objet passe ltat2 si et seulement si Lvnement Ev1 a eu lieu et La condition c1 est satisfaite. ARR_chaleur [t]

1. salle ferme sans climatisation et chauffage

2. salle climatise

ARR_chaleur [hiver] 3. salle avec fentre ouverte

UML, C. Johnen

IUT Bordeaux 1, Ver 1

II.d Proprits des vnements Autonomie des objets : un objet rcepteur dun vnement ragit ou non lvnement en fonction de son tat. Dans le cas du diagramme dtats suivant, si le four est dans ltat en marche, il ignore lvnement ARR_mise_marche ; vnement pris en compte lorsquil est dans ltat inactif. Il est donc inutile darrter lhorloge lorsquun objet de la classe Four passe dans ltat four inactif car lvnement produit par lhorloge sera ignor.

1. four en marche ARR_arret ARR_fin_delai_MA

ARR_mise_marche 2. four inactif

Asynchronisme des objets : Lobjet metteur dun vnement continue ses traitements indpendamment des traitements raliss par lobjet rcepteur de lvnement. Lobjet metteur dun vnement ne prjuge pas des traitements que lobjet rcepteur va raliser et nattend aucun retour de lobjet rcepteur. Lmission dun vnement peut tre compar lenvoi dune lettre : on est sre que le destinataire recevra, lira et traitera la lettre ; mais on ne sait pas quand ; et durant ce temps lmetteur continue ses activits. Un message synchrone peut tre compar avec un coup de fils. La personne qui appelle attend au bout du fils que le destinataire rponde et que la communication soit termine avant de reprendre ses autres activits. Un diagramme dtats est dterministe : il ny a pas en sorti dun mme tat deux transitions ayant la mme tiquette (dclenches par le mme vnement).

1. Etat1

Ev1

2. Etat2

Ev1 3. Etat3

UML, C. Johnen

IUT Bordeaux 1, Ver 1

II.e Cohrence avec le diagramme de classe Extrait du diagramme dtats de la classe DVD dans le cadre de lanalyse des emprunts la bibliothque A . Ce diagramme comprend plusieurs transitions avec le mme vnement dclencheur (ARR_retour_DVD). ARR_dde_DVD 1. disponible ARR_destruction ARR_retour_DVD ARR_fin_delai_emprunt 3. non rendu Un vnement li une transition du diagramme dtats de la classe A est associ une opration/mthode de la classe A (apparaissant dans la dfinition de la classe A dans le diagramme de classes). Donc le diagramme de classes, une fois complt daprs lextrait du diagramme dtats de la classe DVD est : 0..5 Emprunt 0..1 ARR_retour_DVD 2. emprunt

DVD - num_DVD : int <<id>> - date_emprunt : Date -delaiMaxEmprunt : int = 21

Adhrent - num_adh : int

+ ARR_destruction() + ARR_fin_delai_emprunt() + ARR_dde_DVD() + ARR_retour_DVD() +ARR_nv_DVD()

III Activits/Traitements Les diagrammes dtats seraient de peu dutilit sils se bornaient dcrire la structure du cycle de vie des objets sans dtailler laspect comportemental des objets : ce que font les objets en rponse aux vnements. Le comportement dun objet prend deux formes : Lactivit opration associe un tat qui ncessite un certain temps et qui peut tre interrompue (terme clef do) Les activits comprennent : des oprations continues comme laffichage des images prises par une camra de surveillance ou comme le contrle dune sonnerie de tlphone. des oprations squentielles qui se terminent par elles-mmes comme la gestion dun dplacement de robot (activit qui se terminera lorsque le robot aura fini son dplacement) ou comme lexcution de calcul important. Larrive dun vnement qui doit tre prise en compte par lobjet interrompt son activit en cours.
UML, C. Johnen

IUT Bordeaux 1, Ver 1

Les traitements ensemble dactions qui ne peuvent pas tre interrompues. A chaque tat, on peut associer 3 types de traitement. Traitement en entre : ensemble dactions excutes par tout objet qui rentre dans cet tat (terme clef : entry) Traitement en sortie : ensemble dactions excutes par tout objet qui sort de cet tat (terme clef : exit) Traitement associ un vnement : ensemble dactions excutes par tout objet qui reoit cet vnement (terme clef : on nom de lvnement ). III.a Illustration du mcanisme dexcution des actions et des activits Ev1 2. Etat2 entry / act5 entry / act6 exit / act7 exit / act8 do / activit2

1. Etat1 entry / act1 entry / act2 exit / act3 exit / act4 on Ev3 / act20 do / activit1

Extrait du diagramme dtats de la classe A Daprs lextrait du diagramme dtats de la classe A prcdent, un objet de la classe A dans ltat Etat1 lorsquil reoit lvnement Ev1 : arrte lactivit activit1, excute les actions act3 et act4, (le traitement associ la sortie de ltat Etat1) change dtat : il quitte l'Etat1 et va dans lEtat2. Excute act5 et act6 (le traitement associ lentre dans ltat Etat2), commence lactivit activit2. Un objet de la classe A dans ltat Etat1 excute laction act20 lorsque la mthode Ev3 est excute. 3. Etat3 entry / act9 entry / act10 exit / act11 exit / act12 do / activit3 Extrait du diagramme dtats de la classe B Daprs lextrait du diagramme dtats de la classe B prcdant, un objet de la classe B dans ltat Etat2 lorsquil reoit lvnement Ev2 excute les actions suivantes : arrt de l'activit3, act11, act12, act9 et act10, commencer l'activit3 Il s'agit du traitement associ la sortie et le traitement associ lentre de ltat Etat3. Les traitements ne peuvent pas tre interrompus : un objet finit un traitement avant de traiter les vnements qui sont en attente. Ev2

UML, C. Johnen

IUT Bordeaux 1, Ver 1

Un objet effectue un seul traitement/activit la fois. Plusieurs objets (de la mme classe ou non) peuvent effectuer des traitements et/ou activits en parallle. Exemple : deux objets de la classe A peuvent traiter chacun indpendamment un vnement de type Ev1 (il ne s'agit pas du mme vnement, mais de deux vnements de mme type) pendant quun objet de la classe B traite un vnement Ev2. Le diagramme suivant est le diagramme dtats de la classe Four dans le cadre de la modlisation du fonctionnement dun four micro-onde. Notons que les vnements ARR_chgt_mode, ARR_chgt_minuteur ne provoquent pas de changement dtat; mais, ncessitent un traitement particulier qui est possible quel que soit ltat du four ; cest pourquoi, les actions excuter sont prcdes de la clef on nom_eve . 1. four en marche entry / maj etat_four entry / dde_temporisation_ENV [ :HORLOGE] on ARR_chgt_mod / maj mode_cuisson on ARR_chgt_minuteur / maj temps_minuteur

ARR_fin_delai_MA ARR_mise_marche ARR_arret

2. four inactif entry / maj etat_four entry / information_arret_ENV [ :UTILISATEUR] on ARR_chgt_mod / maj mode_cuisson on ARR_chgt_minuteur / maj temps_minuteur Un traitement est une srie dactions. III.a actions Il y a 6 types dactions : Cration dune instance dune classe (dun objet) : crer inst. nom de la classe . Exemple : crer inst. DVD. Vrifiez que la classe est bien une classe du diagramme de classes. Cration dune instance dune association. Syntaxe : crer inst. de lass. nom de lassociation Exemple : crer inst. de lass. Emprunt. Vrifiez que lassociation est dans le diagramme de classes. Dtruire une instance dune association. Syntaxe : dtruire inst. lass. nom de lassociation Exemple : dtruire inst. lass. Emprunt. Vrifiez que lassociation est dans le diagramme de classes. Dtruire une instance dune classe (objet). Syntaxe : dtruire nom de la classe Exemple : crer dtruire DVD.
UML, C. Johnen

IUT Bordeaux 1, Ver 1

Vrifiez que la classe est bien une classe du diagramme de classes. Mise jour de la valeur des rubriques dune classe ou dune association. Syntaxe : maj nom de la rubrique Exemple : maj date_emp = NULL ; maj mode_cuisson. Vrifiez quil sagit bien des rubriques dune classe ou dune association (attention au nom des rubriques). Effectuer des calculs et diverses oprations (dont le calcul de valeur de rubriques de nature code ) Exemple : calcul et maj num_DVD ; calculer le total de la facture ; choisir la voiture loue. Gnrer des vnements. Syntaxe : nom de lvnement [type du destinataire] (le type du destinataire est dans le format : nom_objet :nom_classe ou nom_objet :nom_acteur . Exemple : ENV_relance [ :ADHERENT], ENV_ information_pret [ :ADHERENT], a_detruire [lui_mme :Client], virement[ :Compte Bancaire] Vrifiez que le destinataire peut recevoir lvnement : si le destinataire est un objet, lvnement doit tre une opration/mthode de sa classe. Les vnements destination des acteurs externes peuvent demander une prparation (consultation de la base de donnes). Si on ne veut pas dtailler lensemble des oprations ncessaires lenvoi de lvnement (dition dun document) alors on regroupe lensemble de ces oprations sous le terme : prparer lenvoi de lvnement xxx ou prparer lvnement xxx envoyer.

IIIa.1 Exemple bibliothque A DVD - num_DVD : int <<id>> - date_emprunt : Date -delaiMaxEmprunt : int = 21 + ARR_nv_DVD() :void + ARR_dde_DVD(ad :ADHERENT) :void + ARR_retour_DVD() : void + ARR_fin_delai_emprunt() : void + ARR_destruction() : void 0..1 Emprunt 0..5 Adhrent - num_adh : int<<id>>

Notons que lopration/mthode ARR_dde_DVD a besoin dun paramtre, un objet de la classe Adhrent , pour crer lassociation Emprunt avec ladhrent emprunteur. En accord avec le diagramme dtats de la classe DVD, le diagramme de contexte statique de la gestion des emprunts la bibliothque A est :

gestion des emprunt la bibliothque A : ADHERENT

: BIBLIOTHECAIRE <<actor>> : HORLOGE

UML, C. Johnen

10

IUT Bordeaux 1, Ver 1

Voici le diagramme dtats de la classe DVD dans le cadre de lanalyse de la gestion des emprunts la bibliothque A . 0. Enregistr ARR_nv_DVD entry / calculer num_DVD entry / crer inst. DVD entry / maj date_emprunt = NULL

ARR_dde_DV D 1. disponible entry / dtruire inst. de lass. Emprunt entry / maj date_emprunt = NULL ARR_destruction

ARR_dde_DVD

ARR_retour_DVD

2. emprunt entry / crer inst. de lass. Emprunt entry / maj date_emprunt entry / prparer lenvoi de information sur le prt entry / ENV_information_prt [:ADHERENT] ARR_retour_DVD

ARR_fin_delai_emprunt 3. non rendu entry / prparer lvnement relance entry / ENV_relance [:ADHERENT]

Notons que nous avons ajout un tat (0. Enregistr). En entre de cet tat, les actions ncessaires la cration dune instance de DVD sont excutes. Ces actions sont excutes une fois dans la vie dun objet. Alors que les actions excutes en entre de ltat disponible sont excutes chaque retour du DVD la bibliothque.

UML, C. Johnen

11

IUT Bordeaux 1, Ver 1

IIIa.2 Exemple four micro_onde En accord avec le diagramme dtats de la classe Four , le diagramme de contexte statique du fonctionnement dun four micro-onde est : <<actor>> : HORLOGE

Gestion du four

: UTILISATEUR

En accord avec le diagramme dtats de la classe Four , le diagramme de classe modlisant du fonctionnement dun four micro-onde est : Four - etat_four : boolean - mode_cuisson : String - temps_minuteur : int + ARR_mise_marche() : void + ARR_arret() : void + ARR_fin_delai_MA() : void + ARR_chgt_mode (mode : String) : void + ARR_chgt_minuteur (temps : int) : void

UML, C. Johnen

12

IUT Bordeaux 1, Ver 1