Statecharts Dcrit les changements dtat dun objet en
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
Concepts • • Etats (simples ou composites) Transitions Actions Evénements
Etat et transitions nom Activités Etat Sous-état Start/Etat initial Stop/Etat final Nom. Evénement [Garde] / Action
Evénements et gardes • nom. Evénement (param 1: type, param 2: type, …) – Ex: allumed. Led() • [Garde] : expression Booléene – Ex: [age. Capitaine>50] • Action – Pseudo code – Ex. solde = solde – débit • Action interne à un état – Action. Label/Action • Action Label : entry, do, exit 1. Ex. : do/calculate. Average(x: array)
Exemple de statechart [reste. ArticleàVérifier] Vérification [tous. Articles. Vérifiés&& tous. Articles. Disponibles] do/ vérifier article [tous. Articles. Vérifiés&& Articles. Manquants] Article. Reçu() [tous. Articles. Disponibles] En. Attente Article. Reçu() [Reste. Article. Pasde. Stock] annulation() Annulé En. Livraison do/démarrer livraison() Livré
Etats Imbriqués • Concurence et syncronisation En. Commande En. Attente Verification Vérif. Client Livraison Vérif. Terminée
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.
Proposition Solution 1
Exercice 2 : montre digitale • Ma montre affiche l’heure, si j’appuie 2 X 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. Button 1 Button 2
Proposition Solution 2
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 Button 1 Button 3 Button 2
Proposition Solution 3
Exercice 4 : cabine téléphonique • Modélisez le fonctionnement d’une cabine téléphonique
Proposition de Solution 5
Resumé • • • Use case Diagramme d’activités Diagramme de classes Diagramme d’interactions Statecharts
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.
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
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 tâche, d’un use case lorsque le diagramme de classe n’est pas encore stabilisé.
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.
Notion du diagramme d’activité • Etat de départ • Etat de terminaison • Transition Alternative [ ]
Notion du diagramme d’activité Synchronisation disjonctive et conjonctive
Notion du diagramme d’activité Itération
Notion du diagramme d’activité Swimlanes
Commander un Produit: Solution possible
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é
Diagramme de classe - Exemple ENREGISTREUR +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() +Marquer. Pause() +Avancer(Vitesse) +Rembobiner(Vitesse) +Afficher. Position() +Ejecter() +Régler. Volume(Volume) 1. . * est utilisable sur 0. . 1 utilise CASSETTE +Etiquette: String +Marque. Cass: String +Modèle. Cass: String +Long. Cass: type=hh: mm +Type. Cass: String +Position. Cass: Int est contenu dans 0. . 1 contient * ENREGISTREMENT +Date. Enr: Date +Heure. Enr: type=hh: mm: ss +Long. Enr: Int MESSAGE +Auteur. Mess: String +No. Tel. Auteur. Mess: String +Sujet. Mess: String
Diagramme d’interaction • Modéliser comment communiquent entre eux les objets • Deux types de diagrammes sémantiquement équivalents: –Diagramme de Séquence –Diagramme de Collaboration
Diagramme de séquence 1. La message 1() est envoyé seulement si la condition specifiée dans la guard (entre brackets) est vraie. 2. Une branche. Le sender envoie soit le message 2() soit le message 3(). Les conditions de ‘guard’ sont exclusives. 3. L’Itération. Le sender envoie la message 4() 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 vrai. L’asterisque indique l’itération.
Simple Watch Button 1 Button 2 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. 2. En appuyant 2 X 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. 3. 2. Rédigez un diagramme de collaboration à partir du diagramme de séquence obtenu
Simple watch: Diagramme de Séquence *[B 2. . state = Pushed]
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
Simple Watch: Diagramme de Collaboration
- Slides: 32