SlideShare une entreprise Scribd logo

Design Patterns (2003)

Mise en oeuvre des Design Patterns sur une étude de cas

1  sur  52
Télécharger pour lire hors ligne
3012
 Mise en oeuvre des Design
Patterns sur une étude de cas

              Pascal Roques
       Consultant senior et formateur
Introduction


  Présentations
   Programme
Présentations
• Intervenant : Pascal Roques
   •   Consultant senior chez
   •   Responsable des formations autour de l’analyse
       et de la conception objet avec UML


   •   Auteur de 3 ouvrages sur UML parus chez Eyrolles :
 UML en action - 2e édition   UML par la pratique             UML - Modéliser un site
 De l'analyse des besoins     Cours et exercices Java et C#
 à la conception en Java
                                                              e-commerce
                              - 2ème édition
                                                              Les Cahiers du Programmeur
Notre programme
• 1. Introduction


• 2. Les Design Patterns


• 3. Analyse de l’étude de cas (Together®)


• 4. Application des Design Patterns (Together®)


• 5. Conclusion
Les Design Patterns


          Introduction aux DP
GoF : State, Singleton, Template Method
      De l’analyse à la conception
      Application à l’étude de cas
Introduction aux « patterns »
• Le succès d’une conception passe par l’attribution
 réussie des bonnes responsabilités aux bonnes
 classes

• Problème : les décisions qui vont conduire à des
 systèmes extensibles et maintenables ne sont pas
 forcément évidentes

• Solution : il y a des principes fondamentaux et
 éprouvés appelés « patterns » que tout concepteur
 expérimenté applique

Recommandé

Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en JavaOussama BEN KHIROUN
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesAlex Wilfried OUATTARA
 
patron de conception
patron de conception patron de conception
patron de conception Shili Mohamed
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns frenchmeriem sari
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 

Contenu connexe

Tendances

Design patterns : résumé
Design patterns : résuméDesign patterns : résumé
Design patterns : résuméBoubker ABERWAG
 
Patrons de creation
Patrons de creationPatrons de creation
Patrons de creationomri med
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Cours de C++, en français, 2002 - Cours 1.1
Cours de C++, en français, 2002 - Cours 1.1Cours de C++, en français, 2002 - Cours 1.1
Cours de C++, en français, 2002 - Cours 1.1Laurent BUNIET
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalCoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalAhmed Mekkaoui
 

Tendances (20)

Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
Design patterns : résumé
Design patterns : résuméDesign patterns : résumé
Design patterns : résumé
 
Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014 Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014
 
Igl cours 3 - introduction à uml
Igl   cours 3 - introduction à umlIgl   cours 3 - introduction à uml
Igl cours 3 - introduction à uml
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Uml upxp2
Uml upxp2Uml upxp2
Uml upxp2
 
Uml
UmlUml
Uml
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Cours de C++, en français, 2002 - Cours 1.1
Cours de C++, en français, 2002 - Cours 1.1Cours de C++, en français, 2002 - Cours 1.1
Cours de C++, en français, 2002 - Cours 1.1
 
Uml
UmlUml
Uml
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-TotalCoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Cours spring
Cours springCours spring
Cours spring
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 

En vedette

Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Android Bonnees pratiques
Android Bonnees pratiques Android Bonnees pratiques
Android Bonnees pratiques Patrick Bashizi
 
Design Pattern
Design PatternDesign Pattern
Design Patternnewegg
 
Design Pattern lecture 2
Design Pattern lecture 2Design Pattern lecture 2
Design Pattern lecture 2Julie Iskander
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleDamien GOSSET
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor PatternIder Zheng
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governancebharati k
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artTom Mens
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Erradi Mohamed
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal PerspectiveEdward Willink
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking AssignmentSalma ES-Salmani
 
Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Etienne Juliot
 

En vedette (20)

Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Sibtel&Swift
Sibtel&SwiftSibtel&Swift
Sibtel&Swift
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Android Bonnees pratiques
Android Bonnees pratiques Android Bonnees pratiques
Android Bonnees pratiques
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Cours1
Cours1Cours1
Cours1
 
Design Pattern lecture 2
Design Pattern lecture 2Design Pattern lecture 2
Design Pattern lecture 2
 
