Vous êtes sur la page 1sur 61

22/04/2016

Acadmie Internationale Mohammed VI de l'Aviation Civile

Plan du Cours

I.

Intitul de Cours

Systmes d'information avancs


PATRON DE CONCEPTION
(DESIGN PATTERN)

Introduction au Design pattern

II. Patterns de cration


III. Patterns de structure
IV. Patterns de comportement

Rabab CHAKHMOUNE
2me anne
Gnie Informatique

Semestre 4

La Conception Oriente-Objet
Expression des besoins

Spcifications Informelles

Analyse (abstraction du
monde rel)

Spcifications fonctionnelles

Conception (solution
technique)

Conception dtaille

Implantation (solution
oprationnelle)

Logiciel

La Conception Oriente-Objet
Lobjectif principal de la conception oriente objet est
de dterminer le comment faire .
La conception oriente objet consiste apporter une
solution informatique aux questions et problmes
dgags lors de lanalyse oriente objet.
La conception oriente objet, tout comme lanalyse
oriente objet, nest pas un travail algorithmique.

Produit
3

22/04/2016

La Conception Oriente-Objet

La Conception Oriente-Objet

Un art difficile...
Une conception rutilisable, extensible, adaptable,
performante est extrmement difficile.

Lexprience cest :
ne pas rinventer la roue,
rutiliser systmatiquement des solutions qui ont fait
leurs preuves,

Quelle est la diffrence entre un novice et un


concepteur expriment?
Le novice hsite beaucoup entre diffrentes
variantes
Lexpert trouve tout de suite la bonne solution.

les patterns

Quel est le secret?


lEXPERIENCE !

Ide de rutilisation dune


solution prouve concernant
une problmatique maintes
fois rencontres.

Patron ?

Patron ?
Un patron dsigne un modle, dessin, gabarit, motif,
chantillon

Les patrons ont t introduits par larchitecte Christopher


Alexandre en 1979.

Une solution rutilisable un problme rcurrent de


conception logiciel, dans un certain contexte

A partir de cette date, ils ont t utiliss partout o il y a


un besoin de capitaliser de la connaissance et du savoirfaire.

La documentation dune exprience de conception


valide par la spcification dune architecture
rutilisable

Depuis il y a eu une diversification et une adaptation des


patrons par les utilisateurs suivants leurs domaines de
travail
Organisation de dveloppement
Processus logiciels

Un concept de gnie logiciel, associ (la plupart du


temps) avec la programmation oriente objet

22/04/2016

Types de Patrons

Types de Patrons

Patrons
processus

Patrons
danalyse

Patrons de
conception

Patrons
darchitecture

Patrons
processus

Patrons
dimplantation

Un processus est dfinie comme une srie dactions


(de tches) dans lesquelles une ou plusieurs entres
sont utilises pour produire une ou plusieurs
sorties.

Un patron processus dcrit un savoir-faire sous


forme dactions et/ou tches suivre pour le
dveloppement dun logiciel.

Un patron processus dcrit ce quil faut faire sans


dtailler comment le faire.

10

Types de Patrons

Types de Patrons

Patrons
danalyse

Patrons de
conception

Il a pour but de guider les tapes danalyse lors de


lingnierie des systmes dinformation.

Cette phase permet de comprendre et de modliser


lapplication et le domaine dans lequel elle opre.

Permettent aux concepteurs de modliser leur


vision du monde rel et de construire des solutions
conceptuelles rutilisables par la suite

11

Un patron de conception capture et extrait la


connaissance et lexprience lies un processus de
conception oriente objet.

Le patron dcrit ainsi les classes et les instances qui


sont ncessaires pour rsoudre un problme gnral
de conception, dans un contexte particulier.

Chaque patron de conception se consacre un


problme ou une solution particulire de
conception.
12

22/04/2016

Types de Patrons

Types de Patrons

Patrons
darchitecture

Patrons
dimplantation

Les patrons darchitecture traitent les diffrents


styles darchitecture logicielle

Un patron dimplantation est un patron de bas


niveau spcifique un langage de programmation.

Un patron darchitecture exprime lorganisation et


le schma dune application.

Il dcompose lapplication en un ensemble de sous


systmes tout en spcifiant pour chacun ses
responsabilits, ses interactions avec les autres sous
systmes.

Il dcrit comment implanter des aspects particuliers


un composant ou une relation entre composants
en utilisant les outils fournis par un langage de
programmation donn.

Li aux choix technologiques faits par le


dveloppeur du logiciel.

13

14

Une trs brve introduction UML

Types de Patrons

Unified Modelling Language

Patrons
processus

Patrons
danalyse

Patrons de
conception

Patrons
darchitecture

Spcification de lOMG (Object Management Group)


Langage standard de modlisation dapplications objets:
Plusieurs notations pour plusieurs diagrammes / modles:
Diagramme de cas dutilisation
Diagramme de classes
Diagramme de squence
Diagramme dactivits
Diagramme dtat
...

Patrons
dimplantation

15

16

22/04/2016

Diagramme de classes

Diagramme de classes

Modlise la structure statique de lapplication:


Les classes et les relations entre les classes
o Qui interagit avec qui? (mais pas comment)

Un diagramme de classe dcrit visuellement un ensemble de classes ou


interfaces et leurs relations, qui peuvent tre de diffrente nature :
hritage : lorsqu'une classe hrite d'une autre ou implmente une
interface,
association : lorsqu'une classe utilise une ou plusieurs instances
d'une autre classe,

instanciation : lorsqu'une classe cre des instances d'une autre


association : une instance dune classe doit connatre une instance de lautre
classe

classe.

gnralisation : un lien dhritage une classe est la super classe de lautre


17

multiplicit : le nombre dinstances de la classe qui peuvent tre associs avec


18
une instance de lautre classe

Diagramme de squence
Modlise le comportement dynamique de lapplication :
Les objets et les interactions entre les objets
o Quels messages sont changs et quand?

Introduction du Design
Pattern
Historique
Motivation
Dfinition
Rubriques de la description
Classification
Exemples

19

Utilisation

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Historique
Historique

Motivation

Les patrons de conception


o Tirent leur origine des travaux de l'architecte Christopher
Alexander dans les annes 70

Dfinition
Dfinition de patrons :
larchitecture des btiments
la conception des villes et de leur environnement

Rubriques de la description
Classification
Exemples
Utilisation

21

Introduction

Cration

Structure

Comportement

Historique

22

Introduction

Cration

Structure

Comportement

Historique
Ide :
Appliquer la notion de patron du logiciel : design patterns

Christopher
Alexander

Un patron dcrit un problme qui se manifeste


constamment dans notre environnement, et donc
dcrit le cur de la solution de ce problme, dune
faon telle que lon peut rutiliser cette solution des
millions de fois, sans jamais le faire deux fois de la
mme manire.

premiers patrons partir de 1987 (partie de la thse de Erich Gamma)


puis formalis dans le livre du ( Gang of Four, GoF )
o Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides
Design Patterns - Elements of Reusable Object-Oriented Software
1er catalogue en 1993 : Elements of Reusable Object-Oriented Software

23

Vocabulaire :
design patterns
modles de conception
patrons de conception
micro-architectures

24

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Intrt des patrons de conception


Pourquoi dfinir des patrons de conception
Construire des systmes plus extensibles, plus robustes au changement
Capitaliser lexprience collective des informaticiens
Rutiliser les solutions qui ont fait leur preuve
Identifier les avantages/inconvnients/limites de ces solutions
Savoir quand les appliquer

Historique
Motivation
Dfinition
Rubriques de la description

Complmentaire avec les API


une API propose des solutions directement utilisables
un patron explique comment structurer son application, une API

Classification
Exemples
Utilisation

Patron de conception dans le cycle de dveloppement


intervient en conception dtaille
reste indpendant du langage dimplantation
25

Introduction

Cration

Structure

Comportement

26

Introduction

Quest ce quun patron de conception ?

Cration

Structure

Comportement

Quest ce quun patron de conception ?

Dfinition :
Un patron de conception (design pattern) dcrit une structure commune et
rptitive de composants en interaction (la solution) qui rsout un problme
de conception dans un contexte particulier.

Un bon patron de conception :

rsout un problme

Quatre lments essentiels

correspond une solution prouve

Nom

favorise la rutilisabilit, lextensibilit, etc.

inclut une composante subjective : utilit, esthtique, etc

un ou deux mots pour dcrire le problme de conception considre, ses


solutions et leurs consquences.

Problme

situation o le problme sapplique

Solution

lments de la conception, leurs relations et collaborations.


la solution nest pas forcment prcise : ide darchitecture.
plusieurs variantes peuvent tre possibles.

Consquences

effets rsultants et compromis induit


Les consquences peuvent tre positives ou ngatives (arbitrage).
27

28

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Description dun patron de conception


Rubriques utilises

Historique
Motivation
Nom

Structure

Intention

Constituants

Rubriques de la description

Alias

Collaborations

Classification

Motivation

Consquences

Indications dutilisation

Implantation

Dfinition

Exemples

Exemples de code

Utilisation

Utilisations remarquables
Patrons apparents

29

Introduction

Cration

Structure

Comportement

Collaborations

Alias

Consquences

Motivation

Implantation

Indications dutilisation

