EXPOSÉ SPÉCIFICATION ET CONCEPTION DE LOGICIELS
DESIGN PATTERN : LE PATRON ADAPTATEUR
Début
Présenté par Mohamed DIOP
Supervisé par BOUDAA BOUDJEMAA
Plan
1 Introduction
2 Les Adaptateurs Dans Le Monde LE PATRON
ADAPTATEUR
3 Problème et Solution
4 Avantages et Inconvénients
5 Conclusion
1
I INTRODUCTION
INTRODUCTION
Le patron de conception Adaptateur (ou the adapter design pattern en anglais) est un patron
de conception structurel qui permet à des objets avec des interfaces incompatibles de pouvoir
travailler ensemble. Le but de ce patron est de créer une interface unifiée qui permet à des objets
de collaborer sans avoir à modifier leur code source.
Le patron Adaptateur utilise un objet adaptateur pour faire la conversion entre l’interface
d’un objet et celle d’un autre objet. L’objet adaptateur encapsule l’objet incompatible et fournit
une interface conforme à l’utilisation de l’objet cible. Ainsi, l’objet cible peut utiliser
l’adaptateur pour interagir avec l’objet incompatible encapsulé.
3
LES
II ADAPTATEURS
DANS LE MONDE
LA PRISE
ÉLECTRIQUE
ADAPTÉE
Un exemple courant et parlant du patron
adaptateur est l’utilisation d’un
adaptateur de prise électrique. En effet,
le voyage dans un pays étranger pourrait
nous obliger à utiliser un adaptateur de
prise électrique (que celui-ci soit
universel ou pas) pour pouvoir alimenter
nos appareils électroniques du fait de
l’incompatibilité entre les prises murales
et les têtes de prises. Celui-ci permettra
de convertir la prise locale en une prise
compatible.
5
ADAPTATEURS
ORIENTÉS OBJETS
Supposons que nous ayons un système dans
lequel on veut charger la nouvelle
bibliothèque d’un fournisseur donné, mais
que ce nouveau fournisseur a conçu ses
interfaces différemment du précédent.
En tant que bon développeur, nous
refuserons de résoudre ce problème en
voulant modifier notre code car cela sera
trop long et pénible. De même pour la
bibliothèque du nouveau fournisseur.
6
ADAPTATEURS
ORIENTÉS OBJETS
Donc la solution qui s’offre à nous
est l’écriture d’une classe qui adapte
l’interface de la bibliothèque du
nouveau fournisseur pour
correspondre à celle dont on a
besoin.
7
ADAPTATEURS
ORIENTÉS OBJETS
Ainsi l’adaptateur jouera le rôle
d’intermédiaire entre notre système
et le fournisseur en traduisant nos
requêtes pour qu’elles soient
compréhensibles par le fournisseur.
8
III
PROBLÈME ET
SOLUTION
COURANT ALTERNATIF EN COURANT
CONTINU (AC/DC)
Problème
Nous disposons d’un nouvel appareil qu’on a conçu (peut-être téléphone, ordinateur ou appareil
électronique) qui doit être alimenté via de l’électricité produite dans un central électrique. Le
central électrique en question produit de l’électricité en alternance grâce à une turbine et un
alternateur donc un courant alternatif. Or notre appareil a besoin d’un courant continu qui, non
seulement permet d’éviter tout dommage dû grâce à une surtension ou sous-tension, mais aussi
de garantir la fiabilité de son usage. Donc comment devons-nous nous y prendre ?
10
COURANT ALTERNATIF EN COURANT
CONTINU (AC/DC)
Solution 1 Solution 2
Chercher une source de courant continu dans le Disposer d’un adaptateur de courant alternatif
secteur? vers courant continu?
Cela est faisable mais imaginons que nous Donc on n’aura pas à se déplacer juste pour
soyons dans une zone où l’accès à celui-ci est charger notre appareil ou l’alimenter pour
contraint. Nous serons obligés de faire des l’utiliser. En effet celui-ci (l’adaptateur) nous
déplacements pas possibles pour résoudre ce permettra de convertir le courant alternatif en
problème. courant continu.
11
COURANT ALTERNATIF EN COURANT
CONTINU (AC/DC)
Et comment s’y prendre?
Pour cela nous allons nous mettre dans le contexte du génie logiciel et répondre à ce problème
en faisant l’implémentation par des classes et des interfaces.
Mais en vrai il y’a deux principales approches d’implémentation à savoir l’implémentation :
• Par l’adaptateur de classe
• Par l’adaptateur d’objet
Donc nous allons définir brièvement ces deux types d’approche.
12
ADAPTATEUR DE
CLASSE
Consiste à faire hériter la classe de
l’Adaptateur de la classe Adapté
pour qu’au moment de
l’implémentation des requêtes de
l’interface Cible il puisse utiliser la
notion de l’héritage pour faire appel
aux requêtes spécifiques.
Mais son implémentation devient
problématique lorsqu’on doit
adapter plusieurs classes.
13
ADAPTATEUR
D’OBJET
Consiste à faire composer
l’Adaptateur par une instance de
l’Adapté pour pouvoir utiliser les
requêtes spécifiques lors de
l’implémentation de l’interface
Cible.
14
COMPARAISON ADAPTATEUR DE CLASSE
ET D’OBJET
Adaptateur d’objet Adaptateur de classe
Plus flexible Moins flexible
Facile à implémenter Difficile à implémenter
Est composé de la classe à adapter Hérite de la classe à adapter
Plusieurs classes peuvent être adaptées Une seule classe à adapter car impossible
d’hériter de plusieurs
15
IMPLÉMENTATION (ADAPTATEUR
D’OBJET)
Pour l’implémentation de notre solution concernant l’adaptateur de courant alternatif en courant
continu, nous allons choisir l’approche d’implémentation par l’adaptateur d’objet.
Avant toute chose nous présenterons d’abord le diagramme de classe de la solution.
16
DIAGRAMME DE
CLASSE DE LA
SOLUTION
Comme présenter ci-dessus, la classe
Appareil et Client représente le
client.
L’interface ICourantContinu
l’interface cible.
La classe Adaptateur est
l’adaptateur.
La classe CourantAlternatif la
classe adaptée.
17
IMPLÉMENTATION
DE LA CLASSE
ADAPTÉE
Cette classe représente le courant
alternatif et comporte deux
principales méthodes à savoir
alimenterCA() qui permet de
connaître le voltage du courant
alternatif et intensifierCA() son
intensité
NB : Ceci est donné comme
exemple et peut ne pas être les vraies
méthodes à utiliser (valable pour les
autres exemples).
18
IMPLÉMENTATION
DE L’INTERFACE
CIBLE
Cette interface représente le courant
continu qui doit être implémentée.
19
IMPLÉMENTATION
DE LA CLASSE
ADAPTATRICE
Cette classe représente l’adaptateur
AC/DC.
Pour implémenter l’interface cible
qu’est ICourantContinu, il utilise
les méthodes de l’objet
courantAlternatif de la classe
CourantAlternatif qui le compose.
20
IMPLÉMENTATION
DE LA CLASSE
APPAREIL
Cette classe représente l’appareil qui
doit utiliser le courant continu pour
son fonctionnement.
21
IMPLÉMENTATION
DE LA CLASSE
CLIENT
Cette classe représente le client qui
comporte la méthode main pour le
test de notre solution.
On voit que la méthode testCourant
a besoin d’un objet de type courant
continu pour pouvoir fonctionner.
Or on a utilisé l’adaptateur à cet
effet qui, lors de l’appel des
méthodes du courant continu fera
appel à celles du courant alternatif.
22
RÉSULTAT DU TEST
Ce test nous confirme que lors de
l’appel des méthodes du courant
continu ceux sont belles et bien
celles du courant alternatif qui nous
réponde.
On conclut qu’on a adapté le courant
alternatif en courant continu.
24
IV
AVANTAGES ET
INCONVÉNIENTS
AVANTAGES ET
INCONVÉNIENTS
Avantages Inconvénients
1 Réutilisabilité 1 Complexité accrue
2 Flexibilité 2 Performance réduite
3 Séparation des préoccupations 3 Risque de surutilisation
4 Compatibilité
26
V CONCLUSION
CONCLUSION
En résumé, le patron de conception adaptateur est une technique très efficace pour adapter une
interface existante à une nouvelle interface sans modifier le code source de l’une ou de l’autre. Il
permet de réutiliser du code existant et faciliter l’intégration de bibliothèques tierces dans une
application.
28
BIBLIOGRAPHIE
Freeman, E., Freeman, E., Bates, B., & Sierra, K. (2004). Tête la première Design Pattern
(M.-C. Baland, trad.). Paris : Éditions O'Reilly.
29
MERCI !
Des questions? Fin