Accueil
 Sommaire
 1  Objectifs de ce cours de modélisation orientée objet
 2  Généralités sur la modélisation orienté objet et sur UML
 3  Analyse, vues cas d'utilisation et processus
 4  Analyse et conception, aspects statiques de la vue logique
 5  Analyse et conception, aspects dynamiques de la vue logique
 6  Conception, aspects langage et technique
 6.1  Rappel des phases du cycle de développement en V
 6.2  Conception des classes
 6.3  Rappel du diagramme de classes de l'étude de cas Studs
 6.4  Traduction des associations en attributs
 6.5  Traduction des agrégations
 6.6  Traduction des compositions~*
 6.7  Traduction de la classe « Façade » du système
 6.8  Encapsulation: visibilité~/~accessibilité des attributs et des opérations
 6.9  Traduction des attributs dérivés
 6.10  Qualification de certaines associations~*
 6.11  Traduction des diagrammes d'interaction en algorithmes
 6.12  Traduction des diagrammes de machine à états
 6.12.1  Quelques opérations de la classe Scrutin
 6.13  Traduction des relations de généralisation spécialisation
 6.14  Traduction des classes d'association~*
 6.15  Méthodologie: une fiche par classe
 QCM
 7  Conception, vues développement et physique
 8  Conclusion
 9  Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


6.12 Traduction des diagrammes de machine à états

Figures/conception_traduction_machineaetats

  • Attributs utilisés dans la machine à états
    • dateDébut : date
    • dateLimite : date
    • dateLimiteExistence : date
    • ouvert : boolean = false
    • ouvertureAvancée : boolean = false
    • fermetureAvancée : boolean = false
    • destructionAvancée : boolean = false
  • Valeur des attributs dans les différents états
    • EnConstruction : valeurs par défaut
    • ScrutinOuvert : ouvert = true
    • ScrutinFermé : ouvert = false et
      (dateJour > dateLimite ou fermetureA = true)
    • EnDestruction : ouvert = false et
      (dateJour > dateLE ou destructionA = true)

    précédent     suivant 


Rappelons que les attributs d’une classe, ici la classe Scrutin, d’un diagramme de classes servent à construire un diagramme de machine à états, et vice versa (dans le sens où la construction d’un diagramme de machine à états peut permettre de découvrir des attributs non extraits directement du cahier des charges). Pour notre exemple de la classe Scrutin, il est fort probable que la première liste des attributs de la classe Scrutin construite lors de la première construction du diagramme de classes n’ait pas fait apparaître les attributs booléens qui permettent de gérer le cycle de vie par des actions de l’organisatrice, qui peut avancer l’ouverture, la fermeture, ou la destruction d’un scrutin.

La traduction d’un diagramme de machine à états lors de la conception consiste en deux activités : premièrement, compléter la liste des attributs afin de permettre la gestion de tous les états et de toutes les transtions, et deuxièmement, compléter la liste des opérations afin de permettre de faire évoluer les valeurs des attributs pour respecter le diagramme de machine à états. Tout d’abord, concernant la liste des attributs, selon le diagramme de machine à états de cette diapositive, nous pouvons nous poser la question suivante : une ouverture avancée par l’organisatrice fait-elle changer la valeur de l’attribut dateOuverture ou ajoute-t-on un attribut pour distinguer une ouverture automatique d’une ouverture avancée ? Comme montré dans cette diapositive, nous avons choisi d’ajouter les attributs ouvertureAvancée, fermetureAvancée, et destructionAvancée. Ensuite, concernant la liste des opérations, les actions du diagramme de classes deviennent des opérations de la classe, et les contraintes sur les attributs deviennent aussi des opérations (par exemple, le passage du temps est modélisé par l’ajout d’une opération vérifierAuQuotidien). Les opérations avec leur algorithme sont décrits dans la diapositive qui suit.

D. Conan, C. Taconet, C. Bac, Télécom SudParis, CSC 4002, Octobre 2015