Plan du Cours
I.
Intitul de Cours
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,
les patterns
Patron ?
Patron ?
Un patron dsigne un modle, dessin, gabarit, motif,
chantillon
22/04/2016
Types de Patrons
Types de Patrons
Patrons
processus
Patrons
danalyse
Patrons de
conception
Patrons
darchitecture
Patrons
processus
Patrons
dimplantation
10
Types de Patrons
Types de Patrons
Patrons
danalyse
Patrons de
conception
11
22/04/2016
Types de Patrons
Types de Patrons
Patrons
darchitecture
Patrons
dimplantation
13
14
Types de Patrons
Patrons
processus
Patrons
danalyse
Patrons de
conception
Patrons
darchitecture
Patrons
dimplantation
15
16
22/04/2016
Diagramme de classes
Diagramme de classes
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
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
23
Vocabulaire :
design patterns
modles de conception
patrons de conception
micro-architectures
24
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
Historique
Motivation
Dfinition
Rubriques de la description
Classification
Exemples
Utilisation
Introduction
Cration
Structure
Comportement
26
Introduction
Cration
Structure
Comportement
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.
rsout un problme
Nom
Problme
Solution
Consquences
28
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
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
Structure
Constituants
Structure
Description de la solution
propose par le patron
Intention
Cration
Rubriques utilises
Nom
Introduction
Identification et comprhension
du patron
30
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
Cration
Structure
Comportement
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
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
Historique
Motivation
Dfinition
Rubriques de la description
Classification
Exemples
Utilisation
35
36
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
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
Crer un adaptateur.
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!!
21
Introduction
Cration
Structure
Comportement
Solution au problme
22
Introduction
Cration
Structure
Comportement
Solution au problme
24
11
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
Utilit
Historique
Motivation
Dfinition
Rubriques de la description
Classification
Exemples
Utilisation
45
Introduction
Cration
Structure
Comportement
46
Introduction
Cration
Structure
Comportement
Collaborations
Regarder la section Exemple de code
47
48
12
22/04/2016
Introduction
Cration
Structure
Comportement
Patrons de cration
Fabrique abstraite
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.
Caractristiques cls :
le patron encapsule (masque) la connaissance des classes concrtes
le patron masque comment leurs instances sont cres et combines.
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
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
53
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
54
Comportement
55
56
14
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
Windows
Enfants
Linux
MacOS
Android
Lycens
57
Introduction
Cration
Structure
Comportement
58
Introduction
Cration
Structure
Comportement
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
On va devoir adapter
notre logiciel
dalgorithmique
deux publics
Structure
Comportement
On applique le patron
de conception
Fabrique abstraite
Comment faire ?
Cration
Fabrique des
briques pour
les enfants
Effacer Tout
61
Introduction
Cration
Structure
Comportement
62
Introduction
Cration
Structure
Comportement
Fabrique des
briques pour
les lycens
b = new BriqueEffacerTout();
FabriqueAbstraite
fabriqueBriques = new
FabriqueEnfant()
fabriqueBriques.getNouvelleBriqueEffacerTout()
Effacer Tout
63
64
16
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
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
69
Introduction
Cration
Structure
Comportement
70
Introduction
Cration
Prototype
Structure
Comportement
Prototype
A faire
new Maison(Color.RED,
Color.WHITE, 16, 32, 16)
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 :
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
Singleton
Fabrique
Monteur
79
80
20
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
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).
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
Structure
Comportement
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
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
Solution
88
22
22/04/2016
Introduction
Cration
Structure
Comportement
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
Problme
Solution
Consquences
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
92
23
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Patron de cration
Factory - Interface
Dfinit la mthode de
cration qui retourne
un objet de type
Product
Introduction
Comportement
Patron de cration
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
95
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
Adaptateur
Faade
Pont
Composite
Dcorateur
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
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
101
Introduction
Cration
Structure
Introduction
Cration
Structure
Adaptateur
Adaptateur
Cible - Interface
Client
ClasseAdaptee
Adapteur
Comportement
102
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
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)
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
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
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
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.
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
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
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
Comportement
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
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
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
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.
Introduction
Cration
Structure
137
Comportement
138
Introduction
Dcorateur
Cration
Structure
Comportement
Dcorateur
Solution
Solution
139
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
Dcorateur
Poids mouche
Indications dutilisation
Procuration
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)
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
37
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Discussion
Structure
Comportement
Exercice 1
Question :
Rponse :
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
15 Avril
2016
Rappel
38
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
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
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
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.
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.
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
165
Introduction
Cration
Structure
Comportement
166
Introduction
Cration
Structure
Comportement
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
Cration
Structure
Comportement
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:
Introduction
Cration
Structure
170
Comportement
Introduction
Cration
Structure
Comportement
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
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
Problmes
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
dessin
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
Introduction
Cration
Structure
Comportement
186
Introduction
Cration
Structure
Comportement
Visiteur
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.
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
190
Introduction
Cration
Structure
Comportement
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
192
48
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
Cration
Structure
Comportement
Principe du visiteur
Principe : crire une classe par traitement.
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)
traitements
193
Introduction
Cration
Structure
Comportement
194
Introduction
Cration
Structure
Comportement
195
196
49
22/04/2016
Introduction
Cration
Structure
Comportement
Introduction
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
linterface Traitement
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
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
213
Introduction
Cration
Structure
Comportement
Mmonto
Diagramme de classe
214
Introduction
Cration
Structure
Comportement
Mmonto
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.
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 :
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
class Memento {
private State state;
public Memento(State state) {
this.state = 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;
@Override
public String toString() {
return "Stage of life " + this.name + " was between " + this.yearFrom + " and " +
this.yearTo;
}
}
Introduction
Cration
Structure
Comportement
222
Introduction
Cration
Structure
Comportement
Mmonto
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
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
Stratgie : : un algorithme
Patron de mthode : les tapes dun algorithme
tat : un comportement dpendant de ltat
Mdiateur : un protocole
Itrateur : le parcours dun agrgat
61