Exemples de code

Comportement

Intention : courte description de :


ce que fait le patron de conception ;
sa raison dtre ou son but ;
cas ou problme particulier de conception concern.

Structure
Constituants

Structure

Nom : nom de rfrence du patron


tend le vocabulaire du concepteur

Description de la solution
propose par le patron

Intention

Cration

Identification et comprhension du patron

Rubriques utilises

Nom

Introduction

Description dun patron de conception

Description dun patron de conception

Identification et comprhension
du patron

30

Alias : Autres noms connus pour le patron


Motivation :
scnario qui illustre un cas de
conception
montre larchitecture en classes et
objets de la solution
aide comprendre les descriptions plus
abstraites du modle

Utilisations remarquables
Patrons apparents
31

Indications dutilisation :
Quels sont les cas qui justifient
lutilisation du patron ?
Quelles situations de conception peuvent
tirer avantage du patron ?
Comment reconnatre ces situations ?
32

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Description dun patron de conception

Cration

Structure

Comportement

Description dun patron de conception

Description de la solution propose par le patron


Structure : description de la solution sous forme de :
un diagramme de classe pour larchitecture ;
des diagrammes dinteraction pour la dynamique.

1- nom du patron et classification

Constituants : classes/objets de la solution


avec leurs responsabilits

4- motivation : un scnario dapplication du patron, les problmes particuliers

2- intention : le problme rsoudre


3- alias : les patrons similaires dans dautres langages de patrons

Collaborations entre les constituants pour


assumer leurs responsabilits

5- indications dutilisation : les situations dans lesquelles ce patron peut tre utilis

Consquences :
compromis induits par lutilisation du patron
impacts sur larchitecture de conception
gains en terme de diminution du couplage dans la solution

6- structure : une reprsentation graphique du patron

Implantation : Solutions types,


techniques, piges et astuces.

9- consquences : dcrit les rsultats dutilisation du patron

Utilisations remarquables : exemples


issus de systmes existants

7- participants : les classes et/ou les objets participants et leurs responsabilits


8- collaborations : comment les participants collaborent

Exemples de code : extraits de code


illustrant la mise en uvre du
Patron

10- implantation : les astuces et les conseils d'implantation


11- exemples de code : fragments de code illustrant limplantation du patron
12- utilisations remarquables : des exemples dutilisations relles de ce patron

Patrons apparents :
patrons similaires et diffrences essentielles
utilisation conjointe avec dautres patrons

Introduction

Cration

13- modles apparents : dautres patrons utiliss avec (ou par) celui-ci
20

Structure

Comportement

Introduction

Cration

Structure

Comportement

Classification des patrons de conception


Design Patterns de cration
permettent de rsoudre des contraintes de cration
instance unique
mcanismes de cache
contrle des valeurs des instances cres

Historique
Motivation
Dfinition

Design Patterns structuraux

Rubriques de la description

permettent de structurer des problmes courants


modlisation d'arbres, de graphes

Classification
Exemples

Design Patterns comportementaux


permettent d'obtenir un comportement spcifique
personnalisation d'algorithmes
changement de comportement en cours du cycle de vie
raction aux vnements

Utilisation

35

36

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Classification des patrons de conception


Crateur

Structurel

Comportement

Fabrique

Adaptateur

Interprte

Fabrique abstraite

Pont

Patron de mthode

Motivation

Monteur

Composite

Prototype

Dcorateur

Chane de
responsabilits

Dfinition

Faade

Commande

Rubriques de la description

Poids mouche

Itrateur

Procuration

Mdiateur

Singleton

Historique

Classification

Mmento

Exemples

Observateur

Utilisation

tat
Stratgie
Visiteur
37

Introduction

Cration

Structure

Comportement

38

Introduction

Cration

Exemple (1/2)

Structure

Comportement

Exemple (2/2)

Problmatique

Solution

L'interface propritaire ne correspond pas celle utilise dans notre code, le

Crer un adaptateur.

systme existant ne peut donc pas utiliser la classe propritaire.

Systme
existant

Systme
Systme
existant
existant

Classe
propritaire

39

Pas du
modification
du code

Adapteur

Nouveau
code

Classe
propritaire

Pas du
modification
du code

40

10

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Un problme de conception

Cration

Structure

Comportement

Un problme de conception
Chaque avion doit communiquer avec tous les autres avions!!

Exemple du trafic arien


Il y a de nombreux avions qui transitent par un aroport,
Les avions peuvent tre des avions de ligne, des avions cargo, etc.
Les avions ne doivent pas entrer en collision,
Latterrissage et le dcollage des avions doivent tre synchroniss.

Quelle est la solution adopte dans la ralit?

21

Introduction

Cration

Structure

Comportement

Solution au problme

22

Introduction

Cration

Structure

Comportement

Solution au problme

Chaque avion communique avec la tour de contrle.

Un avion communique son information la tour de contrle.

La tour de contrle gre linteraction entre les avions.

La tour de contrle utilise cette information pour grer les


atterrissages et les dcollages.
La tour de contrle envoie des ordres aux avions.
23

24

11

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Utilit

Historique

Aide au dveloppement de logiciels par la rutilisation de lexprience


collective des ingnieurs expriments en informatique

Motivation
Dfinition

Aide promouvoir les bonnes pratiques de conception, en capturant les

Rubriques de la description

expriences existantes et bien valides en dveloppement logiciel

Classification

Aide gagner en rapidit et en qualit de conception ce qui diminue

Exemples

galement les cots

Utilisation

Facilite la communication entre les dveloppeurs

45

Introduction

Cration

Structure

Comportement

Choix dun patron de conception

46

Introduction

Cration

Structure

Comportement

Mise en uvre dun patron de conception

Est-il une solution au problme ?

Lire compltement la description, en particulier les sections

Quels sont ses buts ?

indications dutilisation et consquences.

Quelles sont les relations avec les autres patrons de conception ?

tudier en dtail les sections Structure, Constituants et

Est-ce que dautres patrons jouent le mme rle ?

Collaborations
Regarder la section Exemple de code

47

48

12

22/04/2016

Introduction

Cration

Structure

Comportement

Ce quil ne faut pas attendre des patrons de conception

Une solution universelle prte lemploi


Une bibliothque de classes rutilisables

Patrons de cration

Lautomatisation totale de linstanciation dun patron de conception

Fabrique abstraite

La disparition du facteur humain

Prototype
Singleton
Fabrique
Monteur
49

Introduction

Cration

Structure

Comportement

Patrons cration

Introduction

Cration

Structure

Comportement

Patrons cration
But :
Dfinir un mcanisme de cration de classes ou dobjets.

Permettre dynamiquement ou statiquement de prciser


QUOI (lobjet),
QUI (lacteur),
COMMENT (la manire) et
QUAND (le moment) de la cration

Caractristiques cls :
le patron encapsule (masque) la connaissance des classes concrtes
le patron masque comment leurs instances sont cres et combines.

Deux types de motifs


1. Motifs de cration de classe (utilisation de lhritage) : Factory
2. Motifs de cration dobjets (dlgation de la construction un autre
objet) : AbstractFactory, Builder, Prototype

Consquence :
Un modle crateur offre une grande libert concernant :
quels objets doivent tre crs
qui doit les crer
comment les crer
quand les crer

51

52

13

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)


Intention
Fournir une interface pour la cration de familles dobjets apparents
ou interdpendants, sans quil soit ncessaire de spcifier leurs classes
concrtes.

Fabrique abstraite
Prototype

Alias : Kit

Singleton

Indications dutilisation
un systme doit tre indpendant de la manire dont ses produits ont t
construits, combins ou reprsents
un systme est compos partir dune famille de produits, parmi plusieurs
on souhaite renforcer le caractre de communaut dune famille de produits
conus pour tre utiliss ensemble

Fabrique
Monteur

Exemples : bote outils proposant plusieurs look-and-feel


(dcors).

53

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)

Solution (principe) : dfinir une interface qui dclare les


mthodes crerAscenceur, crerFentre, etc.

Introduction

Cration

Structure

54

Comportement

Fabrique abstraite (Abstract Factory)


Crer une application pour apprendre l'algorithmique

55

56

14

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Fabrique abstraite (Abstract Factory)

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)

Adapter le logiciel pour diffrentes plate-formes

Adapter le logiciel pour diffrents publics

Windows

Enfants

Linux
MacOS
Android

Lycens

57

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)

58

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)


Solution non maintenable

Constat : on a cr des objets un peu partout !

b = new BriqueEffacerTout();
new
new

If(pourLesEnfants)
{
b = new briqueEffacerToutPourEnfant();
}
else
{
b = new briqueEffacerToutPourLyceen();
}

new
59

60

15

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Fabrique abstraite (Abstract Factory)

On va devoir adapter
notre logiciel
dalgorithmique
deux publics

Structure

Comportement

Fabrique abstraite (Abstract Factory)

On applique le patron
de conception
Fabrique abstraite

Comment faire ?

Cration

Fabrique des
briques pour
les enfants

Fabrique moi une


brique EffacerTout

Effacer Tout

61

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)

62

Introduction

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)


Bonne Solution

Fabrique des
briques pour
les lycens

Fabrique moi une


brique EffacerTout

