Upload
fadwa-zed
View
232
Download
0
Embed Size (px)
Citation preview
7/24/2019 Les Patrons de Conception I
1/39
Architecture logicielle
Les patrons de conception
1
7/24/2019 Les Patrons de Conception I
2/39
Plan Introduction
Les patrons dinterface
2
7/24/2019 Les Patrons de Conception I
3/39
QuestQuestQuestQuest----ce quun pattern ?ce quun pattern ?ce quun pattern ?ce quun pattern ? Un pattern, ou modle, est un moyen daccomplir quelque
chose, un moyen datteindre un objectif, une technique.
Le principe est de compiler les mthodes prouves quisappliquent de nombreu types defforts, tels que lafabrication daliments, dartifices, de lo!iciels, ou autres.
La communaut informatique a fait sienne cette approche encrant de nombreu ouvra!es qui documentent des modlesde dveloppement lo!iciel. "es livres consi!nent lesmeilleures pratiques en matire de processus lo!iciels,
danalyse lo!icielle, darchitecture de haut niveau, et deconception de niveau classe.
3
7/24/2019 Les Patrons de Conception I
4/39
QuestQuestQuestQuest----ce quun pattern de conception ?ce quun pattern de conception ?ce quun pattern de conception ?ce quun pattern de conception ? Un pattern de conception (design pattern) est un modle
qui utilise des classes et leurs mthodes dans un lan!a!e orient
objet. Les dveloppeurs commencent souvent sintresser la
conception seulement lorsquils ma#trisent un lan!a!e de
pro!rammation et crivent u co e epuis on!temps. Les patterns de conception interviennent un niveau au$dessus
du code et indiquent typiquement comment atteindre un buten nutilisant que quelques classes.
Un pattern reprsente une ide, et non une implmentationparticulire.
4
7/24/2019 Les Patrons de Conception I
5/39
Pourquoi ? %autres dveloppeurs ont dcouvert avant vous comment
pro!rammer efficacement dans les lan!a!es orients objet.
&i vous souhaite' devenir un pro!rammeur (ava avanc, vous
devrie' tudier les patterns de conception.
d*tre connus.
)n se limitera ltude de + patrons
5
7/24/2019 Les Patrons de Conception I
6/39
Patterns dinterfacePatterns dinterfacePatterns dinterfacePatterns dinterface -%-/01 2 fournit linterface quun client attend en
utilisant les services dune classe dont linterface est
diffrente. 3-"-%0 2 fournit une interface simplifiant lemploi dun
sous$systme.
")4)&I/0 2 permet au clients de traiter de fa5onuniforme des objets individuels et des compositions dobjets.
61I%70 2 dcouple une classe qui sappuie sur desoprations abstraites de limplmentation de ces oprations,permettant ainsi la classe et son implmentation de varierindpendamment.
6
7/24/2019 Les Patrons de Conception I
7/39
Patterns de responsabilitPatterns de responsabilitPatterns de responsabilitPatterns de responsabilit &I87L0/)8 2 !arantit quune classe ne possde quune seule instance, et fournit
un point daccs !lobal celle$ci.
)6&01901 2 dfinit une dpendance du type un$$plusieurs :;,n< entre des objetsde manire ce que lorsquun objet chan!e dtat, tous les objets dpendants ensoient notifis et soient actualiss afin de pouvoir ra!ir conformment.
40%I-/)1 2 dfinit un ob et ui enca sule la fa5on dont un ensemble dob ets
intera!issent. "ela promeut un coupla!e l=che, vitant au objets davoir se rfrereplicitement les uns au autres, et permet de varier leur interactionindpendamment.
1)>? 2 contr@le laccs un objet en fournissant un intermdiaire pour cet objet.
"A-I8 )3 10&)8&-6ILI/? 2 vite de coupler lmetteur dune requ*te sonrcepteur en permettant plus dun objet dy rpondre.
3L?B0I7A/ 2 utilise le parta!e pour supporter efficacement un !rand nombredobjets forte !ranularit.
7
7/24/2019 Les Patrons de Conception I
8/39
Patterns de constructionPatterns de constructionPatterns de constructionPatterns de construction 6UIL%01 2 dplace la lo!ique de construction dun objet en$
dehors de la classe instancier, typiquement pour permettre une
construction partielle ou pour simplifier lobjet. 3-"/)1? 40/A)% 2 laisse un autre dveloppeur dfinir
linterface permettant de crer un objet, tout en !ardant un
8
.
-6&/1-"/ 3-"/)1? 2 permet la cration de familles dobjetsayant un lien ou interdpendants.
1)/)/?0 2 fournit de nouveau objets par la copie dun
eemple. 40408/) 2 permet le stocCa!e et la restauration de ltat dun
objet.
7/24/2019 Les Patrons de Conception I
9/39
Patterns doprationPatterns doprationPatterns doprationPatterns dopration /04L-/0 40/A)% 2 implmente un al!orithme dans une mthode,
laissant dautres classes le soin de dfinir certaines tapes delal!orithme.
&/-/0 2 distribue la lo!ique dpendant de ltat dun objet traversplusieurs classes qui reprsentent chacune un tat diffrent.
&/1-/07? 2 encapsule des approches, ou strat!ies, alternatives dans
commune. ")44-8% 2 encapsule une requ*te en tant quobjet, de manire
pouvoir paramtrer des clients au moyen de divers types de requ*tes :defile dattente, de temps ou de journalisation< et de permettre un clientde prparer un contete spcial dans lequel mettre la requ*te.
I8/0110/01 2 permet de composer des objets ecutables daprsun ensemble de r!les de composition que vous dfinisse'.
7/24/2019 Les Patrons de Conception I
10/39
Patterns dextensionPatterns dextensionPatterns dextensionPatterns dextension %0")1-/)1 2 permet de composer dynamiquement le
comportement dun objet.
I/01-/)1 2 fournit un moyen daccder de fa5on
squentielle au lments dune collection.
1!
une hirarchie sans chan!er ses classes.
7/24/2019 Les Patrons de Conception I
11/39
Patterns dinter"acePatterns dinter"acePatterns dinter"acePatterns dinter"ace Introduction aux interfaces
ADAPTER FACADE
COMPOSITE
11
7/24/2019 Les Patrons de Conception I
12/39
#ntroduction au$ inter"aces#ntroduction au$ inter"aces#ntroduction au$ inter"aces#ntroduction au$ inter"aces Linterface dune classe est lensemble des mthodes et
champs de la classe auquels des objets dautres classes sont
autoriss accder.
Lipl!entation dune classe est le code contenu dans
12
Les interfaces (ava permettent plusieurs classes doffrir la
m*me fonctionnalit et une m*me classe dimplmenter
plusieurs interfaces.
7/24/2019 Les Patrons de Conception I
13/39
#nter"aces et classes a%straites#nter"aces et classes a%straites#nter"aces et classes a%straites#nter"aces et classes a%straites &i les interfaces neistaient pas, vous pourrie' utiliser la
place des classes abstraites, comme dans "DD.
Les interfaces jouent toutefois un r@le essentiel dans le
dveloppement dapplications multiniveau, ce qui justifie
13
7/24/2019 Les Patrons de Conception I
14/39
&$e'ple "onsidre' la dfinition dune interface que les classes de simulation de
fuse doivent implmenter.
Les in!nieurs con5oivent toutes sortes de fuses, quelles
soient combustible solide ou liquide, avec des caractristiquesbalistiques trs diverses. Indpendamment de sa composition, lasimulation dune fuse doit fournir des chiffres pour la pousse :thrust)
14
et la masse (mass). 9oici le code quutilise Oozinoz pour dfinir linterface de simulation de
fuse 2
package com.oozinoz.simulation;
public interface RocketSim {abstract double getass();
public double get!hrust();
"oid setSim!ime(double t);#
7/24/2019 Les Patrons de Conception I
15/39
&$ercice 1armi les affirmations suivantes, lesquelles sont vraies E
Les mthodes de linterface 1ocCet&im sont toutes trois abstraites, m*me si
seulement !et4ass:< dclare cela eplicitement. Les trois mthodes de linterface sont publiques, m*me si seulement
!et/hrust:< dclare cela eplicitement.
Linterface est dclare public interface, mais elle serait publique m*me si le
15
.
Il est possible de crer une autre interface, par eemple 1ocCet&im&olid, quitende 1ocCet&im.
/oute interface doit comporter au moins une mthode.
Une interface peut dclarer des champs dinstance quune classe
dimplmentation doit !alement dclarer. 6ien quil ne soit pas possible dinstancier une interface, une interface peut
dclarer des mthodes constructeurs dont la si!nature sera donne par uneclasse dimplmentation.
7/24/2019 Les Patrons de Conception I
16/39
#nter"aces et o%ligations#nter"aces et o%ligations#nter"aces et o%ligations#nter"aces et o%ligations Un avanta!e important des interfaces (ava est quelles limitent
linteraction entre les objets.
Une classe qui implmente une interface peut subir deschan!ements considrables dans sa fa5on de remplir le contratdfini par linterface sans que cela affecte aucunement ses clients.
16
t=che dcrire les mthodes !et4ass:< et !et/hrust:< qui retournentles mesures de performance dune fuse. -utrement dit, il doitremplir le contrat de ces mthodes.
arfois, les mthodes dsi!nes par une interface nont aucune
obli!ation de fournir un service lappelant. %ans certains cas, laclasse dimplmentation peut m*me i!norer lappel, implmentantune mthode avec un corps vide.
7/24/2019 Les Patrons de Conception I
17/39
AuAuAuAu----del( des inter"aces ordinairesdel( des inter"aces ordinairesdel( des inter"aces ordinairesdel( des inter"aces ordinaires
17
7/24/2019 Les Patrons de Conception I
18/39
)o*ino*)o*ino*)o*ino*)o*ino* Les eercices et eemples de cette partie citent tous des
eemples d)o'ino' 3ireForCs, une entreprise fictive qui
fabrique et vend des pices pour feu dartifice et or!anise
des vnements pyrotechniques. 9ous pouve' vous procurer
le code de ces eem les ladresse """#oo$ino$#co#
18
7/24/2019 Les Patrons de Conception I
19/39
A+AP,&A+AP,&A+AP,&A+AP,& Un objet est un client lorsquil a besoin dappeler votre
code.
&i une classe eistante est en mesure dassurer les services
requis par un client mais que ses noms de mthodes
1
%o&'ectif du pattern ADAPTER est de fournir
linterface uun client attend en utilisant les
ser)ices dune classe dont linterface est diff!rente#
7/24/2019 Les Patrons de Conception I
20/39
Adaptation ( une inter"aceAdaptation ( une inter"aceAdaptation ( une inter"aceAdaptation ( une inter"ace &oit une classe cliente qui invoque une mthode
mthode1equise:< dclare dans une interface.
&uppose' que vous ave' trouv une classe eistante avec unemthode nomme par eemple mthodeUtile:< capable derpondre au besoins du client.
2!
classe qui tend "lasse0istante, implmente Interface1equise etredfinit mthode$1equise:< de sorte quelle dl!ue sesdemandes mthodeUtile:
7/24/2019 Les Patrons de Conception I
21/39
&$e'ple
21
7/24/2019 Les Patrons de Conception I
22/39
&$e'ple )o*ino* .1/ Ima!ine' que vous travaillie' avec
un pacCa!e qui simule le vol et le
minuta!e de fuses comme celles
fabriques par )o'ino'.
22
dvnements qui couvre leseffets du lancement de plusieurs
fuses, ainsi quune interface qui
spcifie le comportement dunefuse.
7/24/2019 Les Patrons de Conception I
23/39
&$e'ple )o*ino* .2/ 9ous dispose' dune classe hysical1ocCet que vous voule' inclure dans la
simulation.
"ette classe possde des mthodes qui correspondent approimativementau comportement requis par le simulateur.
9ous pouve' donc appliquer -%-/01 en drivant de hysical1ocCet unesous$classe qui implmente linterface 1ocCet&im.
23
7/24/2019 Les Patrons de Conception I
24/39
Adaptateurs de classe et do%0etAdaptateurs de classe et do%0etAdaptateurs de classe et do%0etAdaptateurs de classe et do%0et Les conceptions prcdentes sont des adaptateurs de classe$
c%est&'&dire que ladaptation procde de la drivation de sous$
classes. %ans une telle conception, la nou)elle classeadaptateur ipl!ente linterface d!sir!e et !tendune classe existante#
24
ette approc e ne onctionne pas toujours, notammentlorsque lensemble de mthodes que vous voule' adapternest pas spcifi dans une interface.
%ans ce cas, vous pouve' crer un adaptateur do&'et,
cest$$dire un adaptateur qui utilise la d!l!*ation plut+tue la d!ri)ation de sousclasses#
7/24/2019 Les Patrons de Conception I
25/39
&$e'ple
25
7/24/2019 Les Patrons de Conception I
26/39
&$e'ple )o*ino* .1/ Ima!ine' que le pacCa!e de
simulation fonctionne
directement avec une classe&CyrocCet, sans spcifier
dinterface dfinissant les
26
comportements n cessaires
pour la simulation
ans cette conception&ci$ le
package com.oozinoz.simulation
ne spcifie pas l%interface dont ila besoin pour modliser une
fuse.
7/24/2019 Les Patrons de Conception I
27/39
&$e'ple )o*ino* .2/ La classe &CyrocCet utilise un modle physique asse'
rudimentaire. ar eemple, elle part du principe que la fuse
se consume entirement mesure que son carburant brGle.
&uppose' que vous voulie' appliquer le modle plus
27
our adapter la lo!ique de cette classe la simulation, vouspourrie' crer une classe )o'ino'&CyrocCet en tant
quadaptateur dobjet qui tend &CyrocCet et utilise un objet
hysical1ocCet, comme le montre la 3i!ure sivante 2
7/24/2019 Les Patrons de Conception I
28/39
&$e'ple )o*ino* .3/ *ne fois complt$ ce
diagramme reprsentera la
conception d%unadaptateur d%ob+et qui
s%a uie sur les
28
informations d%une classee,istante pour satisfaire le
besoin d%un client
d%utiliser un ob+et
Sk-rocket.
0 t t d t t d bj t l l ) i &C C t t d
7/24/2019 Les Patrons de Conception I
29/39
0n tant qu adaptateur d objet, la classe )o'ino'&CyrocCet tend&CyrocCet, et non hysical1ocCet. "ela permet un objet)o'ino'&CyrocCet de servir de substitut chaque fois que le clientrequiert un objet &CyrocCet.
La classe &CyrocCet supporte la drivation de sous$classes endfinissant sa variable sim/ime comme tant protected.
2
Un objet OozinozSkyrocket
est un objet Skyrocket, maisson travail est ralis par
transmission des appels
un objet Physicalocket!
7/24/2019 Les Patrons de Conception I
30/39
&$ercice 2 Ima!ine' que vous souhaitie' lister
quelques fuses dans une table en
utilisant une interface utilisateur &Fin!.Donne$ la classe
Roc-etTa&leModel ui ada te un
3!
ta&leau de fus!es . linterfaceattendue par Ta&leModel#
0emple 2
7/24/2019 Les Patrons de Conception I
31/39
Pour rsu'er
31
7/24/2019 Les Patrons de Conception I
32/39
Pour rsu'er
32
7/24/2019 Les Patrons de Conception I
33/39
AA+&AA+&AA+&AA+& Un !ros avanta!e de la )) est quelle permet dviter le
dveloppement de pro!rammes monolithiques au code
irrmdiablement enchev*tr.
%ans un systme )), une application est, idalement, une
33
!roupes en Cits doutils rutilisables :pacCa!es
7/24/2019 Les Patrons de Conception I
34/39
aades utilitaires et d'osaades utilitaires et d'osaades utilitaires et d'osaades utilitaires et d'os Une classe de fa5ade peut ne contenir que des mthodes
statiques, auquel cas elle est appele un utilitaire#
Une d!o est un eemple qui montre comment employer
une classe ou un sous$systme. - cet !ard, la valeur des
34
7/24/2019 Les Patrons de Conception I
35/39
&$e'ple )& #&A&$e'ple )& #&A&$e'ple )& #&A&$e'ple )& #&A
35
7/24/2019 Les Patrons de Conception I
36/39
Pour regarder un "il'
36
1uand le fi est teriner il faut tout refaire . len)ers 22
7/24/2019 Les Patrons de Conception I
37/39
onstruire le "aade de 9otre
37
7/24/2019 Les Patrons de Conception I
38/39
#'pl'enter linter"ace si'pli"ier
38
7/24/2019 Les Patrons de Conception I
39/39
,ester
3