De l'analyse à la conception

2,756 views

Published on

A partir de quelques diagrammes UML, nous explicitons le passage à la conception et la mise en oeuvre

Published in: Education, Technology, Business
  • Be the first to comment

De l'analyse à la conception

  1. 1. Analyse et Conception avec UML De l’analyse à la conception détaillée : esquisses blay@unice.fr www.polytech.unice.fr/~blay IUT Nice-Sophia Antipolis avril 2011Site web du module : http://anubis.polytech.unice.fr/iut/ 1
  2. 2. Quizz 2
  3. 3. QUIZZ03/11 3 /88
  4. 4. QUIZZ i1 ?03/11 3 /88
  5. 5. QUIZZ i1 ?03/11 3 /88
  6. 6. QUIZZ i1 ?03/11 3 /88
  7. 7. QUIZZ Combien d’instance de H sont associées à B? i1 ?03/11 3 /88
  8. 8. QUIZZ Combien d’instances de G et C associées à B ? i1 ?03/11 3 /88
  9. 9. QUIZZ i1 ? agrégation ou composition ?03/11 3 /88
  10. 10. QUIZZ i1 ?03/11 3 /88
  11. 11. QUIZZ Combien d’instance de H sont associées à E? i1 ?03/11 3 /88
  12. 12. QUIZZ i1 ?03/11 3 /88
  13. 13. QUIZZ03/11 4 /88
  14. 14. QUIZZ03/11 5 /88
  15. 15. De Analyse à la conceptionPattern exemplaireStructuration en packageStructuration en package et réutilisationChoix des itérationsDiag. de séquence en conceptionArchitectureDes diag. de séquences aux Diag. de classesDiagrammes de classes en conception
  16. 16. Pattern du type- exemplaire 7
  17. 17. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Exemple de problème - Existe-t-il des vols Nice-Paris le lundi matin? - Réserver le vol Nice-Paris du lundi 28/2/11 à 8h - Les vols Nice-Tunisie sont annulés pour les 15 prochains jours... Comment les recréer ?04/11 8 /115
  18. 18. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Des rôles mieux définis04/11 9 /115
  19. 19. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Des rôles mieux définis ea qu e ri d né e gé iod ol ér .... v p n e U un lid ité va04/11 10/115
  20. 20. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Des rôles mieux définis Métaclasse ou Type Classe ou Exemplaire04/11 11/115
  21. 21. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Autre exemple Un livre et des exemplaires : La bibliothèque nous a donné la définition suivante. Nous gérons des livres. Un livre est caractérisé par une date de parution, un numéro ISBN, un titre. Certains livres sont en mauvais état. Un adhérent peut emprunter un livre. Pour certains livres nous en avons plusieurs exemplaires.04/11 12/115
  22. 22. Structuration en packages 13
  23. 23. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages Cohérence et Indépendance - Finalité : des services de - Minimiser les dépendances même nature - Eviter absolument les - Evolution : Stabilité (le dépendances mutuelles métier)/Evolutive (Applicative) - Cycle de vie des objets04/11 14/115
  24. 24. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 15/115
  25. 25. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 16/115
  26. 26. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 17/115
  27. 27. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 18/115
  28. 28. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 19/115
  29. 29. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 20/115
  30. 30. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages Un vol est ouvert ou fermé à la réservation par la compagnie aérienne04/11 21/115
  31. 31. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages Un vol est ouvert ou fermé à la réservation par la compagnie aérienne04/11 21/115
  32. 32. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages Un vol est ouvert ou fermé à la réservation par la compagnie aérienne04/11 21/115
  33. 33. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 22/115
  34. 34. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Structuration en packages04/11 23/115
  35. 35. Structuration en packages et réutilisation 24
  36. 36. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Spécialisation La société qui prend en charge les réservations de vols, veut prendre en charge des réservations de train.04/11 25/115
  37. 37. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Spécialisation La société qui prend en charge les réservations de vols, veut prendre en charge des réservations de train.04/11 26/115
  38. 38. Vers la conception :choix des itérations 27
  39. 39. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Choix des itérations On a04/11 28/115
  40. 40. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Choix des itérations Itération 4 Itération 3’ Itération 2’ Itération 1 Itération 204/11 Itération 3 29/115
  41. 41. Des diagrammes de séquence en conception 30
  42. 42. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Vers l’architecture Pas d’interaction directe du client! Les “interfaces avec les acteurs” sont «réifiées».04/11 31/115
  43. 43. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. ObjetFrontière Vers l’architecture04/11 32/115
  44. 44. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Scenario : Identification des interfaces utilisateur Vue IHM Description Sélection d’une équipe dans une liste triée des équipes du laboratoire ou Sélection Equipe par des critères de recherche..... Visualisation Visualisation d’une équipe par ses membres, ... d’une équipe04/11 33/115
  45. 45. Si c’est nécessaire...Après...• avec l’addon Firefox :• http://pencil.evolus.vn/en-US/Downloads/Application.aspx 34
  46. 46. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Enrichissement Classes Paramètres soumettre(Cours) Valider(Cours) Les “paramètres” sont caractérisés. Des classes de contrôles apparaissent.04/11 35/115
  47. 47. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Enrichissement Entité soumettre(Cours) Des données sont identifiées comme persistantes.04/11 36/115
  48. 48. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Scénario : raffinement Quelles sont les informations pertinentes ?04/11 37/115
  49. 49. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Scénario : précisions Beaucoup de paramètres04/11 38/115
  50. 50. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Scénario : précisions rechercher(Information) Des “classes” de mise en oeuvre apparaissent04/11 39/115
  51. 51. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Scenario et réification Des “classes” d’implémentation sont identifiées.04/11 40/115
  52. 52. Vers la conception : Architecture Système 41
  53. 53. Diagramme de Use-cases
  54. 54. Afficher Informations : niveau Analyse
  55. 55. Gérer Informations : niveau Analyse (0)
  56. 56. Diagramme de Use-cases Itération 1 Itération 1I
  57. 57. Choix d’Architecture PrésentationLogique applicative Gérer les informations CREATE TABLE `information` ( Stockage `titre` varchar(20) NOT NULL, `date` varchar(22) NOT NULL, `identifiant` int(11) NOT NULL auto_increment, PRIMARY KEY (`identifiant`))
  58. 58. Choix d’Architecture PrésentationLogique applicative Gérer les informations CREATE TABLE `information` ( Stockage `titre` varchar(20) NOT NULL, `date` varchar(22) NOT NULL, `identifiant` int(11) NOT NULL auto_increment, PRIMARY KEY (`identifiant`))
  59. 59. Choix d’Architecture PrésentationLogique applicative Gérer les informations CREATE TABLE `information` ( Stockage `titre` varchar(20) NOT NULL, `date` varchar(22) NOT NULL, `identifiant` int(11) NOT NULL auto_increment, PRIMARY KEY (`identifiant`))
  60. 60. Choix d’Architecture PrésentationLogique applicative Gérer les informations CREATE TABLE `information` ( Stockage `titre` varchar(20) NOT NULL, `date` varchar(22) NOT NULL, `identifiant` int(11) NOT NULL auto_increment, PRIMARY KEY (`identifiant`))
  61. 61. Choix d’Architecture clickOn() Présentation IHM créer Information ContrôleurLogique applicative Gérer les informations : métier CREATE TABLE `information` ( Stockage `titre` varchar(20) NOT NULL, `date` varchar(22) NOT NULL, `identifiant` int(11) NOT NULL auto_increment, PRIMARY KEY (`identifiant`))
  62. 62. Architectureen couches & Fichiers
  63. 63. modifier Information : niveau Conception
  64. 64. Afficher Informations : niveau Conception index_SI_View.php
  65. 65. Afficher Informations : niveau Conception index_SI_View.php class SI_Controller { public function index($args) { $view = new Index_SI_View(); $view->display(); } SI_Controller.php public function display($args) { header(Content-type: text/xml); $res=<?xml version="1.0"?><data>; $infos = Information::findAll(); foreach($infos as $tmpInformation) { $res = $res.$tmpInformation->toXML() ; } $res=$res.</data>;
  66. 66. Afficher Informations : niveau Conceptionclass Index_SI_View extends Main_Global_View { public function mainContent() { ob_start();?> index_SI_View.php <div id="main"> Information goes here! </div><?php $content = ob_get_contents(); class SI_Controller { public function index($args) { $view = new Index_SI_View(); $view->display(); } SI_Controller.php public function display($args) { header(Content-type: text/xml); $res=<?xml version="1.0"?><data>; $infos = Information::findAll(); foreach($infos as $tmpInformation) { $res = $res.$tmpInformation->toXML() ; } $res=$res.</data>;
  67. 67. Afficher Informations : niveau Conception class Information implements iCRUDclass Index_SI_View extends Main_Global_View { { public function mainContent() { private $_id; ob_start(); private $_titre;?> index_SI_View.php private $_date; <div id="main"> Information.php public static function findAll() { Information goes here! $informations = array(); </div> Database::connect();<?php $query = "SELECT * FROM information"; $content = ob_get_contents(); $res = mysql_query($query); while($line = mysql_fetch_assoc($res)){ $titre = $line["titre"]; $date = $line["date"]; $key = $line["identifiant"]; $info = new Information($titre,$date,$key); array_push($informations, $info); } Database::disconnect(); return $informations; class SI_Controller { public function index($args) { $view = new Index_SI_View(); $view->display(); } SI_Controller.php public function display($args) { header(Content-type: text/xml); $res=<?xml version="1.0"?><data>; $infos = Information::findAll(); foreach($infos as $tmpInformation) { $res = $res.$tmpInformation->toXML() ; } $res=$res.</data>;
  68. 68. Créer Information : niveau Conception
  69. 69. Créer Information : niveau Conceptionclass Index_Admin_View extends Main_Global_View { admin_View private $infosListe; public function Index_Admin_View($args) { $this->infosListe = $args[infosListe]; }...<h1>Gestion des Informations</h1> <h2> Liste des informations </h2> <form id="infoModifForm" name="infoModifForm" method="post" action="./"> <p>
  70. 70. Créer Information : niveau Conception class Admin_Controller { public function index($args) { $args[infosListe] = Information::findAll(); $view = new Index_Admin_View($args); $view->display(); } Admin_Controller.php public function confirmer_modifier($args) { $key = $_POST["key"]; $newTitre = $_POST["NouveauTitre"]; $info = Information::read($key); $info->setTitre($newTitre); $info->update(); $args[infosListe] = Information::findAll(); $view = new Index_Admin_View($args); $view->display(); } public function create($args) { $titre = $_POST["Titre"]; $info = new Information($titre, $this->today()); $info->create(); $args[infosListe] = Information::findAll(); $view = new Index_Admin_View($args); $view->display(); }
  71. 71. Des diagrammes de séquence et d’activitésaux diagrammes de classes 53
  72. 72. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Des diagrammes de séquence aux classes Classe Relations? Classe Classe04/11 54/115
  73. 73. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opération  Le comportement d’une classe est constitué de ses opérations  On identifie les opérations en examinant les diagrammes d’interactions04/11 55/115
  74. 74. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Classes : corps de méthode04/11 56/115
  75. 75. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Relations On identifie les relations en examinant les diagrammes d’interaction  Si deux objets doivent communiquer, il doit exister un chemin entre eux04/11 57/115
  76. 76. Compléments sur les classes :vers la mise en oeuvre 58
  77. 77. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  78. 78. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  79. 79. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Visibilité  Différentes visibilités des membres dune classe public = + usager Interface protégé = # héritier privé = - implémenteur corps04/11 61/115
  80. 80. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Visibilité Représentation Classe +a1 : T1 -a2 : T2 #m1 (p1,p2,p3) +m2 (p1,p2,p3) Pas de sens en analyse...04/11 62/115
  81. 81. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation : accessibilité des attributs et des opérations Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 63/115
  82. 82. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation : accessibilité des attributs et des opérations Peut-on accéder à tous les attributs ou à toutes les méthodes d’un objet ? Non La classe définit ce qui est accessible C’est le principe de l’encapsulation Un objet complexe ne peut être utilisé qu’au travers de ce qui est accessible Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 63/115
  83. 83. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation : accessibilité des attributs et des opérations Peut-on accéder à tous les attributs ou à toutes les méthodes d’un objet ? Non La classe définit ce qui est accessible C’est le principe de l’encapsulation Un objet complexe ne peut être utilisé qu’au travers de ce qui est accessible Principes : Il n’est possible d’utiliser une voiture qu’à travers son volant, son frein, son accélérateur, etc. L’accès au carburateur est impossible sauf par les méthodes qui le font de manière cohérente (méthode accélérer de l’accélérateur) Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 63/115
  84. 84. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes..Encapsulation avec le concept de Visibilité Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 64/115
  85. 85. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes..Encapsulation avec le concept de Visibilité Les attributs sont en général inaccessibles (secrets). Ils sont alors qualifiés de : « private » : notation UML « − » Lecture ou modification possible au travers des opérations (p.ex. les accesseurs : setAdresse(), getAdresse()) Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 64/115
  86. 86. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes..Encapsulation avec le concept de Visibilité Les attributs sont en général inaccessibles (secrets). Ils sont alors qualifiés de : « private » : notation UML « − » Lecture ou modification possible au travers des opérations (p.ex. les accesseurs : setAdresse(), getAdresse()) Les opérations sont en général accessibles par toutes les classes. Elles sont alors qualifiées de : « public » : notation UML « + » Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 64/115
  87. 87. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation avec le concept de Visibilité Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 65/115
  88. 88. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation avec le concept de Visibilité Certains attributs/Opérations doivent être accessibles par les sous-classes ou aux classes d’un même package et inaccessibles aux autres classes. Ils sont alors qualifiés de : « protected » : notation UML « # » Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 65/115
  89. 89. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Encapsulation avec le concept de Visibilité Certains attributs/Opérations doivent être accessibles par les sous-classes ou aux classes d’un même package et inaccessibles aux autres classes. Ils sont alors qualifiés de : « protected » : notation UML « # » Certaines opérations peuvent cependant être privées (factorisation interne de traitements) et certains attributs peuvent être publics (non souhaitable / principe d’encapsulation) Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 65/115
  90. 90. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  91. 91. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Classes et Opérations abstraites Une opération/Classe abstraite apparaît en italique.04/11 67/115
  92. 92. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Classes et Opérations abstraites Une classe abstraite est une classe non instanciable, cest à dire quelle nadmet pas dinstances directes. Une classe abstraite est une description dobjets destinée à être « héritée » par des classes plus spécialisées. Pour être utile, une classe abstraite doit admettre des classes descendantes concrètes. La factorisation optimale des propriétés communes à plusieurs classes par généralisation nécessite le plus souvent lutilisation de classes abstraites.04/11 /115
  93. 93. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Représentation de classes abstraites  Classes sans instances immédiates Forme Carre Cercle Une instance de «Forme» est obligatoirement une instance de la classe Carre ou de la classe Cercle04/11 69/115
  94. 94. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Représentation de classes abstraites04/11 70/115
  95. 95. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Classes et Opérations abstraites04/11 71/115
  96. 96. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Représentation de classes abstraites Attention des choix de mises en oeuvre non explicités au niveau du modèle apparaissent dans ce code.04/11 72/115
  97. 97. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations abstraites Une opération abstraite est une opération nadmettant pas dimplémentation : au niveau de la classe dans laquelle est déclarée, on ne peut pas dire comment la réaliser. Les opérations abstraites sont particulièrement utiles pour mettre en œuvre le polymorphisme. Toute classe concrète sous-classe dune classe abstraite doit “concrétiser” toutes les opérations abstraites de cette dernière.04/11 /115
  98. 98. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Classes abstraites classe FormeGéométrique abstraite centre : Point opération abstraite classe abstraite dessiner() (dessiner() est déplacer(delta : Vecteur) héritée et non classe concrète concrétisée) Polygone Ellipse régulier : Boolean grandDiam : Vecteur petitDiam : Vecteur Polygone opération utile que si dessiner() concrétisée spécialisée04/11 /115
  99. 99. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations abstraites Attention des choix de mises en oeuvre non explicités au niveau du modèle apparaissent dans ce code.04/11 75/115
  100. 100. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  101. 101. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Attributs et opérations de classe Le nombre total de participations est une caractéristique des personnes (classe), donc applicable à Julien Dupont (objet) L’opération getNbTotalParticipations() utilise la valeur de l’attribut nbTotalParticipations connue par la classe Cette opération peut être appliquée directement à la classe Personne et aussi aux objets / instances de Personne Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 77/115
  102. 102. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Attributs et opérations de classe04/11 78/115
  103. 103. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Une opération «de niveau classe» est soulignée.04/11 79/115
  104. 104. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static04/11 80/115
  105. 105. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Dans la classe Produit04/11 81/115
  106. 106. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Dans la classe Produit04/11 82/115
  107. 107. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Dans la classe Produit04/11 83/115
  108. 108. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Dans la classe Produit04/11 84/115
  109. 109. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static Dans la classe Produit04/11 85/115
  110. 110. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Utilisation04/11 86/115
  111. 111. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Opérations du niveau de la classe : Static 1. Obtenir la liste des clients 2. Modifier la date d’une réservation 3. Créer une réservation 4. Modifier le prénom d’une personne 5. Calculer le prix d’une réservation04/11 87/115
  112. 112. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  113. 113. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Généralisation04/11 89/115
  114. 114. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Mauvaise généralisation Attention à la généralisation multiple: Quel execute 2 copies de est exécuté ? l’Attribut id. This is also known as the Diamond of Death. (IBM)04/11 90/115
  115. 115. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Pattern Composite...04/11 91/115
  116. 116. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  117. 117. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Package04/11 93/115
  118. 118. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  119. 119. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Association...04/11 95/115
  120. 120. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Association...04/11 96/115
  121. 121. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Association: De la conception à l’implémentation04/11 97/115
  122. 122. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Gestion des associations04/11 98/115 D’UML à java Ph. Collet -- Miage
  123. 123. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Associations & Navigations04/11 99/115 D’UML à java Ph. Collet -- Miage
  124. 124. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Exemple de Raffinement04/11 100 /115 D’UML à java Ph. Collet -- Miage
  125. 125. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation04/11 101 /115 D’UML à java Ph. Collet -- Miage
  126. 126. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 104/11 101 /115 D’UML à java Ph. Collet -- Miage
  127. 127. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité04/11 101 /115 D’UML à java Ph. Collet -- Miage
  128. 128. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole()04/11 101 /115 D’UML à java Ph. Collet -- Miage
  129. 129. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole() Extrémité d’association *04/11 101 /115 D’UML à java Ph. Collet -- Miage
  130. 130. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole() Extrémité d’association * Rôle (pluriel) en collection04/11 101 /115 D’UML à java Ph. Collet -- Miage
  131. 131. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole() Extrémité d’association * Rôle (pluriel) en collection Type de l’extrémité en élément de collection04/11 101 /115 D’UML à java Ph. Collet -- Miage
  132. 132. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole() Extrémité d’association * Rôle (pluriel) en collection Type de l’extrémité en élément de collection Collection getRoles()04/11 101 /115 D’UML à java Ph. Collet -- Miage
  133. 133. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation Extrémité d’association 1 Rôle en Attribut avec type de l’extrémité Type getRole() Extrémité d’association * Rôle (pluriel) en collection Type de l’extrémité en élément de collection Collection getRoles() // Collection<TypeExtrémité>//04/11 101 /115 D’UML à java Ph. Collet -- Miage
  134. 134. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite)04/11 102 /115 D’UML à java Ph. Collet -- Miage
  135. 135. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 104/11 102 /115 D’UML à java Ph. Collet -- Miage
  136. 136. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t)04/11 102 /115 D’UML à java Ph. Collet -- Miage
  137. 137. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t) Fixer une extrémité d’association *04/11 102 /115 D’UML à java Ph. Collet -- Miage
  138. 138. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t) Fixer une extrémité d’association * void setRoles(Collection c)04/11 102 /115 D’UML à java Ph. Collet -- Miage
  139. 139. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t) Fixer une extrémité d’association * void setRoles(Collection c) void addRole(TypeElement t)04/11 102 /115 D’UML à java Ph. Collet -- Miage
  140. 140. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t) Fixer une extrémité d’association * void setRoles(Collection c) void addRole(TypeElement t) Fixer une association navigable dans les 2 sens :04/11 102 /115 D’UML à java Ph. Collet -- Miage
  141. 141. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Principes d’implémentation ( Suite) Fixer une extrémité d’association 1 void setRole(Type t) Fixer une extrémité d’association * void setRoles(Collection c) void addRole(TypeElement t) Fixer une association navigable dans les 2 sens : Définir les responsabilités : un des objets est responsable de la connexion/déconnexion (cf. exemple)04/11 102 /115 D’UML à java Ph. Collet -- Miage
  142. 142. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. ImplémentationClass Student { Collection getClasses() { return classes;//Collection<Course> } Définition des protected List classes=new ArrayList… responsabilités} Ne jamais appelerClass Course { addHasSections ou Collection getHasSections(); addClass directement ! protected List addSection = new… protected addHasSections(Section s){ hasSections.add(s); }04/11 103 /115 D’UML à java Ph. Collet -- Miage
  143. 143. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Implémentation Prise de responsabilités04/11 104 /115 D’UML à java Ph. Collet -- Miage
  144. 144. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Implémentationclass Student { Result getResult(Section s) }class Section { Result getResult(Student s) }class Result { Student getStudent() Section getSection()}04/11 105 /115 D’UML à java Ph. Collet -- Miage
  145. 145. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  146. 146. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable)04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  147. 147. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable) Association unidirectionnelle = pas d’attribut du côté de la flèche04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  148. 148. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable) Association unidirectionnelle = pas d’attribut du côté de la flèche Nom de l’attribut = nom du rôle ou forme nominale du nom de l’association04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  149. 149. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable) Association unidirectionnelle = pas d’attribut du côté de la flèche Nom de l’attribut = nom du rôle ou forme nominale du nom de l’association Attribut du type référence sur un objet de la classe à l’autre extrémité de l’association Référence notée « @ »04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  150. 150. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable) Association unidirectionnelle = pas d’attribut du côté de la flèche Nom de l’attribut = nom du rôle ou forme nominale du nom de l’association Attribut du type référence sur un objet de la classe à l’autre extrémité de l’association Référence notée « @ » Traduction des multiplicités 1 =⇒ @Classe ∗ =⇒ Collection @Classe 0..N =⇒ Tableau[N] Classe04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  151. 151. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. En résumé : Traduction des associations en attributs Autant d’attributs que de classes auxquelles elle est reliée (navigable) Association unidirectionnelle = pas d’attribut du côté de la flèche Nom de l’attribut = nom du rôle ou forme nominale du nom de l’association Attribut du type référence sur un objet de la classe à l’autre extrémité de l’association Référence notée « @ » Traduction des multiplicités 1 =⇒ @Classe ∗ =⇒ Collection @Classe 0..N =⇒ Tableau[N] Classe Multiplicité avec tri = Collection ordonnée @Classe04/11 Introduction 106/115 au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris
  152. 152. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Compositions Introduction au langage de modélisation UML, Denis Conan, Chantal Taconet, Christian Bac, Telecom Sud Paris04/11 107 /115
  153. 153. Vers la mise en oeuvre des classes Visibilité Abstraction Attributs et Opérations* de Classes Généralisation Packages Transformations des associations Anti-PatternsOpération : terme générique désignant le plus souvent des méthodes
  154. 154. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns Blob ou la classe Dieu04/11 109 /115
  155. 155. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns Blob ou la classe Dieu04/11 109 /115
  156. 156. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns Blob ou la classe Dieu04/11 109 /115
  157. 157. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns Blob ou la classe Dieu04/11 109 /115
  158. 158. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns Blob ou la classe Dieu04/11 109 /115
  159. 159. Pattern ex. Packages Itérations Séquences Archi. De seq . Classes.. Anti-Patterns A Améliorer encore...04/11 110 /115
  160. 160. D’un modèle à classes au modèle relationnel 111

×