b = new BriqueEffacerTout();
FabriqueAbstraite
fabriqueBriques = new
FabriqueEnfant()

fabriqueBriques.getNouvelleBriqueEffacerTout()
Effacer Tout

63

64

16

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Fabrique abstraite (Abstract Factory)

Cration

Structure

Comportement

Fabrique abstraite (Abstract Factory)

65

Introduction

Cration

Structure

Comportement

66

Introduction

Cration

Structure

Comportement

Prototype
Intention
Spcifie le type des objets crer par une instance (le prototype) et
cre de nouveaux objets en copiant ce prototype (clonage).

Fabrique abstraite
Prototype
Singleton

Alias :

Fabrique

Indications dutilisation
classes instancier spcifies lexcution (p.ex. chargement dynamique).
viter de construire une hirachie de classes Fabrique
classes pouvant prendre un nombre rduit dtats (un prototype par tat)

Monteur

Exemples :
diteur de musique : les notes sont disponibles et copies avant utilisation
diteur UML : les lments apparaissent dans un menu et sont copis pour
les ajouter sur le dessin (puis les adapter).
67

68

17

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Prototype

Structure

Comportement

Prototype
Crer des objets selon un modle

Exemple vu : Pour ajouter des commandes rversibles aux menus


textuels, il ne faut pas excuter directement la commande obtenue du
menu mais une copie de cette commande (mmorisation des informations
pour pouvoir annuler).
Besoins

Crer selon des modles


Enrichir la liste des modles

69

Introduction

Cration

Structure

Comportement

70

Introduction

Cration

Prototype

Structure

Comportement

Prototype

A ne pas faire : une cration diffrente au sein de chaque


bouton...

A faire

new Maison(Color.RED,
Color.WHITE, 16, 32, 16)

Chaque bouton contient


un prototype cloner.
new Arbre(Color.GREEN,
Color.BROWN, 8, 32, 8)

71

72

18

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Prototype
Modlisation UML

Fabrique abstraite
Prototype
Singleton
Fabrique
Monteur
+ Copier un objet sans se soucier de sa classe exacte
+ Ajouter dynamiquement des objets une palette
- le mcanisme de clonage crer
73

Introduction

Cration

Structure

Comportement

74

Introduction

Cration

Singleton

Structure

Comportement

Singleton

Intention
Garantir quune classe na quune seule instance et fournir un point daccs
global cette instance.

Exemples
Classes qui ne devraient avoir quune seule instance la fois :
Horloge du systme

Alias :

Fentre principale dune application


Indications dutilisation
Il doit y avoir exactement une instance dune classe
Cette instance doit tre accessible globalement
Le type du singleton peut-tre sous-class

Gnrateur de nombre alatoire (random number generator)

la classe elle-mme est responsable de grer lunicit de lobjet et


son accs

75

76

19

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Singleton
Diagramme de classe

Structure

Comportement

Singleton
Exemple de code
/* *
* Une classe satisfaisant le design pattern Singleton
*/
public class Singleton {
private static final Singleton INSTANCE = new Singleton () ;
/* * La prsence d un constructeur priv supprime
* le constructeur public par dfaut .
*/
private Singleton () {}
/* *
* Retourne l unique instance de cette classe.
* @return l instance du singleton .
*/
public static Singleton getInstance () {
return INSTANCE ;
}
}
77

Introduction

Cration

Structure

Comportement

78

Introduction

Cration

Structure

Comportement

Singleton
Exemple de code

Fabrique abstraite
Prototype

public class MainFrame extends JFrame {


private static MainFrame instance;
private MainFrame() {
...
}
public static getInstance () {
if (MainFrame.instance == null)
MainFrame.instance = new MainFrame();
return MainFrame.instance;
}
}

Singleton
Fabrique
Monteur

79

80

20

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Fabrique (Factory method)

Cration

Structure

Comportement

Fabrique (Factory method)

Intention
Cration dun objet, mais difficile de connaitre prcisment de quelle classe
permettre une classe de dlguer la cration dobjets des sous-classes.

Problme
Parfois, une application ne peut pas anticiper la classe concrte dobjet quelle
doit instancier (seulement linterface ou la classe abstraite).

Alias : Fabrication, Constructeur polymorphe (ou virtuel)

Solution
Dfinir une interface pour crer des objets dun certain type mais laisser les
sous-classes dcider quel sous-type de classe concrte instancier.

Indications dutilisation
une classe ne peut pas prvoir les classes des objets quelle aura crer
une classe attend de ses sous-classes quelles spcifient les objets quelles
crent

Exemples :
Crer un document qui peut tre texte, dessin ou prsentation en fonction
du nom du type de document.
On veut pouvoir ajouter de nouveaux types de documents.
Obtenir un manipulateur sur des objets graphiques.

81

Introduction

Solution :

Cration

Structure

Comportement

Consquence :
Il procure un gte pour les sous-classes (objets largis)
Il inter-connecte des hirarchies parallles de classes.

Introduction

Fabrique (Factory method)

Structure

Comportement

Fabrique (Factory method)


Diagramme de squence UML

Product - Interface
Dfinit l'interface des
objets cres par Factory
ConcreteProduct Classe Concrte
Implante l'interface
Product

cration objet

Factory - Interface
Dfinit la mthode de
cration qui retourne un
objet de type Product

utilisation objet

ConcreteFactory Classe Concrte


Cre une instace d'un
ConcretProduct

Cration

82

destruction objet
(optionnel)
83

84

21

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Monteur (Builder)
Intention
Dissocier la construction dun objet complexe de sa reprsentation, de
sorte que le mme processus de construction permette des
reprsentations diffrentes.

Fabrique abstraite
Prototype

Alias :

Singleton

Indications dutilisation
lalgorithme de cration dun objet complexe doit tre indpendant des
parties qui composent lobjet et de la manire dont ces parties sont
agences
le processus de construction doit autoriser des reprsentations diffrentes
de lobjet en construction

Fabrique
Monteur

Exemple :
Crer un message lectronique partir du destinataire, de lexpditeur, de
lobjet, du texte, des fichiers attachs, etc.
85

Introduction

Cration

Structure

Comportement

86

Introduction

Cration

Structure

Comportement

Rsum : DP de cration

Monteur (Builder)
Problme
Ce motif est intressant utiliser lorsque lalgorithme de cration dun objet
complexe doit tre indpendant des constituants de lobjet et de leurs
relations, ou lorsque diffrentes reprsentations de lobjet construit doivent
tre possibles

Le Factory Pattern : Dfinit une interface pour la cration dobjets en


laissant les sous-classes raliser concrtement les instanciations.

Le Abstract Factory Pattern est utilis pour retourner un groupe de


classes

Solution

Le Prototype Pattern : Permet de crer des instances partir dune


instance prototype qui est copie puis modifie.
Le Singleton Pattern est un pattern qui assure quil ny a quune et une
seule instance dun objet et quil est possible davoir un accs global cette
instance
Le Builder Pattern assemble un nombre dobjets pour construire un
nouvel objet, partir des donnes qui lui sont prsentes. Frquemment le
choix des objets assembler est ralis par le biais dune Factory
87

88

22

22/04/2016

Introduction

Cration

Structure

Comportement

Quest ce quun patron de conception ?

01 Avril
2016

Dfinition :
Un patron de conception (design pattern) dcrit une structure commune et
rptitive de composants en interaction (la solution) qui rsout un problme
de conception dans un contexte particulier.

Rappel

Quatre lments essentiels


Nom

un ou deux mots pour dcrire le problme de conception considre, ses


solutions et leurs consquences.

Problme

situation o le problme sapplique

Solution

lments de la conception, leurs relations et collaborations.


la solution nest pas forcment prcise : ide darchitecture.
plusieurs variantes peuvent tre possibles.

Consquences

effets rsultants et compromis induit


Les consquences peuvent tre positives ou ngatives (arbitrage).
90

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Classification des patrons de conception

Description dun patron de conception

Design Patterns de cration


permettent de rsoudre des contraintes de cration
instance unique
mcanismes de cache
contrle des valeurs des instances cres

1- nom du patron et classification


2- intention : le problme rsoudre
3- alias : les patrons similaires dans dautres langages de patrons
4- motivation : un scnario dapplication du patron, les problmes particuliers
5- indications dutilisation : les situations dans lesquelles ce patron peut tre utilis
6- structure : une reprsentation graphique du patron

Design Patterns structuraux


permettent de structurer des problmes courants

7- participants : les classes et/ou les objets participants et leurs responsabilits

modlisation d'arbres, de graphes

8- collaborations : comment les participants collaborent


9- consquences : dcrit les rsultats dutilisation du patron

Design Patterns comportementaux


permettent d'obtenir un comportement spcifique
personnalisation d'algorithmes
changement de comportement en cours du cycle de vie
raction aux vnements

10- implantation : les astuces et les conseils d'implantation


11- exemples de code : fragments de code illustrant limplantation du patron
12- utilisations remarquables : des exemples dutilisations relles de ce patron
13- modles apparents : dautres patrons utiliss avec (ou par) celui-ci
20

92

23

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Patron de cration

Le Abstract Factory Pattern : Fournir une interface de cration dobjets


regroups en famille sans devoir connatre les classes concrtes destines
la cration de ces objets

