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

Slides:



Advertisements
Présentations similaires
1 Adaptation Structurelle de Composants Logiciels Stage de DEA informatique effectué à L’ENSM-Douai Encadré par Mr. Abdelhak SERIAI & Mr. Mourad OUSSALAH.
Advertisements

UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Projets et Programmes (p&p) Un nouveau concept pour définir les modalités de mise en œuvre FORMATION LAF – JUIN 2009.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Présentation du projet JAVA Système de messagerie instantanée cryptée.
1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
Les profils du SEDA confection de profil avec Agape.
1 Modèles de conception métier J.M. Vanel Architecture en couches – Présentation – Logique applicative – Modèle Métier – Accès aux données – Stockage.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
1 Créer un extension OpenOffice.org avec Eclipse Créer une extension OpenOffice.org avec Eclipse.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Test logiciel J.M. Vanel Sommaire Pourquoi tester? Catégories de tests Stratégies de test Pratique des test Caractéristiques des bons tests Gestions.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
Windows NT/2000/XP Enjeux et contraintes techniques
Concepts pour le contrôle de flux
Acquisition Rapide Multivoies
JAVA.
E-Prelude.com Importation de nomenclatures issues de divers logiciels de CAO… … via un fichier « neutre » de type EXCEL.
Accompagnement et Gestion de Projets d’Entreprises
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
ASSURER LE SUIVI DES MESSAGES TELEPHONIQUES
PROJET JAVA Automatisation d’une rame de métro
Algorithmique demander jeu du pendu.
MOT Éditeur de modèles de connaissances par objets typés
Initiation aux bases de données et à la programmation événementielle
JAVA et POO : Notion d'héritage
Javadoc et débogueur Semaine 03 Version A16.
Refactoring (Restructuration de code )
Polymorphisme : règles
Réalisation d'agents de surveillance Zephir
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Apprendre des mots au cycle 2 Quelle progression ?
Evénements.
Montage de projets : les données au cœur des projets de recherche
Bonnes pratiques Orienté Objet et Java
Programmation en C++ Classes
Windev.
Démarche de conception. Démarche didactique.
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
Programmation Orientée Objet
Plan du chapitre Diagramme de classes Les extensions syntaxiques
Behavioral Design Patterns
Formation sur les bases de données relationnelles.
Commande embarquée de moteurs
Développement d’applications interactives
Les conditions d'efficacité de la formation
Diagrammes UML 420-KE2-LG.
Programmation Android Première application Android
5 Analyse avec Designer d'Oracle
Programmation Android Composantes d’une application
Base de donnée de support
Méru - Bernadette Aubry
Langages de programmation TP11
Catherine Cyrot - bibliothèques numériques - Cours 5
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
Bäz: Données relationnelles sécurisées
Chapitre V La Procédure Comptable
Logiciel de présentation
Commande d’actionneurs à l’aide d’un microprocesseur
INTERFACE ET POLYMORPHISME
Retour sur les interfaces
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
INTELLIGENCE ARTIFICIELLE
Sigle optionnel en français FBD
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
MOT Éditeur de modèles de connaissances par objets typés
Transcription de la présentation:

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

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

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

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

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

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

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

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)

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)

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é

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

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

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

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é

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

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

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

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();

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

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

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