Design pattern
Design patternDesign pattern
Design pattern
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'Apple
 
Visitor Pattern
Visitor PatternVisitor Pattern
Visitor Pattern
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governance
 
The OCLforUML Profile
The OCLforUML ProfileThe OCLforUML Profile
The OCLforUML Profile
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the art
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal Perspective
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking Assignment
 
Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...
 
What fUML can bring to MBSE?
What fUML can bring to MBSE?What fUML can bring to MBSE?
What fUML can bring to MBSE?
 

Similaire à Design Patterns (2003)

Similaire à Design Patterns (2003) (20)

Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
 
Manuel uml-poweramc
Manuel uml-poweramcManuel uml-poweramc
Manuel uml-poweramc
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Uml partie 1
Uml partie 1Uml partie 1
Uml partie 1
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
 
Apprentissage du java
Apprentissage du javaApprentissage du java
Apprentissage du java
 
Uml
UmlUml
Uml
 
Methodo support
Methodo supportMethodo support
Methodo support
 
Uml
UmlUml
Uml
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Cours génie logiciel
Cours génie logicielCours génie logiciel
Cours génie logiciel
 
Gp unified process
Gp unified processGp unified process
Gp unified process
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
AnalyseEtConceptionChapire1.pptx
AnalyseEtConceptionChapire1.pptxAnalyseEtConceptionChapire1.pptx
AnalyseEtConceptionChapire1.pptx
 
040423+seminar+info+uqam.ppt
040423+seminar+info+uqam.ppt040423+seminar+info+uqam.ppt
040423+seminar+info+uqam.ppt
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt
 

Plus de Pascal Roques

SysCon 2013 SysML & Requirements
SysCon 2013 SysML & RequirementsSysCon 2013 SysML & Requirements
SysCon 2013 SysML & RequirementsPascal Roques
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in FrancePascal Roques
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Pascal Roques
 
Seminaire Borland UML (2003)
Seminaire Borland UML (2003)Seminaire Borland UML (2003)
Seminaire Borland UML (2003)Pascal Roques
 
Modélisation métier (2004)
Modélisation métier (2004)Modélisation métier (2004)
Modélisation métier (2004)Pascal Roques
 
SysML (Valtech Days 2008)
SysML (Valtech Days 2008)SysML (Valtech Days 2008)
SysML (Valtech Days 2008)Pascal Roques
 
Migrer vers le cloud grace au Model-Driven
Migrer vers le cloud grace au Model-DrivenMigrer vers le cloud grace au Model-Driven
Migrer vers le cloud grace au Model-DrivenPascal Roques
 
Xp Day2009 Modelisation Agile
Xp Day2009 Modelisation AgileXp Day2009 Modelisation Agile
Xp Day2009 Modelisation AgilePascal Roques
 

Plus de Pascal Roques (10)

SysCon 2013 SysML & Requirements
SysCon 2013 SysML & RequirementsSysCon 2013 SysML & Requirements
SysCon 2013 SysML & Requirements
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in France
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0
 
Uml2
Uml2Uml2
Uml2
 
Seminaire Borland UML (2003)
Seminaire Borland UML (2003)Seminaire Borland UML (2003)
Seminaire Borland UML (2003)
 
Modélisation métier (2004)
Modélisation métier (2004)Modélisation métier (2004)
Modélisation métier (2004)
 
SysML (Valtech Days 2008)
SysML (Valtech Days 2008)SysML (Valtech Days 2008)
SysML (Valtech Days 2008)
 
Migrer vers le cloud grace au Model-Driven
Migrer vers le cloud grace au Model-DrivenMigrer vers le cloud grace au Model-Driven
Migrer vers le cloud grace au Model-Driven
 
From SADT to SysML
From SADT to SysMLFrom SADT to SysML
From SADT to SysML
 
Xp Day2009 Modelisation Agile
Xp Day2009 Modelisation AgileXp Day2009 Modelisation Agile
Xp Day2009 Modelisation Agile
 