Factory - Interface
Dfinit la mthode de
cration qui retourne
un objet de type
Product

ConcreteProduct Classe Concrte


Implante l'interface
Product

ConcreteFactory Classe Concrte


Cre une instace d'un
ConcretProduct
93

Introduction

Comportement

Patron de cration

Le Factory Pattern : Introduire une mthode abstraite de cration dun


objet en dlguant aux sous-classes concrtes la cration effective.

Product - Interface
Dfinit l'interface des
objets cres par
Factory

Structure

Cration

Structure

Comportement

Patron de cration

94

Introduction

Cration

Structure

Comportement

Patron de cration

Le Prototype Pattern : Crer des nouveaux objets par duplication dobjets


existants appels prototype qui disposent de la capacit de clonage.

95

Le Singleton Pattern : Garantir quune classe ne possde quune seule


instance et que cette classe fournisse une mthode retournant cette instance
unique.

96

24

22/04/2016

Introduction

Cration

Structure

Comportement

Patron de cration
Le Builder Pattern : Abstraire la construction dobjets complexes de leur
reprsentation de sorte quun client puisse crer ces objets complexes sans
devoir se proccuper des diffrences de reprsentation.

Patrons de Structure
Adaptateur
Pont
Composite
Dcorateur
Faade
Poids mouche
Procuration

97

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Patrons de Structure

Dfinir la faon dassembler des classes et des objets pour raliser


des structures complexes.

Permettre dorganiser les classes dune application : Comment


composer classes et objets pour obtenir des structures plus
complexes ?

Adaptateur
Faade
Pont
Composite
Dcorateur

Patrons de structure (7)


Adaptateur
Pont
Composite
Dcorateur
Faade
Poids mouche
Procuration

Poids mouche
Procuration

99

100

25

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Adaptateur

Structure

Comportement

Adaptateur

Intention
Convertit linterface dune classe en une autre conforme lattente dun client.
Permet de faire collaborer des classes aux interfaces incompatibles.

Contexte
Un service est dfini par une interface; les clients appellent le service via cette
interface; les servants implantent linterface

Alias : Empaqueteur (Wrapper)


Problme
un systme les bonnes donnes et les bonnes mthodes, mais la mauvaise
interface. Gnralement utilis lorsque vous devez crer des drives dune
classe abstraite en cours de dfinition ou dj dfinie.

Indications dutilisation
Adaptation des logiciels pour lintgration dans des nouveaux systmes
Intgration des systmes htrognes

Solution
Introduire un composant (adapter ou wrapper) reprsentant une couche de
transformation entre les clients et le servant
Ladapter intercepte les requtes et rponses du servant et les adapte de
faon les rendre conformes avec linterface attendue

Prvoir lajout de classes non encore connues

101

Introduction

Cration

Structure

Introduction

Cration

Structure

Adaptateur

Adaptateur

Diagramme de classes UML

Diagramme de classes UML

Cible - Interface

Client

Dfinit linterface utilise par les


clients

ClasseAdaptee

Adapteur

Dfinit une interface existante qui


exige une adaptation

Comportement

102

Utilise des objets conformes linterface


Cible

Adapte linterface ClasseAdaptee


linterface cible

Comportement

Avantages:
Les fonctions implmentes dans une classe existante pourront tre
adaptes
Les fonctions absentes pourront tre implmentes dans lobjet

103

encapsuleur

104

26

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Adaptateur

Structure

Comportement

Adaptateur

Diagramme de squence UML

Exemple
Supposons que vous deviez respecter les spcifications suivantes:
Crer des classes pour des points, des lignes et des carrs ayant un
comportement afficher
Interface standard
Les objets clients nont pas besoin de savoir sils ont un point, une ligne
ou un
carr, mais uniquement quils possdent lune de ces formes
En dautres termes, il sagit dinclure ces formes dans un concept de
niveau suprieur que nous appellerons Forme

Interface
spcialise (nonconforme)

Besoins dans lavenir:


Traiter tous ces objets de la mme faon, sans sarrter sur leurs
diffrences
Permet dajouter ultrieurement dautres types de formes sans
modifier les clients

Polymorphisme

105

Introduction

Cration

Structure

Comportement

Adaptateur

Introduction

Cration

Structure

106

Comportement

Adaptateur
La classe forme aura les comportements suivants:

Polymorphisme:
Nous aurons plusieurs objets dans le systme, mais les clients
correspondants agiront envers eux dune seule et mme faon.
Lobjet client indique simplement au point, la ligne ou au carr quil
doit effectuer une action (afficher). Chaque point, ligne ou carr doit
ensuite savoir comment se comporter en fonction de son type.

107

Supposons quil existe une classe CercleXX et que vous dcidiez


dutiliser les mthodes quelle contient:
afficherCercle
remplirCercle
annulerAffichageCercle

108

27

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Adaptateur

Structure

Comportement

Adaptateur

Dans le cas prsent, vous ne pouvez pas utiliser CercleXX directement si vous
souhaitez conserver le polymorphisme de Forme pour les deux raisons suivantes:
Les noms des mthodes et les listes de paramtres diffrent de ceux de la
classe Forme
La nouvelle classe doit tre drive de Forme

109

Introduction

Cration

Structure

Comportement

Adaptateur

110

Introduction

Cration

Structure

Comportement

Adaptateur

Solution:
Crer une nouvelle classe qui sera drive de Forme et implmentera son
interface mais en vitant de rcrire limplmentation des mthodes de la
classe cercle fournie dans CercleXX

Problme: un systme les bonnes donnes et les bonnes mthodes, mais la


mauvaise interface. Gnralement utilis lorsque vous devez crer des drives
dune classe abstraite en cours de dfinition ou dj dfinie.
Solution: ladaptateur fournit un encapsulateur avec linterface voulue.

Participants et collaborateurs: la classe Adaptateur adapte linterface la


classe Adaptee pour quelle corresponde celle de la cible de lAdaptateur (c-d la classe partir de laquelle elle est drive).
Consquences: grce au pattern Adaptateur, des objets existant peuvent tre
intgrs de nouvelles structures de classes sans tre limits par leur
interface.

111

112

28

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Adaptateur
Implmentation: intgrer la classe existante dans une autre classe. La classe qui
encapsule doit tre compatible avec linterface voulue et appeler les mthodes de la
classe encapsule

Adaptateur
Pont
Faade

class Cercle extends Forme


{
.
private CercleXX pcx;

public Cercle() {
pcx=new CercleXX();
}
void public afficher() {
pcx.afficherCercle();
}
}

Composite
Dcorateur
Poids mouche
Procuration

113

Introduction

Cration

Structure

Comportement

Pont

114

Introduction

Cration

Structure

Comportement

Pont

Intention
Sparer laspect dimplantation dun objet de son aspect de reprsentation et
dinterface afin que ces deux lments puissent voluer indpendamment lun
de lautre.
Alias : Bridge

Indications dutilisation
viter un lien dfinitif entre une abstraction et son implantation
permettre la spcialisation des abstractions et des implantations
un changement de limplantation ne doit pas avoir dimpact sur les clients
plusieurs objets partagent la mme implantation mais ceci est transparent
pour les clients (compteur de rfrences)

115

Exemples
Affichage de fentres graphiques spcifiques des plateformes ex XWindow
et PMWindow
Labstraction Voiture doit pouvoir rouler sur une route (implantation).
Tout type de voiture doit pouvoir rouler sur tout type de route.

Consquences
dcouplage entre abstraction et implantation
dissimulation des dtails dimplantation aux clients

116

29

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Pont

Structure

Comportement

Pont
Plutt que d'ajouter une mthode par environnement possible chacune des
formes, le patron de conception Pont suggre de crer une interface spare pour
les primitives de dessin. Cette interface est utilise par les diffrentes formes qui
alors ne dpendent pas de l'implmentation.

