La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

J.M. Vanel Modèles de conception (design patterns)

Présentations similaires


Présentation au sujet: "J.M. Vanel Modèles de conception (design patterns)"— Transcription de la présentation:

1 J.M. Vanel http://jmvanel.free.fr/ Modèles de conception (design patterns)

2 Plan ● Motivation ● Définition ● Exemples ● A quoi servent les M.C. ? ● Classification

3 Motivation ● Démarrage d'un OS, d'un logiciel ● Jeux: séparer logique, stratégie, terrain ● Graphique: séparer algo.de tracé et et support de traçage ● Analyseur syntaxiques (parsers): séparer analyse et actions: évènements et traiteurs

4 Définition ● Tours de main exprimables en langages OO – Pouvoir d'expression de Java trop limité ==> besoin de Modèles de Conception ● Granularité moyenne ● Introduire de la souplesse – Découpler au maximum ce qui doit l'être – Propager les modifications

5 Exemples ● Observateur – Alias publication – abonnement, évènements – notification, MVC,... – Utilisations: EAI, IHM,... ● Variantes de délégation: décorateur, adapteur, état, stratégie, procuration, composite... ● Fabriques

6 Concepts ● Interface (abstraction) ● Encapsulation ● Héritage ● Délégation ● Enrober un comportement dans un objet ● Principe de Hollywood (alias callback, rappel)

7 Concept: Interface ● Alias abstraction (“virtuelles pures” en C++) ● = comportement pur sans aucune implémentation ● Contrat entre l'appelant et l'appelé ● Plus souple que les classes concrètes ● On devrait systématiquement déclarer ses objects en tant qu'interfaces ● faciles à manipuler avec eclipse

8 Concept: Encapsulation ● Les données (champs) doivent être privés sinon qq'un va ajouter des ingrédients dans votre plat pendant que vous le cuisinez ● Notion de propriété – getXX() setXX() – L'accesseur doit renvoyer un résultat immuable ● Une tendance des Patterns: encapsuler dans une classe ce qui est sujet à variations (cf tableau p.37)

9 Concept: Héritage ● On réutilise une implémentation en implémentant seulement le comportement spécifique ● Correspond à une classification (Camion “est un” Véhicule) ● Ne pas confondre avec l'agrégation (Camion “a un” Moteur)

10 Concept: Délégation ● Idée centrale de la majorité des Patterns ● réutilisation d'implémentation plus souple que l'héritage (on ne peut changer de père, mais d'ami oui) ● Typiquement le nom de la méthode du “donneur d'ordre” est le même que celui du délégué

11 Concept: Enrober un comportement dans un objet ● Remplace les pointeurs sur fonction en C/C++ ● Exemples: Commande, Stratégie

12 Concept: Principe de Hollywood ● alias callback, rappel ● Le code spécifique de l'application est appelé par un environnement d'exécution ● Exemples: Observateur, Visiteur

13 Délégation: modèle stratégie ● Le plus simple de tous les modèles basés sur la délégation

14 Délégation: Décorateur ● Alias emballage, lettre- enveloppe, wrapper ● Le décorateur a le même comportement que l'objet qu'il décore ● Il ajoute son comportement avant ou après celui de l'objet décoré

15 Délégation: autres modèles ● État; procuration;

16 Composite ● Le client peut traiter l'arbre comme la feuille ● Exemples: CAO, hiérarchie d'entreprise, traitement de texte, instruments financiers

17 Observateur ● Pour notifier des observateurs non prévus a priori des changements du sujet ● Les observateurs ne se connaissent pas entre eux, mais paraissent synchronisés

18 Fabriques Fabrique statique simple: Avant: TypeAbstrait obj = new Implementation(); Après: TypeAbstrait obj = Fabrique.createTypeAbstrait(); Fabrique abstraite: // une seule fois dans le programme: FabriqueAbstraite fab = new FabriqueConcrete1(); // Chaque fois que nécessaire: TypeAbstrait p = fab.createTypeAbstrait();

19 Nouveaux Modèles ● La fabrique poussée à l'extrême a donné naissance au moteur Spring; ● eclipse a lancé un nouveau modèle de conception, le point d'extension ● Gestionnaire d'instances (gère le cycle de vie); cf entity beans de EJB et sa classe Home

20 A quoi servent les M.C. ? ● Vocabulaire commun pour documenter les conceptions ● Pris en compte par des outils: – TogetherSoft, eclipse, PMD ● Source d'inspiration ● Aussi bien pour les objets métiers (ex.: composite pour CAO, instruments financiers) que pour les objets implémentation ● Briques de base recombinables

21 Classification ● Classification du gang des 4 (livre de Gamma et al.) : Attention! Plus sémantique que structurelle. – Modèles créateurs, structuraux, comportement ● Classification JMV – Appels indirects (variantes de délégation, observateur, etc), données (fabriques, composite, etc), archi. applicative(médiateur, façade, pont, adapteur, etc) ● Critères: nombre d'objets, actifs ou passifs, à état ou non, interface ou non, héritage ou délégation


Télécharger ppt "J.M. Vanel Modèles de conception (design patterns)"

Présentations similaires


Annonces Google