ENSTA IN204 Introduction à JAVA Olivier Sigau d LIP6/ Anim atlab olivier.sigau d@lip 6.fr 01.44.27.88.53 Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 1
Plan du cours 12 Découpage en packages De l'analyse à la conception : recours au m odèle MVC Couches génériques Fram eworks Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 2
Le découpage en packages Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 3
Objectifs Rendre les différents m odules aussi indépendants que possible Perm ettre la com pilation séparée des m odules (m inim iser les «im ports») Eviter à tout prix les dépendances croisées Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 4
Exem ple élém entaire : que faire? Package 1 Package 2 Classe C1 Classe C2 Les classes C1 et C2 appellent des m éthodes l une de l autre Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 5
Solution 1 Package 1 Package 2 In terface I1 Classe C1 Classe C2 Le package 2 com pile tout seul, et le package 1 dépend du package 2 Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 6
Solution 2 In terface I1 Package 1 In terface I2 Classe C1 Package 2 Classe C2 Cette fois, on a isolé une couche abstraite indépendante, et une im plém entation qui en dépend D autres découpages sont possibles Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 7
Le pattern observer Instance du schém a précédent Exem ple de «Design pattern» (cours 13) Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 8
Plus loin que les packages Découpage en com posants (cours 14) Des m odules séparés, com pilés une fois pour toutes, qui peuvent être connectés ensem ble pour réaliser une architecture spécifique Eventuellem ent distribués, et dans des lan gages différen ts Tendance lourde du génie logiciel actuel A suivre Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 9
De l'analyse à la conception : recours au m odèle MVC Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 10
Rappel : Analyse / Conception Analyse = Com prendre les spécifications, en extraire les exigences, présenter form ellem ent le problèm e à résoudre Vérifier la conform ité de l analyse aux besoins Eviter de figer des choix de conception pendant l an alyse On ignore qu on réalise un logiciel Conception = Concevoir LA solution au problèm e analysé l analyse = << quoi? >>, la conception = << com m ent? >> On se concentre sur la réalisation d un futur logiciel Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 11
Objectifs L analyse a perm is de dégager un certain nom bre d objets m étiers qui seront m anipulés par le systèm e Le systèm e inform atique lui-m êm e n a pas encore été décom posé en fonction de ses traitem en ts Un aspect im portant du passage à la conception consiste à identifier les objets qui m anipulent les données contenues dans les objets m étier Approche : Model, View, Controller Attention : les diagram m es subissent des m odifications im portantes entre analyse et conception Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 12
Approche : Model, View, Controller (MVC) Model = les objets m étiers, = les objets porteurs de données m anipulées par l ap p lication View = les interfaces vers le m onde externe, qui donnent des «vues» sur l état des objets m étier Controller = les objets «Manager» de haut niveau qui vont m anipuler les objets m étiers Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 13
Dém arche MVC du passage à la conception Les objets m étiers ont été identifiés lors de l an alyse De m êm e pour les principales fonctionnalités et les principaux traitem ents Les «Managers» regroupent les traitem ents selon les types d objets m étiers auxquels ils s appliquent Ils reposent sur des structures de données élém entaires (containers) Les Views perm ettent d appeler (via une interface) les traitem ents définis par les Man agers On ajoute enfin des classes interm édiaires de conception (généricité, découpage en packages ) Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 14
Responsabilité et localité Un traitem ent doit être attribué à la prem ière classe qui dispose des données nécessaires pour le réaliser Perm et d assurer une propriété de localité m axim ale Exem ple : Une classe «listedachats» contient une liste de produits et de quantité, chaque produit connaît son coût unitaire Le traitem ent calculermontanttotal() est associé à listedach ats Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 15
Couches génériques Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 16
Réutilisation (1) Si une classe correspond à un objet concret et si ses m éthodes sont naturelles, tout program m e qui la m et en œ uvre peut réutiliser ses m éthodes Il est donc plus facile de réutiliser des m orceaux de code en program m ation orien tée objets Il est aussi plus facile d'interpréter ce que fait le program m e si les nom s de classe, d'attributs et de m éthodes sont naturels Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 17
Réutilisation (2) Plutôt que de réutiliser un m odule com plet, on peut vouloir réutiliser des traitem ents s ils sont génériques Dans ce cadre (fréquent), la réutilisation est réalisée à l aide de l abstraction On réalise un traitem ent pour une classe générique, et on pourra le réutiliser pour toutes les classes qui en dérivent Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 18
Couche générique en pratique Etant donné une architecture de type MVC On abstrait les objets «Model» sous form e d in terfaces gén ériqu es On réalise des objets «Managers» qui m anipulent ces interfaces Les traitem ents pourront être appliqués à tous les objets «Model» qui im plém entent ces in terfaces Les objets «Model» concrets im plém entent des traitem ents spécifiques appelés par les «Managers» Suppose d avoir des «View» génériques Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 19
Exem ple in terface Classifier { public boolean m atch(env e); } class Bin aryclassifier im p lem en ts Classifier { public boolean m atch(env e){if (cond.isdontcare()) return true; else if ((cond.istrue() && e.istrue()) (cond.isfalse() && e.isfalse()) return true; else return false; } class In tervalclassifier im p lem en ts Classifier { public boolean m atch(env e){if cond.isdontcare() return true; else if ((cond.m in()<e.val()) && (cond.m ax()>e.val()) return true; else return false; } Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 20
Fram ew orks Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 21
Bibliothèque Module fourni Module fourni Ap p lication développée par l u tilisateu r Module fourni Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 22
Fram ew ork Ap p lication générique fournie Module développé par l utilisateur Module développé par l utilisateur Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 23
Définition et im plications Un fram ework est un logiciel constitué principalem ent d une couche générique, prévue pour que les utilisateurs y branchent leur propre couche spécifique en im plém entant quelques in terfaces Nécessité de clairem ent spécifier ce qu il faut dériver ou im plém enter Nécessité que les signatures soient sim ples et bien conçues Quelques im plém entations classiques ou exem plaires peuvent être fournies Travail d abstraction très délicat : prévoir des u tilisation s exotiqu es Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 24
Difficultés spécifiques On ne peut pas prévoir à l avance toutes les im plém entations Il faut donc dégager une couche abstraite, cohérente et suffisam m ent riche pour être intéressante (les fram eworks im posent des con train tes) En IA, avoir recours à l abstraction m athém atique pour voir les équivalences entre des approches/ outils Perm et de m axim iser les classes d application Suppose une certaine expertise dans le dom aine m odélisé Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 25
Exem ples JEO : Java Evolutionary Optim ization (projet 2003) Perm et de faire tourner des algorithm es génétiques répartis sur des réseaux ouverts (SETI@h om e) Il suffit d im plém enter ses génom es (choix dans un catalogue ou dérivation) et ses fonctions d évaluation SFERES : dédié à l optim isation de com portem ents par algorithm es génétiques Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 26
De la conception à l'im plém entation Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 27
Attention! Les contraintes d efficacité ou des lacunes dans la conception peuvent entraîner des m odifications entre conception et im plém entation Quand c est le cas, il faut faire évoluer la docum entation et consulter les partenaires concernés S efforcer de concevoir les interfaces de telle façon qu elles ne soient pas concernées par les m odification s S efforcer de faire les m odifications de façon à ne pas toucher aux interfaces Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 28
Optim isation Identifier les traitem ents qui sont appliqués le plus souvent (profiling) Chercher à optim iser ces traitem ents en priorité Identifier tous les calculs qui sont effectués plusieurs fois : peut-on stocker les résultats pour ne pas les refaire? On va parfois jusqu à l optim isation de bytecode (m ais c est perdu si on recom pile ) Détail Java : éviter les m éthodes à plus de trois param ètres Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 29
Pause urgente! Ce document est mis à votre disposition par l'ensta sous couvert de la licence "Creative Commons" Page : 30