Exemple :
Dessiner (opration) les objets gomtriques (abstraction) sur
un afficheur (implantation).
Considrons une classe reprsentant la classe de base de formes gomtriques, et
ses classes (cercles, rectangles, triangles, ...). Tous les types de formes ont des
proprits communes (une couleur par exemple) et des mthodes abstraites
communes (calcul de surface par exemple) implmentes par les classes drives
(comment calculer la surface d'un cercle, ...).
Toutes les formes peuvent galement se dessiner l'cran. Mais la faon de
dessiner dpend de l'environnement graphique et du systme d'exploitation.

117

Introduction

Cration

Structure

Comportement

118

Introduction

Cration

Structure

Comportement

Faade
Adaptateur
Intention
Regrouper les interfaces dun ensemble dobjets en une interface unifie
rendant cet ensemble plus simple utiliser pour un client.

Pont
Faade

Alias :

Composite
Dcorateur

Indications dutilisation
On souhaite disposer dune interface simple pour un systme complexe
diminuer le couplage entre un sous-systme et les clients
structuration dun sous-systme en niveaux

Poids mouche
Procuration

119

120

30

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Faade

Faade

Diagramme de classes

Exemples
- Un compilateur (compiler) qui utilise lanalyseur lexical,
- lanalyseur syntaxique,
- lanalyseur smantique,
- une table des symboles,
- engendre du code pour plusieurs architectures,
- etc.

La faade encapsule la complexit des


interactions entre les objets mtier
participant un workflow.

Problme
Systme difficile utiliser
Ncessit de connaitre toutes les classes
Solution
Utiliser les classes telles quelles existent
121

Introduction

Cration

Structure

Comportement

122

Introduction

Cration

Faade

Structure

Comportement

Faade

Diagramme de classes

Consquences

simplifier l'utilisation et la comprhension d'une bibliothque


logicielle car la faade possde des mthodes pratiques pour les
tches courantes,

rendre le code source de la bibliothque plus lisible pour la mme


raison,

rduire les dpendances entre les classes utilisatrices et les classes


internes la bibliothque puisque la plupart des classes utilisatrices
utilisent la faade, ce qui autorise plus de flexibilit pour le
dveloppement du systme,

123

124

31

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Composite
Adaptateur
Intention
Offrir un cadre de conception dun hirarchie de composition arborescente
dobjets sans que les clients aient traiter diffremment les composs et les
individus.
Composer des objets dans des structures darbre pour reprsenter des
hirarchies composants/composs

Pont
Faade
Composite
Dcorateur

Alias :

Poids mouche

Indications dutilisation
reprsentation de structures rcursives dlments htrognes
Traitement uniforme de tous les objets du composite, quils soient
terminaux ou non.

Procuration

125

Introduction

Cration

Structure

Comportement

126

Introduction

Composite

Cration

Structure

Comportement

Composite
Diagramme de classes

Exemples

Composant
dclare l'interface pour la
composition d'objets
met en uvre le
comportement par dfaut

Groupe dans diteur de schmas mathmatiques.

Consquences
+ facilite lajout de nouveaux types de composants

127

Feuille
reprsente les objets
manipuls, ayant une
interface commune

ObjetComposite
Dfinit un comportement pour les composants ayant
des enfants
stocke les composants enfants
met en uvre la gestion des composants enfants

32

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Composite

Composite

Exercice

Exercice

Un exemple simple consiste considrer l'affichage des noms de fichiers


contenus dans des dossiers :

Comportement

L'Objet est de faon gnrale


ce qui peut tre contenu dans
un dossier : un fichier ou un
dossier,

Pour un fichier, on affiche ses informations.


Pour un dossier, on affiche les informations des fichiers qu'il contient.

L'ObjetSimple est un fichier,


sa mthode affiche() affiche
simplement le nom du fichier,

L'ObjetComposite est un dossier, il contient


des objets (c'est dire des fichiers et des
dossiers). Sa mthode affiche() parcourt
l'ensemble des objets qu'il contient (fichier ou
dossier) en appelant leur mthode affiche().

129

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Dcorateur
Adaptateur

Intention
Le patron Decorator permet dajouter dynamiquement des fonctionnalits
supplmentaires un objet. Cet ajout de fonctionnalits ne modifie pas
linterface de lobjet et reste transparent vis--vis des clients.

Pont
Faade
Composite

Alias : Emballeur (Wrapper)

Dcorateur
Poids mouche

Indications dutilisation
ajouter dynamiquement de nouvelles fonctionnalits, de manire
transparente (sans changement dinterface)
dfinir des responsabilits qui peuvent tre ajoutes/retires
viter un hritage impossible cause du trop grand nombre dextension
indpendantes possibles

Procuration
Discussion

131

132

33

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Dcorateur

Dcorateur

Diagramme de classes
Il nous faut une interface
racine qui prsente
l'ensemble des
responsabilits de notre
panel d'outils.

Exemples
lments optionnels (bord, ascenseur...) sur un composant graphique
Flots dentre/sorties en Java (aussi appel Filtre dans ce cas).

Consquences
plus de souplesse que lhritage (qui est statique)
vite de surcharger en fonctionnalits les classes de haut niveau

Une classe d'implmentation


par dfaut videmment,

composant et composant dcor nont pas la mme identit (adresse)

il nous faut aussi une racine pour tous les dcorateurs qui
maintiennent une poigne sur un autre dcorateur afin de dlguer
une partie de son travail bien entendu.

133

Introduction

Cration

Structure

Comportement

Dcorateur

Introduction

Cration

Structure

Comportement

Dcorateur

Exemple : lment graphique avec dcorations

Exemple : lment graphique avec dcorations

Supposons qu'une classe de fentre Window ne gre pas les barres de


dfilement. On cr une sous-classe ScrollingWindow.
Maintenant, il faut galement ajouter une bordure.
Le nombre de classes crot rapidement si on utilise l'hritage : on cr les
classes WindowWithBorder et ScrollingWindowWithBorder.

135

1 JComponent c =
2
new BorderDecorateur(
3
new ScrollBarDecorateur(
4
new MyPanel()));

136

34

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Dcorateur

Structure

Comportement

Dcorateur

Exemple :
Supposons quon a une classe VueCatalogue qui affiche sous forme dun
catalogue lectronique les vhicules disponibles sur une page web.

Solution
Le pattern Decorator propose dajouter une classe dcorateur qui se
substitue lobjet initial et qui le rfrence.

Linterface ComposantGraphiqueVhicule constitue linterface


commune la classe VueVhicule ,que nous voulons enrichir, et la classe
abstraite Dcorateur, interface uniquement constitue de la mthode affiche.

Nous voulons tendre les fonctionnalits de cette classe afin de permettre


laffichage d informations supplmentaires sur un certain type de vhicule
savoir Informations techniques sur le modle et le logo de la marque.

Introduction

Cration

Structure

137

Comportement

138

Introduction

Dcorateur

Cration

Structure

Comportement

Dcorateur

Solution

Solution

139

Nous aurons deux classes


concrtes de dcorateur. Leur
mthode affiche
commence par rappeler la
mthode affiche de dcorateur
puis affiche les
donnes complmentaires
comme les informations
techniques du modles ou le
logo de la marque.

140

35

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Poids mouche
Adaptateur
Pont

Intention
Utilise une technique de partage permettant la mise en uvre efficace
dun grand nombre dobjets de granularit fine.

Faade
Composite

Alias : Flyweight

Dcorateur
Poids mouche

Indications dutilisation
Dtrioration des performances due un trop grand nombre de petits
objets (cot de stockage lev)
Distinction possible entre tat intrinsque et extrinsque (fonction du
contexte client)
Partage possible des tats intrinsques.

Procuration

141

Introduction

Cration

Structure

Comportement

Poids mouche

142

Introduction

Cration

Structure

Comportement

Poids mouche
Diagramme de classes

Exemples
Les caractres manipuls dans un traitement de texte.
Chaque caractre correspond un objet ayant une police de caractres, une
taille de caractres, et d'autres donnes de formatage.
Un long document contient beaucoup de caractres ainsi implments

143

144

36

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Procuration (Proxy)
Adaptateur
Pont

Intention
Fournit un client un mandataire ou un remplaant pour contrler laccs
un objet fournisseur

Faade
Composite

Alias : Mandataire, Proxy

Dcorateur
Poids mouche

Indications dutilisation

Procuration

procuration distance : reprsentant local dun objet distant


procuration virtuelle : cration dobjet la demande
procuration de protection : contrle les accs au fournisseur

145

Introduction

Cration

Structure

Comportement

146

Introduction

Cration

Procuration (Proxy)

Structure

Comportement

Procuration (Proxy)
Diagramme de classes

Contexte
Objets coteux linstanciation (temps de calcul, espace mmoire)
Les objets doivent exister mais ne sont pas ncessairement manipuls (du
moins pas en mme temps)

La classe cliente utilise


l'interface Sujet pour accder au
SujetRel via le Proxy,
Sujet : interface partage par
le Proxy et SujetRel accd,

Exemples
Images ou vidos dun document
Connexion aux bases de donnes
Problme
Processus lent au dmarrage et gourmand en mmoire

Solution
Crer les objets entirement linstanciation

SujetRel : objet accd


indirectement.
147

Proxy : contrle l'accs l'objet. Chaque


mthode dlgue sa tche l'objet accd, en
contrlant l'accs (vrifications, requte par
rseau, ...),

37

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Discussion

Structure

Comportement

Exercice 1
Question :

Similitudes entre ces patrons mais des intentions diffrentes !

Comment pouvez-vous empcher dautres dveloppeur de crer de nouvelles

Adapteur et Pont : indirection et r-expdition de requtes entre une

instances de votre classe ?

interface et une ralisation


Faade : construction dune nouvelle interface

Rponse :

Composite et Dcorateur : agrgats rcursifs

Crez un seul constructeur avec un accs private. Notez que si vous crez
dautres constructeurs non priv, ou ne crez pas de constructeurs du tout,
dautres objets seront en mesure dinstancier votre classe.

149

150

Introduction

Cration

Structure

Comportement

Design Patterns structuraux

15 Avril
2016

Rappel

permettent de structurer des problmes courants


modlisation d'arbres, de graphes

Patrons de structure (7)


Adaptateur
Pont
Composite
Dcorateur
Faade
Poids mouche
Procuration
152

38

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Design Patterns structuraux

Cration

Structure

Comportement

Design Patterns structuraux

Adaptateur / Adapter
Convertit linterface dune classe en une autre conforme lattente dun
client.
Permet de faire collaborer des classes aux interfaces incompatibles.

