32
Statecharts • Décrit les changements d’état d’un objet en réponse à des evénements • Point focal : l’objet et ses changements d’états • Permet un hiérarchisation des états afin d’éviter une explosion combinatoire d’états

Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Embed Size (px)

Citation preview

Page 1: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Statecharts

• Décrit les changements d’état d’un objet en réponse à des evénements

• Point focal : l’objet et ses changements d’états

• Permet un hiérarchisation des états afin d’éviter une explosion combinatoire d’états

Page 2: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Concepts

• Etats (simples ou composites)

• Transitions

• Actions

• Evénements

Page 3: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Etat et transitions

Etat

nom

Activités

Sous-état

Start/Etat initial

Stop/Etat final

NomEvénement [Garde] / Action

Page 4: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Evénements et gardes

• nomEvénement (param1:type, param2:type,…)– Ex: allumedLed()

• [Garde] : expression Booléene – Ex: [ageCapitaine>50]

• Action– Pseudo code– Ex. solde = solde – débit

• Action interne à un état– ActionLabel/Action

• Action Label : entry, do, exit- Ex. : do/calculateAverage(x:array)

Page 5: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Exemple de statechart

Vérification

EnAttente

Annulé

Livré

EnLivraison[resteArticleàVérifier]

[tousArticlesVérifiés&&ArticlesManquants]

[tousArticlesVérifiés&&tousArticlesDisponibles]

do/ vérifierarticle

ArticleReçu()[ResteArticlePasdeStock] annulation()

do/démarrerlivraison

annulation()

livraison()ArticleReçu()[tousArticlesDisponibles]

Page 6: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Etats Imbriqués

• Concurence et syncronisation

VérifClient

Verification

EnAttente

Livraison

VérifTerminée

EnCommande

Page 7: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Exercice 1 : formation d’un contrat

Dessinez un diagrammes d’état/transition résumant les états possibles d’un objet “contrat” tel que décrit dans l’énnoncé suivant.

Un ensemble de personnes décident d’établir un contrat. Pour ce faire elles rédigent un projet par itération successive. Le contrat est ensuite informellement accepté par les parties, et devient ce que l’on appelle un pré-accord. A ce stade il peut toujours être l’objet de modification et revenir à l’état de projet. Une fois le pré-accord définitivement établi, le contrat est signé par les parties. Dès ce moment les partenaires sont liés. Une fois signé le contrat peut être rendu exécutoire par une décision d’une des parties. Un contrat en execution peut faire l’objet de discussions qui sont réglées par un arbitre désigné à cet effet. Le contrat une fois exécuté prend fin.

Page 8: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Proposition Solution 1

Page 9: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Exercice 2 : montre digitale

• Ma montre affiche l’heure, si j’appuie 2X sur le boutton 1, la montre passe en mode “modification”. Chaque pression sur le boutton 2, incrémente l’heure d’une unité. Si j’appuie encore un fois sur le boutton 1, je peux régler les minutes de la même façon que les heures. Si j’appuie une quatrième fois sur le boutton 1, la montre affiche à nouveau l’heure courante.

Button1

Button2

Page 10: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Proposition Solution 2

Page 11: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Exercice 3 : montre digitale plus avancée

• Lors du réglage de l’heure ou des minutes lorsque j’appuie sur le boutton 1 plus de deux secondes, les heures ou les secondes avancent très rapidement jusqu’à ce que je relâche la pression

• On ajoute un bouton 3 qui permet de rétro-éclairer l’écran LCD

Button1

Button2

Button3

Page 12: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Proposition Solution 3

Page 13: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Exercice 4 : cabine téléphonique

• Modélisez le fonctionnement d’une cabine téléphonique

Page 14: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Proposition de Solution 5

Page 15: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Resumé

• Use case

• Diagramme d’activités

• Diagramme de classes

• Diagramme d’interactions

• Statecharts

Page 16: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Use cases: concepts

• Acteur : entités externes au système qui dialoguent avec lui

• Use case : description de la fonctionnalité du système du point de vue d’utilisateur

• Diagramme de cas d’utilisation : illustre les liens entre les acteurs et les différents cas d’utilisation.

Page 17: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Structurer les use cases

• Les relations “extend” et “include”– “Extend” : un cas

d’utilisation X étend un cas d’utilisation Y lorsque le cas d’utilisation X peut être appelé au cours de l’exécution du cas d’utilisation Y

– “Include” : un use case est constitué de “sous” use cases.

• La généralisation– Crée une hiérarchie entre

acteurs ou use cases

Enregistrer client