Design Patterns (2003)

  • 1. 3012 Mise en oeuvre des Design Patterns sur une étude de cas Pascal Roques Consultant senior et formateur
  • 3. Présentations • Intervenant : Pascal Roques • Consultant senior chez • Responsable des formations autour de l’analyse et de la conception objet avec UML • Auteur de 3 ouvrages sur UML parus chez Eyrolles : UML en action - 2e édition UML par la pratique UML - Modéliser un site De l'analyse des besoins Cours et exercices Java et C# à la conception en Java e-commerce - 2ème édition Les Cahiers du Programmeur
  • 4. Notre programme • 1. Introduction • 2. Les Design Patterns • 3. Analyse de l’étude de cas (Together®) • 4. Application des Design Patterns (Together®) • 5. Conclusion
  • 5. Les Design Patterns Introduction aux DP GoF : State, Singleton, Template Method De l’analyse à la conception Application à l’étude de cas
  • 6. Introduction aux « patterns » • Le succès d’une conception passe par l’attribution réussie des bonnes responsabilités aux bonnes classes • Problème : les décisions qui vont conduire à des systèmes extensibles et maintenables ne sont pas forcément évidentes • Solution : il y a des principes fondamentaux et éprouvés appelés « patterns » que tout concepteur expérimenté applique
  • 7. Introduction aux « patterns » • Les « patterns » sont : • Des paires nommées (problème + solution) • Des conseils issus de la pratique d’experts • Une technique essentielle dans le monde de la conception orientée objet ! • Les concepteurs aguerris conçoivent par le biais d’un « langage de patterns » • « Dans cette conception, j’ai associé les patterns State (État) et Singleton pour faciliter l’ajout de nouveaux états… Vaudrait-il mieux que j’utilise le Flyweight ? »
  • 8. Ressources sur les patterns • Exemples de patterns et de ressources : • Patterns GRASP • Neuf patterns d’attribution des responsabilités fondamentales • UML et les Design Patterns (Larman, 2001, CampusPress). • Les patterns « Gang of Four » (GoF) • 23 patterns courants dans des situations spécifiques • Le plus connu des ensembles de patterns orientés objets • Design Patterns (Gamma, et. al. 1995, AW). • Les patterns en Java • 50 patterns courants avec leur traduction en Java • Patterns in Java (Grand, 2003, Wiley). • …
  • 9. Modèle de description (1/3) • Nom du pattern • Le nom du pattern véhicule succinctement l’essence du pattern • Il est essentiel de trouver un nom clair et facile à mémoriser ! • Intention • Formule brève répondant aux questions suivantes : • Que fait le design pattern ? • Quels en sont le raisonnement et l’intention ? • Quel problème spécifique de conception traite-t-il ? • Également appelé • Autres noms connus du pattern, s’il en existe (alias) • Motivation • Scénario illustrant un problème de conception ainsi que la façon dont les structures de classes et d’objets du pattern résolvent le problème source : Design Patterns – Elements of Reusable Object-Oriented Software
  • 10. Modèle de description (2/3) • Applicabilité • Quelles sont les situations dans lesquelles le design pattern peut être appliqué ? Quels sont les exemples de mauvaises conceptions que le pattern permet de traiter ? • Structure • Généralement, représentation graphique des classes du pattern créée à l’aide d’UML • Participants • Classes et/ou objets prenant part au design pattern avec leurs responsabilités respectives • Collaborations • Façon dont les participants collaborent afin d’assumer leurs responsabilités • Patterns connexes • Quels sont les design patterns liés de près à celui-ci ? Avec quels autres patterns celui-ci doit-il être utilisé ? source : Design Patterns – Elements of Reusable Object-Oriented Software
  • 11. Modèle de description (3/3) • Conséquences • De quelle façon le pattern accomplit-il ses objectifs ? • Quels sont les compromis et les résultats liés à l’utilisation du pattern ? • Implémentation • Quels sont les pièges, les conseils ou les techniques dont il faut avoir connaissance lors de la mise en œuvre du pattern ? • Y a-t-il des questions spécifiques au langage ? • Exemple de code • Fragments de code illustrant la façon dont on pourrait mettre en œuvre le pattern avec un langage orienté objets • Usages connus • Exemples d’utilisation du pattern sur des systèmes réels source : Design Patterns – Elements of Reusable Object-Oriented Software
  • 12. Les Design Patterns GoF source : Design Patterns – Elements of Reusable Object-Oriented Software
  • 13. Le DP Singleton (1/2) • Problème : comment garantir la présence d’une seule instance d’une classe et fournir un point d’accès global à cette instance ? • Solution : sauvegarder l’objet singleton dans une variable statique et implémenter une méthode de classe retournant ce singleton • Notez que cela fournit un accès global sans les défauts des variables globales • Le constructeur est déclaré privé (ou mieux : protégé)
  • 15. Le DP Template Method (1/2) • Le pattern Template Method (TMP) est au cœur de la conception d’algorithmes génériques • Problème : comment concevoir des algorithmes variables et non variables ? • Solution : définissez le squelette d’un algorithme dans une méthode de super-classe, en confiant certaines étapes à des sous-classes
  • 16. Le DP Template Method (2/2)
  • 17. Le DP State (1/2) • Problème : le comportement d’un objet dépend de son état • l’objet doit changer de comportement à l’exécution • Il est nécessaire que la réponse d’une instance varie en fonction de son état public void m1(){ public void m1(){ public void m2(){ public void m2(){ public void m3(){ public void m3(){ if < test 1 > if < test 1 > if < test 1 > if < test 1 > if < test 1 > if < test 1 > methodA() methodA() methodC() methodC() methodE() methodE() else if < test 2 > else if < test 2 > else if < test 2 > else if < test 2 > else if < test 2 > else if < test 2 > methodB() methodB() methodD() methodD() methodF() methodF() } } } } } } • Solution : délégation + polymorphisme • Classe abstraite (ou interface) « Etat »
  • 18. Le DP State (2/2)
  • 19. Analyse de l’étude de cas Présentation Analyse des besoins Modèle du domaine
  • 20. L’étude de cas (1/2) • Le jeu du Démineur …
  • 21. L’étude de cas (2/2) • L’objectif de cette étude de cas est de concevoir un jeu de démineur comme celui qui est livré avec Windows© • Nous souhaitons utiliser un processus itératif et incrémental • La démarche classique de modélisation que nous allons appliquer est la suivante : • Analyse des besoins • Diagramme de cas d’utilisation • Diagramme de séquence système • Modèle du domaine • Diagramme de classes • Diagramme d’états • Modèle de conception objet • Diagramme de classes • Diagrammes d’interactions
  • 22. Analyse des besoins (1/2) • Diagramme de cas d’utilisation Paramétrer le jeu <<extend>> [Paramétrage] Jouer au démineur Joueur Extension points Itération 1 : avec paramétrage par défaut, Paramétrage et non prise en compte du marquage « ? » Help <<extend>> [Help] Consulter l'aide en ligne
  • 23. Analyse des besoins (2/2) • Diagramme de séquence « système » Demineur Joueur initialiser() decouvrirCase(Point) marquerCase(Point) etc. decouvrirCase(Point) gagné !! entrerNomHighScores(n)
  • 24. Modèle du domaine (1/2) • Diagramme de classes du domaine
  • 25. Modèle du domaine (2/2) • Diagramme d’états : la classe Case • Complexité itérative ! Itération 1 Itération ultérieure…
  • 26. Application des Design Patterns avec Together© Conception DP State DP Singleton DP Template Method
  • 27. Architecture logique • Le modèle du domaine va nous servir de base pour la couche « domaine » de notre architecture logique en conception objet • Modèle simplifié en 3 couches
  • 28. De l’analyse à la conception (1/3) • Dans le diagramme de classes, nous allons maintenant indiquer : • Les méthodes • La navigabilité des associations • Les dépendances entre classes • Les types des attributs et des méthodes (retour, paramètres) • Together permet d’ajouter facilement les constructeurs, accesseurs, etc.
  • 29. De l’analyse à la conception (2/3) • Le modèle du domaine fournit des classes candidates pour le diagramme de classes de conception • Le concepteur peut être amené à fusionner certains concepts ou au contraire à introduire de nouvelles classes de conception État ??
  • 30. De l’analyse à la conception (3/3) • Diagramme de classes de conception • premier jet pour l’itération 1
  • 31. Classes de conception • Ajout des types non-primitifs (optionnel)
  • 32. Conception de la dynamique (1/3) • Pour chaque « opération système » complexe, nous allons réaliser un diagramme d’interaction (collaboration ou séquence) Démineur • La complexité se Joueur initialiser() trouve dans les deux opérations : decouvrirCase(Point) marquerCase(Point) • decouvrirCase(Point) etc. • marquerCase(Point) decouvrirCase(Point) gagné !! entrerNomHighScores(n)
  • 33. Conception de la dynamique (2/3) • Commençons par « marquerCase » : • Le joueur clique sur un point du plateau, il faut déjà traiter l’événement graphique en trouvant la case concernée… 1: marquerCase(Point) :Partie 1.1: marquerCase(Point) les:Case :Plateau 1.1.1: c:=get(Point) 1.1.2: marquer() 1.1.2.1: ?? c:Case
  • 34. Conception de la dynamique (3/3) • Continuons « marquerCase » : • Si elle est toujours couverte, une case peut être marquée en respectant les règles indiquées par le diagramme d’états • Le traitement à effectuer dépend donc entièrement de l’état de la case pointée… • Nous allons utiliser le Design pattern du State • !Avantage : évolutivité facilitée (pour la prise en compte ultérieure du marquage « ? »)
  • 35. Application du DP State (1/4) • Diagramme de classes de conception « avant » • Ajout des méthodes dans Plateau et Case
  • 36. Application du DP State (2/4)
  • 37. Application du DP State (3/4) • Diagramme de classes de conception « après »« !
  • 38. Application du DP State (4/4) • Le code Java correspondant « après »« !
  • 39. Suite de la dynamique (1/2) • Continuons « marquerCase » : • En fonction de son état, la case effectue des traitements différents marquer(c : Case) :EtatDecouverte marquer(c : Case) 2: majCompteur(-1) <<singleton>> :EtatCouverteNonMarquee :Partie 1: setEtatCourant(EtatDrapeau) c : Case marquer(c: Case) 2: majCompteur(1) <<singleton>> :EtatDrapeau :Partie 1: setEtatCourant(EtatCouverteNonMarquee) c : Case
  • 40. Suite de la dynamique (1/2) • Quelles sont les améliorations du modèle que l’étude de la dynamique nous inspire ? • Les états doivent recevoir en paramètre la case elle-même pour pouvoir ensuite invoquer la méthode setEtatCourant() • marquer() marquer(c : Case) • Idem pour decouvrir(c : Case) • De nombreuses classes vont avoir besoin d’un accès à la classe Partie : tous les états, etc. • Cette classe Partie doit avoir une seule instance à la fois ! • L’utilisation du DP Singleton est naturelle …
  • 41. Suite de la dynamique (2/2) • Appliquons le DP Singleton à la classe Partie
  • 42. Application du DP Singleton • Le modèle et le code Java correspondant « après »« !
  • 43. Classes de conception • Le modèle complété de l’itération 1 pourrait alors ressembler à:
  • 44. Développement itératif • Le DP State facilite l’introduction itérative d’un nouvel état de marquage de la case Itération 1 Itération ultérieure…
  • 45. Nouvelle application du State (1/2) • Together permet facilement d’ajouter un nouvel état concret • Grâce au paramètre “create pattern links” qui reconnaît les participants au DP
  • 46. Nouvelle application du State (2/2) • Diagramme de classes de conception « après »« !
  • 48. Pas de « pattern-alisme » excessif ! • Une bonne conception n’implique pas d’utiliser tous les patterns de la terre ! • Utilisez les bons patterns au bon endroit et justifiez votre solution ! • Il est rare de réaliser une bonne conception dès la première tentative • L’activité de refactoring aide à rectifier les erreurs • Développez de façon itérative • Évitez le syndrome du « silver bullet » ! • Utilisation obsessionnelle d’un pattern ou d’une technologie auxquels vous êtes habitué • Méfiez-vous de ceux qui disent avoir un pattern préféré !
  • 49. Utilisez Together ! Together permet d’appliquer plus facilement des patterns sur vos modèles UML … Il permet également de se créer ses propres patterns ! Mais ceci est une autre histoire …
  • 51. Merci ! N’oubliez pas de remplir le formulaire d’évaluation Vous pouvez me contacter à … pascal.roques@valtech.fr