Dcorateur
Ajouter dynamiquement des fonctionnalits supplmentaires un objet tel
que cet ajout de fonctionnalits ne modifie pas linterface de lobjet et reste
donc transparent vis--vis des clients.

Pont / Bridge
Sparer laspect dimplantation dun objet de son aspect de reprsentation et
dinterface afin que ces deux lments puissent voluer indpendamment
lun de lautre.

Faade
Regrouper les interfaces dun ensemble dobjets en une interface unifie
rendant cet ensemble plus simple utiliser pour un client.
Poids mouche / Flyweight
Partager de faon efficace un ensemble important dobjets de grain fin.

Composite
Offre un cadre de conception dune hirarchie de composition arborescente
dobjets sans que les clients aient traiter diffremment les composs et les
individus.

Procuration / Proxy
Concevoir un objet qui se substitue un autre objet (le sujet rel) et en
contrle laccs.
153

154

Introduction

Cration

Structure

Comportement

Patrons de comportements

Patrons
comportementaux
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Expliquent comment organiser les objets pour quils collaborent entre eux :
Comment faire collaborer classes ou objets pour construire une partie de
lapplication et des traitements ?
Travaillent essentiellement sur des aspects dynamiques, lintrieur des
classes et parfois au niveaux des instances

Permettent d'obtenir un comportement spcifique


personnalisation d'algorithmes
changement de comportement en cours du cycle de vie
raction aux vnements

156

39

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Patrons de comportements
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Quelques Exemples :
Interface graphique (rafrachissement, souris, clavier...)
Conversion de donnes
Pouvoir annuler des commandes
Implmenter plusieurs algorithmes

157

Introduction

Cration

Structure

Comportement

Stratgie

158

Introduction

Cration

Structure

Comportement

Stratgie

Supposons que nous crivions un systme de commerce lectronique


destin au Maroc. Larchitecture globale du projet comporte un objet
de contrle qui gre les commandes. Il identifie larrive dune
commande et la transmet un objet CommandeClient qui en effectue
le traitement.

Supposons maintenant que vous deviez modifier le traitement des taxes de


faon grer celles appliques aux commandes venant de ltranger. Vous
devez au moins ajouter de nouvelles rgles de calcul.
Pour cela, vous pouvez essayer de rutiliser lobjet CommandeClient
existant et de traiter cette situation comme sil sagissait dun nouveau type
de commande client des rgles de taxation diffrentes.
Par exemple, dans le cas de ventes la Tunisie, vous pourriez driver de
CommandeClient une nouvelle classe appele CommandeClientTunisie, qui
remplacerait les rgles de calcul de la taxation.

159

160

40

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Stratgie

Structure

Comportement

Stratgie
Dans notre exemple, les rgles de taxation varient. Pour les encapsuler,
nous devons crer une classe abstraite dfinissant le calcul conceptuel des
taxes, puis driver des classes concrtes correspondant chaque variation.

Complexit de la hirarchie dhritage inutile de la classe


Commande

Nous pouvons crer un objet CalcTaxe dfinissant linterface qui


accomplira la tche de calcul, puis driver les versions ncessaires

Problme de redfinition complexe matriser

161

Introduction

Cration

Structure

Comportement

162

Introduction

Stratgie

Cration

Structure

Comportement

Stratgie
Intention
Dfinir une famille dalgorithmes, encapsuler chacun deux et les rendre
interchangeables. La stratgie permet lalgorithme de varier
indpendamment des clients qui lutilisent.

Pour prfrer la composition lhritage, nous allons grer les variations


dans la composition au lieu de crer diffrentes versions des commandes
clients laide de lhritage.
Nous aurons une classe CommandeClient qui contiendra la classe CalcTaxe
charge de grer les variations

Alias :
Problme
La slection dun algorithme dpend du client lorigine de la demande
ou des donnes traiter.
Si la rgle dont vous disposez ne change pas, vous navez pas besoins du
pattern Stratgie.
Solution
Sparer la slection de lalgorithme et son implmentation. Le pattern
permet une solution base sur le contexte.

163

164

41

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Stratgie

Structure

Comportement

Stratgie
Participants et collaborateurs:
Strategie spcifie lutilisation des diffrents algorithmes. Les classes
StrategieConcrete implmentent ces algorithmes. Contexte utilise une
StrategieConcrete spcifique avec une rfrence de type Strategie.

Indications dutilisation
Plusieurs classes apparentes ne diffrent que par leur comportement;
une classe dfinit de nombreux comportements qui figurent dans les

Strategie et Contexte interagissent pour implmenter lalgorithme


choisi. Contexte fait suivre les requtes de Client Strategie

oprations sous forme de structure conditionnelle ;


ncessit de disposer de diverses variantes dun algo.

165

Introduction

Cration

Structure

Comportement

166

Introduction

Cration

Structure

Comportement

Patron de mthode // Template method


Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Objectif
Dfinir le squelette d'un algorithme en dlguant certaines tapes
des sous-classes.

Exemple
Supposons que nous grons des commandes issues des clients au
Maroc et de la France. La diffrence entre ces deux types de
commandes concerne le calcul de la TVA.

167

168

42

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Patron de mthode // Template method

Cration

Structure

Comportement

Patron de mthode // Template method

Exemple de la mthode calculMontant TTC:

Patron Template method :

Pour le Maroc,
le taux de TVA est 0.20
montantTTC=montantHT+montantTVA;
Pour la France :
MontantTVA=montantHT*0.19;
montantTTC=montantHT+montantTVA;
La mthode calculMontant TTC commune aux deux classes va
devenir comme suit:

- Le taux de TVA varie en fonction du pays

calculTVA(); // mthode abstraite redfinies dans chaque sous-classe


montantTTC=montantHT+montantTVA; // mthode concrte dfinie

- La mthode calculMontantTTC est appele mthode patron, elle


invoque une mthode abstraite.

dans la classe de base.

Introduction

Cration

Structure

170

Comportement

Introduction

Cration

Structure

Comportement

Patron de mthode // Template method


Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Structure gnrale du patron Template method:

171

172

43

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Observateur // Observer

Structure

Observateur

Contexte
Plusieurs objets souscripteurs sont concerns par les changements dtat dun
objet diffuseur.
Intention
Dfinit une interdpendance de type un plusieurs de sorte que quand un
objet change dtat, tous ceux qui en dpendent en soient avertis et
automatiquement mis jour.

Raisons de lutiliser
Un objet doit connaitre les changements dtat d'un autre objet. L'objet doit
tre inform immdiatement.
Cela peut tre le cas d'un tableau affichant des statistiques. Si une nouvelle
donne est entre, les statistiques sont recalcules. Le tableau doit tre
inform du changement, afin qu'il soit rafrachi.
L'objet devant connatre le changement (le tableau) est un observateur. Il
s'enregistre en tant que tel auprs de l'objet dont l'tat change. L'objet dont
l'tat change (les statistiques) est un "observe". Il informe ses observateurs en
cas d'vnement.

Alias
Dpendants, DiffusionSouscription (PublishSubscribe)
Objectifs
Comment faire pour que chacun deux soit inform de ces changements ?
Comment maintenir un faible couplage entre diffuseur et souscripteurs ?
173

Introduction

Cration

Structure

Comportement

174

Introduction

Cration

Observateur

Classe hritant
de Sujet

Structure

Comportement

Observateur

Diagramme de classe
Classe abstraite

Comportement

Diagramme de classe
Classe (utilise comme classe abstraite)

Classe hritant
dObservateur

Fonctionnement
175

Un Observateur sattache un Sujet


Le sujet notifie ses observateurs en cas de changement dtat

176

44

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Commande
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Intention
Encapsuler une requte (ou un traitement) comme un objet
Paramtrer le contexte client
Gestion possible des requtes/traitements en FIFO, annulation
possible.
Alias
Action, Transaction
Indications dutilisation
Raliser un principe de callback
Permettre de mmoriser des modifications
Structurer le systme en oprations de haut niveau (transaction)
177

Introduction

Cration

Structure

Comportement

Commande

178

Introduction

Cration

Structure

Comportement

Commande
Solution
Patron de conception commande
Une commande = un objet

Si on suit le principe une action = une opration

Problmes

annuler des commandes ?


enregistrer des macros ?
la classe Dessin grossit si on rajoute des oprations
179

180

45

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Commande

Structure

Comportement

Commande

Diagramme de classe
il stocke les commandes
il appelle les commandes

Fonctionnement
interface gnrique

Un Rcepteur excute les commandes


Des CommandeConcrte appellent chaque mthode mtier du
Rcepteur

dessin

Une Commande dcrit linterface des CommandeConcrte


Un Invocateur stocke les instances de CommandeConcrte pour
pouvoir les appeler de manire standardise
commande copier

le reste du programme

181

Introduction

Cration

Structure

Comportement

182

Introduction

Cration

Structure

Comportement

Commande
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Exemple

Solution
Transformer les requtes en objets, dont les classes sont des sousclasses dune classe abstraite Command, qui dnit une interface
pour lexcution doprations.

183

184

46

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Visiteur

Structure

Comportement

Visiteur
Solution : le patron de conception Visiteur

Oprations sur des structures rcursives

Problme : les classes


deviennent normes.
185

Introduction

Cration

Structure

Comportement

186

Introduction

Cration