Responsable Clientèle

Enregistrer la commande

<<extend>>

Consulter solde

Client

Retirer argent

Authentifier client

<<include>>

<<include>>

Page 18: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Le but du diagramme d’activité

• Diagramme d’activité est utilisé pour:– Modéliser un workflow dans un use case ou

entre plusieurs use cases.– Spécifier une opération (décrire la logique

d’une opération)

• Le diagramme d’activité est le plus approprié pour modéliser la dynamique d’une une tâche, d’un use case lorsque le diagramme de classe n’est pas encore stabilisé.

Page 19: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Notion du diagramme d’activité

Diagramme d’activité = • ensemble d’activités liés par:

– Transition (sequentielle)– Transitions alternatives (conditionnelle)– Synchronisation (disjonction et conjonctions

d’activités)– Itération

• + 2 états: état de départ et état de terminaison• Swimlanes: represente le lieu, le responsable

des activités.

Page 20: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Notion du diagramme d’activité

•Etat de départ

•Etat de terminaison

•Transition

•Transition Alternative

[ ] [ ]

Page 21: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Notion du diagramme d’activité

Synchronisation disjonctive et conjonctive

Page 22: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Notion du diagramme d’activité

Itération

Page 23: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Notion du diagramme d’activité

Swimlanes

Page 24: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Commander un Produit: Solution possible

Page 25: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Diagramme de classes

• Classe• Attribut• Méthode (CRUD : create, read, update, delete Ex : DB

schemas) • Association

– Généralisation, aggrégation, composition– Ad Hoc

• Rôle-Cardinalité

Page 26: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Diagramme de classe - ExempleENREGISTREUR

+Code:String+Marque:String+Modèle:String+Prix:Real +Année de construction:String+Longueur:String+Hauteur:String+Largeur:String+Couleurs:String+Position:Int+Volume:Int+Poids:Real

+Enregistrer()+Ecouter()+Stopper()+MarquerPause()+Avancer(Vitesse)+Rembobiner(Vitesse)+AfficherPosition()+Ejecter()+RéglerVolume(Volume)

CASSETTE

+Etiquette:String+MarqueCass:String+ModèleCass:String+LongCass: type=hh:mm+TypeCass:String+PositionCass:Int

utilise

0..11..*

est utilisablesur

ENREGISTREMENT

+DateEnr:Date+HeureEnr:type=hh:mm:ss+LongEnr:Int

contient *

0..1est contenu dans

MESSAGE

+AuteurMess:String+NoTelAuteurMess:String+SujetMess:String

Page 27: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Diagramme d’interaction

• Modéliser comment les objets communiquent entre eux

• Deux types de diagrammes sémantiquement équivalents:

–Diagramme de Séquence–Diagramme de Collaboration

Page 28: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Diagramme de séquence

1. La message1() est envoyé seulement si la condition specifiée dans la guard (entre brackets) est vraie.

2. Une branche. Le sender envoie soit le message2() soit le message3(). Les conditions de ‘guard’ sont exclusives.

3. L’Itération. Le sender envoie la message4() tant que la condition est vraie.

4. “Pour chaque“. Si le receiver est une collection d’objets, envoyer le message à tous ces objets.

5. Grouping. Les activités dans la boîte ont lieu seulement si le test est vrai. L’asterisque indique l’itération.

Page 29: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Simple Watch

A partir du diagramme de classe ci-dessus

1. Rédigez un diagramme de séquence pour modéliser un scénario où un utilisateur voudrait régler l’heure (particulièrement les minutes) sur sa montre.

En appuyant 2X sur le bouton 1 il accède au réglage des minutes (heure clignote puis minute clignote). Ensuite avec le bouton 2 (sans relâcher le bouton) il incrémente les minutes, le LCD display est rafraîchi. En appuyant sur le bouton 1 un autre fois l’heure est enregistrée et l’affichage s’arrête de clignoter.

2. Rédigez un diagramme de collaboration à partir du diagramme de séquence obtenu

Button 1

Button 2

Page 30: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Simple watch: Diagramme de Séquence

*[B2..state = Pushed]

Page 31: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Diagramme de collaboration

• Deuxième forme du diagramme d’interaction

• Différence avec diagramme de séquence:– Pas de dimension explicite du temps (vue

plus structurelle que procédurale)– Montrer les liens entre des objets de façon

plus explicite

Page 32: Statecharts Décrit les changements détat dun objet en réponse à des evénements Point focal : lobjet et ses changements détats Permet un hiérarchisation

Simple Watch: Diagramme de Collaboration