Les Patrons de Conception I

download Les Patrons de Conception I

of 39

Transcript of Les Patrons de Conception I

  • 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