Structure

Comportement

Visiteur

Solution : le patron de conception Visiteur


Intention

Modlise par une classe une opration applicable aux lments dune structure
dobjets et permet de dfinir de nouvelles oprations sans modifier les classes
de la structure.

Alias
Indications dutilisation
Une structure dobjets contient beaucoup de classes diffrentes dinterfaces
distinctes et lon veut raliser des traitements qui dpendent de leurs classes
concrtes.
Il sagit de raliser plusieurs traitements distincts sans relation entre eux,
sur les objets de la structure, sans polluer leurs classes
Les classes qui dfinissent la structure dobjet changent rarement mais on
doit souvent dfinir de nouvelles oprations sur cette structure.

public void visit(Visitor visitor)


{
visitor.visitParagraph(this);
}

187

188

47

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Visiteur

Visiteur
Problme
Plusieurs oprations distinctes doivent tre ralises sur des objets
dune structure
La classe dfinissant la structure change rarement mais de nouvelles
oprations doivent pouvoir tre dfinies souvent sur cette structure

Consquences
+ lajout de nouvelles oprations est ais
+ union de diffrentes oprations et sparations dautres
+ Dcoupe des tches
MAIS Dpend des donnes
Les classes des donnes doivent montrer leurs contenus
189

Introduction

Cration

Structure

Comportement

Visiteur appliqu aux objets gomtriques


Problme pos
Diagramme de classe structurel des objets gomtriques :

190

Introduction

Cration

Structure

Comportement

Solution objet classique


Principe : Pour chaque opration, mettre une mthode gnrale les types
gnraux (objet gomtrique et point) et la (re)dfinir dans la sous-classes.

Traitements implanter :
1. obtenir le nom en franais dun
lment : segment, point...
2. obtenir le nom en anglais
3. nombre de points utiliss pour
caractriser un objet gomtrique

4. afficher un objet gomtrique


5. dessiner un objet gomtrique
6. translater un objet gomtrique
7. obtenir la bounding box dun objet
gomtrique

192

48

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Problmes induits par cette solution

Cration

Structure

Comportement

Principe du visiteur
Principe : crire une classe par traitement.

Solution oprationnelle mais :

Moyen :
regrouper dans une classe traitement les mthodes implantant
ce traitement
mettre un paramtre explicite correspond la classe traite
rendre accessibles les informations internes de la structure
(accesseurs)

chaque traitement est clat sous lensemble de la structure de


classes
la structure est pollue par les diffrents traitements
il faut pouvoir modifier les classes pour ajouter de nouveaux

Nouveau diagramme de classe : diagramme structurel initial +

traitements

193

Introduction

Cration

Structure

Comportement

194

Introduction

Cration

Structure

Comportement

Traitement CompteurPoint : pas si facile !

Traitement Afficheur : pas de problme

195

196

49

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Critique et... une solution

Cration

Structure

Comportement

Larchitecture du visiteur

