Design Patterns. Pourquoi utiliser des patterns? Pourquoi utiliser des patterns? Les patterns vue de loin. D où viennent les design patterns?



Documents pareils
Plan. Patrons de conception. Motivations. Design Pattern : principe. Philippe Collet

Patrons de Conception (Design Patterns)

Analyse,, Conception Objet

Design patterns. Design patterns - définition. Design patterns - avantages

Programmation Orientée Objet

Projet Active Object

Modélisation UML. Christine Solnon INSA de Lyon - 3IF 1/140.

Chapitre VI- La validation de la composition.

Objets et Programmation. origine des langages orientés-objet

Analyse,, Conception des Systèmes Informatiques

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Messagerie asynchrone et Services Web

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

UML (Diagramme de classes) Unified Modeling Language

Introduction au Génie Logiciel

Université de Bangui. Modélisons en UML

Le génie logiciel. maintenance de logiciels.

Cours en ligne Développement Java pour le web

Architecture d'entreprise : Guide Pratique de l'architecture Logique

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

BI2 : Un profil UML pour les Indicateurs Décisionnels

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

LOG4430 : Architecture logicielle et conception avancée

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

IFT2255 : Génie logiciel

URBANISME DES SYSTÈMES D INFORMATION

UML et les Bases de Données

Héritage presque multiple en Java (1/2)

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Chapitre 2 - Architecture logicielle et construction d applications client-serveur

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Les Architectures Orientées Services (SOA)

Simplifier l intégration des systèmes RH et garantir une version unique des données de l employé. D

CQP Développeur Nouvelles Technologies (DNT)

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Générer du code à partir d une description de haut niveau

Introduction au génie logiciel

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Vérifier la qualité de vos applications logicielle de manière continue

Génie Logiciel Orienté Objet UML

Diagrammes de Package, de déploiement et de composants UML

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Meta Object Facility. Plan

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Introduction aux Bases de Données Relationnelles Conclusion - 1

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Annexe : La Programmation Informatique

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Introduction à la B.I. Avec SQL Server 2008

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Évaluation et implémentation des langages

Architectures Ouvertes pour l Adaptation des Logiciels

Chapitre I : le langage UML et le processus unifié

Intégration de systèmes

Génie Logiciel avec Ada. 4 février 2013

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Intégration d'un moteur de workflow dans le SI : Dématérialisation des Ordres de misson

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

GOL502 Industries de services

WINDOWS SHAREPOINT SERVICES 2007

Automatisation de l administration système

Programmation MacOSX / ios

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Dossier d'étude technique

RTDS G3. Emmanuel Gaudin

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

CESI Bases de données

Devenez un véritable développeur web en 3 mois!

Solution de gestion des adresses IP (IPAM)

Diagramme de classes

Génie Logiciel LA QUALITE 1/5 LA QUALITE 3/5 LA QUALITE 2/5 LA QUALITE 4/5 LA QUALITE 5/5

LOG4430 : Architecture et conception avancée

les techniques d'extraction, les formulaires et intégration dans un site WEB

Créer et partager des fichiers

Evolution d Applications. Une Approche pour l Evolution des Systèmes Logiciels. Exemple : Le Serveur WWW. Applications Considérées

Programmation par composants (1/3) Programmation par composants (2/3)

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Serveur Appliance IPAM et Services Réseaux

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

BES WEBDEVELOPER ACTIVITÉ RÔLE

Catalogue des formations Edition 2015

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Gestion de configuration

Introduction aux concepts d ez Publish

Refonte front-office / back-office - Architecture & Conception -

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Architecture et Extensions d ArcGIS Server

as Architecture des Systèmes d Information

Environnements de Développement

Transcription:

Noël NOVELLI ; Université de la Méditerranée ; LIF et Département d Informatique Case 901 ; 163 avenue de Luminy 13 288 MARSEILLE cedex 9 Design Patterns D où viennent les design patterns? D où viennent les design patterns? Pourquoi utiliser des patterns? Comment devient-on un pattern? Les patterns vue de loin Les patterns vue d un peu plus près Plus de 25 ans d expérience de la POO Des projets de très grande taille Construction progressive d une véritable expertise dans la réalisation d architecture de programmes orientés objets Les design patterns sont nés de la capitalisation de cette expérience Design patterns (catalogue de modèles de conception réutilisables) Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides: gang of four Pourquoi utiliser des patterns? Les design patterns ou patrons de conception sont des solutions standardisées à des problèmes de conception classiques Proposés par des experts de la POO Utiles pour les applications de grande taille Il existe 23 patterns qui font l unanimité répertoriés dans un ouvrage de référence (cf. première diapo) Pourquoi utiliser des patterns? Solutions indépendantes des langages Solutions abstraites, de haut niveau Souvent orientés vers le bon découpage en package (modularité, flexibilité, réutilisabilité) Exprimé sous forme d architecture reliant quelques classes très abstraites Reposent beaucoup sur des interfaces Comment devient-on un pattern? Les patterns vue de loin Pour devenir un pattern, un modèle de conception doit vérifier les contraintes suivantes : Être présent dans au moins trois gros projets très largement utilisés Se trouver dans des programmes écrits dans des langages différents (C++, Eiffel, Smalltalk, Java, C#...) Être minimal (non décomposable) Être totalement documenté Seuls 23 en 10 ans! 3 catégories de patterns : création (5), structurel (7) et comportemental (11) Création Structurel Abstract Factory Builder Prototype Singleton Adapter Composite Proxy Bridge Decorator Facade Flyweight Interpreter Template Method Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor 1

Définit une interface pour créer un objet mais laisse les sous-classes décider quelle classe instancier. L usine permet à une classe de déléguer une instanciation à ses sous-classes Dans un Framework générique, il peut être nécessaire de créer des instances des objets manipulés Ces instances sont des objets de type spécifiques Donc leur type n est pas connu par le concepteur du Framework MonInstanceGénérique = new MonTypeSpecifique(); MaFactory.creeMonInstanceGénérique(); Méthode écrite par l utilisateur, qui encapsulera la création de l objet spécifique Classe à laquelle est déléguée la création des objets spécifiques Création d un objet en fonction du contexte appelant Définie dans le Framework comme une interface implémentée par l utilisateur interface MaFactoryGenerique { } MonInstanceGénérique creemoninstancegénérique(); class MaFactoryConcrete implements MaFactoryGenerique { } { } Mon InstanceGénérique creemoninstancegénérique() return new MonInstanceConcrete(); Exemple Abstract Factory C est une généralisation de Factory pour la création de groupes d objets liés Création d une Factory en fonction du contexte appelant puis des objets en fonction du contexte 2

Abstract Factory Builder Sépare la construction d un objet complexe de son implémentation de façon à ce que plusieurs représentations différentes peuvent utiliser le même processus de construction (différents formats de fichier par exemple) ou Abstract Factory ne le permettent pas de façon élégante (ajout de paramètres aux fabriques) Builder Builder Singleton S assure de l unicité d une instance de classe et évidemment le moyen d accéder à cette instance Prototype On ne crée pas d objet, on les copie! 3

Prototype Facade ToolBox Unifie et simplifie l interface d un sous-système cohérent et éventuellement autonome. Forme donc un point d entrée simplifié dans une API (interface publique) : encapsulation de base Facade Adapter Encapsule les accès à une API qui ne correspondrait pas à vos normes ou à vous besoins : on ne refait pas, on adapte Adapter Si l héritage multiple n est pas possible ou si on souhaite réduire le nombre d interface. Bidge Sépare et découpe une abstraction et son implémentation permettant à chacun d évoluer indépendamment 4

Composite Composite Compose les objets dans une structure arborescente qui représente une hiérarchie «partie de». Le pattern Composite permet au client de traiter de la même manière un objet ou un ensemble d objets. Decorator Decorator Attache une nouvelle responsabilité à un objet dynamiquement. Le Decorator fournit une alternative souple à l héritage pour étendre les fonctionnalités (parfois plus efficace) Proxy Proxy Sorte de suppléant d un objet afin de vérifier son accès et parfois utiliser comme «représentant» léger de l objet 5

Chain of responsability Chain of responsability Évite de coupler l émetteur d une requête et son receveur, en donnant la possibilité à plusieurs objets d y répondre. Iterator Fournit un moyen d accéder séquentiellement aux éléments d une agrégation d objets sans dévoiler sa représentation Mediator Définit un objet qui encapsule comment un ensemble d objet interagissent Evite le couplage fort entre objet Mediator Observer Définit une relation un-à-plusieurs telle que lorsqu un objet change, tous les objets liés sont notifiés de cette modification et mis à jour 6

Observer Plusieurs vues pour une même document Strategy Définit une famille d algorithmes, encapsule chacun d eux et les rend interchangeables. S applique sur les mêmes données Strategy Découpage en phrase par ligne, par paragraphe ou d un tableau Hiérarchie complexe Héritage vs Délégation Mauvais critère de classification Hiérarchie complexe critère structurant Héritage vs Délégation Si on doit modifier la hiérarchie cela implique des réorganisations majeures du code conception préalable importante Héritage vs Délégation Avantages de l héritage partie commune en commun! Inconvénients de l héritage Couplage fort entre les classes mères et filles, une modification dans la classe mère modifie toutes les filles Typage dynamique donc lenteur d exécution D après the gang of four, il est préférable de faire de la délégation 7

Conclusion Ne pas utiliser le Design Patterns si on n est pas sûr d avoir clairement identifié le bon pattern Le métier de concepteur s éloigne de plus en plus du code Outils liés uniquement à la conception donc pas de code Les AGL utilisent de plus en plus les Design Patterns 8