a marche mais :
Faire des instanceof est une mauvaise ide !
==> voir lexception leve...
De nombreux traitements ncessitent ce traitement par cas : afficher,
translater, dessiner, bounding box, etc.
On sait comment faire pour lviter !
Il suffit de mettre une mthode correspondant au traitement fait dans
le type gnral et la redfinir dans les sous-classes....
MAIS on retombe sur la solution initiale :(

Solution
Cest bien en ajoutant une mthode sur les classes de la structure que lon
peut faire la slection de la bonne mthode sans instanceof
Lide est de ne dfinir quune seule mthode, et non une par traitement
Il faut gnraliser les diffrents traitements : cest le Traitement/Visiteur !
Il faut unifier le nom des mthodes : traiter/visiter
Le type de retour change ? La gnricit
197
Et la mthode sur OG ? excuter(Traitement)/accepter(Visiteur)

Introduction

Cration

Structure

Comportement

Un peu de code

Introduction

Cration

Structure

Comportement

Un peu de code: traitement CompteurPoint

linterface Traitement

Le code de excuter dans les interfaces et classes abstraites :

Le code de excuter dans les classes concrtes :

50

22/04/2016

Utiliser un visiteur

Introduction

Cration

Structure

Comportement

Visiteur
Consquences
il facilite lajout de nouveaux traitements
un visiteur rassemble les oprations dun mme type (Visiteur
concret)
laddition de nouvelles classes la structure est difficile
thsaurisation des informations dtat dans un visiteur
rupture dencapsulation (interface des lments riche)
Implantation
Double aiguillage : deux critres dterminent lopration
effectuer, le Visiteur et llment.
Qui organise le parcours de la structure dobjet :
o le visiteur
o la structure dobjet (souvent choisi)
o un itrateur part

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Mdiateur
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Mmento
tat
Chane de responsabilits
Interprteur
Itrateur

Intention
Dfinit un objet encapsulant les modalits dinteraction dautres
objets
Limite le couplage car vite une rfrence explicite entre ces objets
Alias : -

203

Indications dutilisations
Les objets dun ensemble communiquent dune faon bien dfinie
mais complexe : inter-dpendances non structures et difficiles
apprhender
Rutilisation difficile dun objet car fait rfrence beaucoup
dobjets
Un comportement distribu entre plusieurs classes doit pouvoir tre
spcialis sans multiplier les sous-classes

204

51

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Mdiateur

Structure

Comportement

Mdiateur

Consquences

Diagramme de classe

limite la cration de sous-classes (seulement du mdiateur, pas des


collgues)
rduit le couplage entre collgues
simplifie les protocoles objet (interaction 1plusieurs)
formalise la coopration des objets
centralise le contrle

Fonctionnement
Rajouter un niveau dindirection qui gre ces interactions
205

Introduction

Cration

Structure

Comportement

Mdiateur

206

Introduction

Cration

Structure

Comportement

Mdiateur
Problme:
La complexit due des interactions multiples entre les divers composants

Exemple :
Mdiateur entre les lments graphiques dune bote de dialogue

207

208

52

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Mdiateur

Structure

Comportement

Mdiateur

Solution:
Objet dont le rle est d'encapsuler les interactions d'un ensemble d'objets.

Avantages :
Indpendance entre les objets
Code clair et lisible
et Rutilisable

Inconvnients
Le mdiateur puisse devenir un composant lourd et difficile
maintenir
Mais, nous savons toujours o intervenir et le parcours du code sera
toujours plus simple qu'auparavant.

209

Introduction

Cration

Structure

Comportement

210

Introduction

Cration

Structure

Comportement

Mdiateur
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Chane de responsabilits
Mmento
tat
Interprteur
Itrateur

Limplmentation du mdiateur:
La mise en place du mdiateur impose que ce dernier prenne
connaissance des composants entre lesquels des interactions
seront effectues.
Un tel objet se dote naturellement de mthodes
d'enregistrement des objets.
Pour terminer, le programmeur doit simplement ajouter au
mdiateur les mthodes invoques par ses collgues.

211

212

53

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Mmonto

Structure

Comportement

Mmonto

Intention
Le patron Memento enregistre et extriorise ltat interne dun objet
pour pouvoir restaurer lobjet un tat prcdant plus tard. Ltat
de lobjet est sauvegard des points stratgiques pour que le
mcanisme undo permet aux utilisateurs de restaurer un objet
ltat ou il tait avant une certaine opration.

Exemples
Pouvoir passer les niveaux dj atteints dans un jeu
Utilis dans les transactions de base de donnes

Pourquoi ?
Laisser de linformation dun objet accessible dautres objets par
des mthodes daccs
Sauvegarder de linformation pour utilisation antrieur
Supporter la fonction undo/redo

Sauvegarder et restaurer ltat dun objet sans en violer


lencapsulation
Alias : Jeton

213

Introduction

Cration

Structure

Comportement

Mmonto
Diagramme de classe

214

Introduction

Cration

Structure

Comportement

Mmonto

Le mcanisme dannulation va demander un


objet memento lAuteur. LAuteur initialise
alors le memento avec linformation qui
caractrise son tat interne

Memonto (mmonto)
mmento est un objet qui stocke les informations sur l'tat envoyes
par lauteur.
Auteur (crateur) :
un objet qui contient le mmento dans son tat le plus actuel. Il permet
galement de restaurer mmento partir d'un moment prcis du pass.
Idalement, c'est uniquement lui qui pourra accder l'tat interne du
mmento.

Seul lAuteur peut lire et crire lobjet


memento.

Memento est un objet


qui enregistre une
photo de ltat interne
dun autre objet
(lAuteur)215

Surveillant (concierge) :
c'est l'objet qui stocke toutes les reprsentantions du mmento.
Contrairement au crateur, le concierge est une sorte de conteneur qui
stocke toute historique d'activits lies un objet. Il ne permet pas
d'accder une proprit du mmento.
216

54

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Mmonto

Structure

Comportement

Mmonto

Consquences

Exemple :

+ prserve les frontires dencapsulation.


+ limine le besoin de plusieurs instance du mme objet (Auteur)
simplement pour sauvegarder son tat.
+ Simplifie lauteur, car la responsabilit de grer le Memento est
distribu au Surveillant.
+ simple implmenter.

L'exemple du mmento sera un objet qui contient un tat (State). Pour


la facilit de comprhension, les objets auront exactement les mmes
noms que les acteurs mentionns

- lutilisation peut tre coteuse.


(si plusieurs dtails sauvegarder)

217

Introduction

Cration

Structure

Comportement

218

Introduction

Cration

Structure

Comportement

Auteur

class Originator {
private State state;
private String firstName;
private String familyName;
public Originator(String firstName, String familyName) {
this.firstName = firstName;
this.familyName = familyName;
}
public void setState(State state) {
this.state = state;
}
public State getState() {
return this.state;
}
public Memento saveState() {
return new Memento(state);
}
public void getToThePast(Memento memento) {
this.state = memento.getState();
}
}

Memento

Cette classe initialise les objets


mmoriser, mais aussi
permet de rcuprer l'objet
mmoris un tat infrieur

class Memento {
private State state;
public Memento(State state) {
this.state = state;
}

La classe Memento est celle qu'on souhaite


sauvegarder. On voit que ce qui nous intresse,
c'est uniquement l'tat (State) et non pas les
attributs nom et prnom de la classe
Originator.

public State getState() {


return this.state;
}
}

219

220

55

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Surveillant
class Caretaker {
private List<Memento> states;
public Caretaker() {
this.states = new ArrayList<Memento>();
}

Structure

Comportement

Classe State
Cette classe stocke tous les
objets mmento. Elle permet
aussi bien de rajouter un
nouvel objet que de
restaurer un ancien.

class State {
private String name;
private String yearFrom;
private String yearTo;

La classe State reprsente l'tat


sauvegard par l'instance Memento. On
voit la prsence des 3 attributs : l'tape
d'une vie et les annes de cette tape.

public State(String name, String yearFrom, String yearTo) {


this.name = name;
this.yearFrom = yearFrom;
this.yearTo = yearTo;
}

public void addMemento(Memento memento) {


this.states.add(memento);
}

@Override
public String toString() {
return "Stage of life " + this.name + " was between " + this.yearFrom + " and " +
this.yearTo;
}
}

public Memento restoreState(int index) {


return this.states.get(index);
}
}
221

Introduction

Cration

Structure

Comportement

222

Introduction

Cration

Structure

Comportement

Mmonto

Caretaker caretaker = new Caretaker();


Originator person = new Originator("Alaoui", "Mohamed");

Exemples dutilisations relles

person.setState(new State("childhood", "1989", "1996"));


caretaker.addMemento(person.saveState());

Memento peut tre utilis dans une Session de Servlet quand


une session time-out . Ltat de lapplication est
sauvegard laide dun Memento et reconstruit quand
lutilisateur accde au site plus tard.

person.setState(new State("maturity", 1999", "2004"));


caretaker.addMemento(person.saveState());

Pour sauvegarder les dimensions dune fentre dans des


applications qui permette une vue pleine-cran ou dans une
fentre.

person.setState(new State("maturity", "2006", "2013"));


caretaker.addMemento(person.saveState());
person.getToThePast(caretaker.restoreState(0));

Pour implmenter la fonction de Undo dans plusieurs


applications.

System.out.println("The first etape of her life was : "+ person.getState());


Le code sortira le texte suivant :
The first etape of her life was : Stage of life childhood was between 1989 and 1996
223

224

56

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Etat
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Chane de responsabilits
Mmento
tat
Interprteur
Itrateur

Intention
Permet un objet de modifier son comportement quand son tat
interne change. Donne limpression que lobjet change de classe.
Alias : -

Indications dutilisation
le comportement dun objet dpend de son tat (changement
dynamique)
les oprations contiennent des conditionnelles en fonction de ltat
de lobjet

225

Introduction

Cration

Structure

Comportement

226

Introduction

Cration

Etat

Structure

Comportement

Etat
Diagramme de classe
Les classes reprsentant les diffrents tats possibles drivent toutes de la
mme classe abstraite et en surchargent les mthodes en fonction de leur
comportement dans l'tat implment.

Exemples
Connexion rseau (ferme, tablie)
Logiciel de dessin (effet de la souris sur la zone de dessin)

Consquences
Partionnement des diffrents comportements, tat par tat
Rend explicite les transitions dtat

227

228

57

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Etat

Structure

Comportement

Etat

Diagramme de classe

Exemple

Fonctionnement
Une interface (Etat) dfinit le
comportement

TCP / IP
Status : String

Des EtatConcret
implmentent les
comportements
Un Contexte stocke ltat
courant et appelle les
comportements correspondants
Les EtatConcret peuvent
changer ltat courant dans le
contexte

Open()
Close()
Send()
Synchronize()

Problme
Comment viter que l'tat de la
connexion soit vrifi chaque
fois qu'un paquet est envoy ?

TCP/IP::send(s : Stream) {
if state = 'open'
{
(...)
}
if state = 'closed'
{
(...)
}
if state = 'idle'
{
(...)
}
}

229

Introduction

Cration

Structure

Comportement

230

Introduction

Etat

TCP / IP

Structure

Comportement

Etat

Solution
Isoler les comportements dpendants des diffrents tats de connexion
dans des classes diffrentes.
status

Cration

TCP / IP State

Consquences
Chaque instance de la classe "TCP/IP" est associe une instance
d'une sous-classe de "TCP/IP State"
La vrification de l'tat n'est plus ncessaire.

Open()

Open()
Close()
Send()
Synchronize()
Idle

Open()

Open

Open()

Close

Open()
231

232

58

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Interprteur
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Chane de responsabilits
Mmento
tat
Interprteur
Itrateur

Intention
Dfinit une reprsentation de la grammaire dun langage simple
ainsi quun interprteur.
Alias : Indications dutilisation
la grammaire du langage doit tre simple
lefficacit nest pas un souci majeur
Objectif :
valuer une expression dans un langage particulier
Exemples : expressions mathmatiques, SQL

233

Introduction

Cration

Structure

Comportement

234

Introduction

Cration

Interprteur

Structure

Comportement

Interprteur

Contexte
Le patron Interprteur est utilis pour des logiciels ayant besoin
d'un langage afin de dcrire les oprations qu'ils peuvent raliser
(exemple : SQL pour interroger une base de donnes).

Diagramme de classe

Ce patron de conception est trs utile dans deux cas:


1. lorsque le logiciel doit analyser/interprter une chane algbrique.
C'est un cas assez vident o le logiciel doit excuter des oprations en
fonction d'une quation (dessiner la courbe d'une fonction par
exemple),
2. lorsque le logiciel doit produire diffrents types de donnes comme
rsultat. Ce cas est moins vident, mais l'interprteur y est trs utile.
Prenez l'exemple d'un logiciel capable d'afficher des donnes dans
n'importe quel ordre, en les triant ou pas, etc.
235

Fonctionnement
Stocker lexpression dans un contexte (pile)
Dfinir les classes de traitement terminales et non terminales du langage
interprter , laide de la mme interface

59

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Structure

Comportement

Itrateur
Stratgie
Patron de mthode
Observateur
Commande
Visiteur
Mdiateur
Chane de responsabilits
Mmento
tat
Interprteur
Itrateur

Intention
Fournit un moyen pour accder squentiellement chacun des
lments dun agrgat dobjets sans rvler la reprsentation
interne de lagrgat
Alias : Curseur (Cursor)
Indications dutilisation
accder aux lments dun agrgat sans rvler sa structure interne
grer simultanment plusieurs parcours sur des agrgats
offrir une interface uniforme pour parcourir diffrents types
dagrgats
237

Introduction

Cration

Structure

Comportement

Itrateur

238

Introduction

Cration

Structure

Comportement

Itrateur

Contexte
Liste dobjets
Plusieurs parcours simultans

Exemples :
Les itrateurs des collections Java

Solution nave
Parcours avec les mthodes daccs la liste
Problmes
Ncessite de connaitre la structure de la liste (liste chane, tableau,
arbre, etc.)
Patron Itrateur
Utiliser une classe Iterator qui possde des mthodes de parcours
standardises
Un Iterator par type de liste

239

Consquences:
possibilit de dfinir plusieurs parcours (infixe et prfixe par
exemple)
simplification de linterface de lagrgat
parcours simultans possibles sur un mme agrgat

240

60

22/04/2016

Introduction

Cration

Structure

Comportement

Introduction

Cration

Itrateur

Structure

Comportement

Itrateur

Diagramme de classe

Intrt du patron
Un itrateur permet de parcourir les lments dune collection en
faisant abstraction de sa reprsentation.
Ainsi, on peut crire exactement le mme code pour parcourir les
lments dun ensemble reprsent par un arbre de recherche que
ceux dune liste reprsente par chanage.
Il est mme possible de dfinir des itrateurs sur des structures
infinies, p.ex. la liste des nombres premiers !

241

Introduction

Cration

Structure

242

Comportement

Patrons comportementaux : synthse


Encapsultation des parties variables

Merci pour votre attention

Stratgie : : un algorithme
Patron de mthode : les tapes dun algorithme
tat : un comportement dpendant de ltat
Mdiateur : un protocole
Itrateur : le parcours dun agrgat

Relations statiques supportant la communication


Commande, Observateur, Mdiateur, Chane de
responsabilits : dcouplage entre metteur et rcepteur
Mdiateur : communication encapsule
Observateur : communication distribue
243

61

Vous aimerez peut-être aussi