+ All Categories
Home > Documents > les patrons de conception

les patrons de conception

Date post: 05-Jul-2018
Category:
Upload: sellami
View: 241 times
Download: 0 times
Share this document with a friend

of 84

Transcript
  • 8/15/2019 les patrons de conception

    1/84

    Patrons de conception

    François Schwarzentruber ENS Cachan – Antenne de Bretagne

  • 8/15/2019 les patrons de conception

    2/84

    Qu'est ce qu'un patron de conception ?

    une problématique :pouvoir annuler 

    une façon destructurer le programme

  • 8/15/2019 les patrons de conception

    3/84

    Ce cours parle de ça :

    Propriétés fonctionnelles

    ● Correction d'un algorithme

    ● Complexité temps/espace

    ● Vivacité

    ● Propriétés nonfonctionnelles

    ● acile ! comprendre

    ● acile ! partager ● acile ! étendre

  • 8/15/2019 les patrons de conception

    4/84

    Sagesse des anciens : ne pas réinventer la roue

    ● "ombres entiers

    ● #atrices

    ● $ubi%'s cube&&&

    Théorie des groupes

    (variste )alois*

    ● +ous,groupes

    ● -rdre d'un élément

    ● Prouveur 

    ● .eu

    ● ogiciel de dessin

    Patrons de conception

    ● 0 açade 1

    ● 0 Visiteur 1

      #2me concepts  #2me problématiques

     de génie logiciel

  • 8/15/2019 les patrons de conception

    5/84

    Sagesse des anciens : du vocabulaire !

     3 notre probl4me5appliquons le

    patron 0 Visiteur 1 6

    Comme l'extension est galoisienne&&&

    a cr4me anglaisesera parfaite avec

    le g7teau&

  • 8/15/2019 les patrons de conception

    6/84

    Plan un cours catalogue de bonnes recettes decuisine "#

    ● Patrons de création

    ● Patrons de structure

    ● Patrons de comportement

  • 8/15/2019 les patrons de conception

    7/84

    Patrons de création

    ● Patron 0 abrique abstraite 1

    ● Patron 0 Protot8pe 1

  • 8/15/2019 les patrons de conception

    8/84

    $%&S crée une application pour apprendrel'algorith(ique

  • 8/15/2019 les patrons de conception

    9/84

    )esoin : adapter le logiciel pour di**érentes plate+*or(es

    9indos

    inux

    #ac-+

     3ndroid

  • 8/15/2019 les patrons de conception

    10/84

    )esoin : adapter le logiciel pour di**érents publics

    enfants

    l8céens

  • 8/15/2019 les patrons de conception

    11/84

    Constat : on a créé des ob,ets un peu partout !

    ne-

    ne-

    n e - 

    ne-

    ne-

  • 8/15/2019 les patrons de conception

    12/84

    Solution non (aintenable

    if (pourlesEnfants)

      b ! new bri"ueEffacer#out$ourEnfant() &'else

     b ! new bri"ueEffacer#out$ourceen() &

    '

     b ! new Bri"ueEffacer#out() &

  • 8/15/2019 les patrons de conception

    13/84

    Patron de conception : *abrique abstraite

    -n va devoir adapter notre

    logiciel d'algorithmique! deux publics&

    Comment faire ;

    -n appliquele patron de conception

    0 fabrique abstraite 1&

  • 8/15/2019 les patrons de conception

    14/84

    Solution : isoler la création des ob,ets dans des *abriques abstraites "

    stp5 fabrique moiune brique0

  • 8/15/2019 les patrons de conception

    15/84

    Solution : isoler la création des ob,ets dans des *abriques abstraites "

    stp5 fabrique moiune brique0

  • 8/15/2019 les patrons de conception

    16/84

    Solution : isoler la création des ob,ets dans des *abriques abstraites "

    stp5 fabrique moiune brique0

  • 8/15/2019 les patrons de conception

    17/84

    )onne solution

    fabri"ueBri"ues*getNou+elleBri"ueEffacer#out()

     b ! new Bri"ueEffacer#out() &

    abrique3bstraitefabrique>riques? ne abrique

  • 8/15/2019 les patrons de conception

    18/84

    Patron de conception : *abrique abstraite

  • 8/15/2019 les patrons de conception

    19/84

    Patron de conception : *abrique abstraite

  • 8/15/2019 les patrons de conception

    20/84

    .iagra((e de séquence de la *abrique abstraite

    +ource : cours de "o@l PlouAeau

  • 8/15/2019 les patrons de conception

    21/84

    Conclusion sur la *abrique abstraite

    ● B 3outer une nouvelle plate,forme

    ● B 3ssurer la cohérence du logiciel deux plate,formes nesont pas mélangées*

    ● B Cloisonne les besoins du client et les soucis dus auxplate,formes

    ● , $aout d'un nouveau composant brique5 bouton&&&* difficile

  • 8/15/2019 les patrons de conception

    22/84

    Créer des ob,ets selon un (od/le : le patron protot0pe "

    +ource : logiciel Dia

  • 8/15/2019 les patrons de conception

    23/84

    )esoins

    ● Créer selon des mod4les

  • 8/15/2019 les patrons de conception

    24/84

    1 ne pas *aire : une création di**érente au sein de chaquebouton222

    new Maison(Color.RED,

    Color.WHITE, 16, 32, 16)

    new Arbre(Color.GREEN,

    Color.R!WN, ", 32, ")

  • 8/15/2019 les patrons de conception

    25/84

    1 *aire

    Chaque bouton contientun protot8pe ! cloner&

  • 8/15/2019 les patrons de conception

    26/84

    .iagra((e de classe de Protot0pe "

    +ource : i%ipedia

  • 8/15/2019 les patrons de conception

    27/84

    Conclusion sur le patron Protot0pe "

    ● B Copier un obet sans se soucier de sa classe exacte

    ● B 3outer d8namiquement des obets ! une palette

    ● , le mécanisme de clonage ! créer 

  • 8/15/2019 les patrons de conception

    28/84

    Patrons de structure

    ●  3dapter une interface E adaptateur*

    ● $endre un programme lisible interface simplifiée E façade*

    ● +tructures récursives E composite*

    ● Ftilisation de la délégation E décoration*

  • 8/15/2019 les patrons de conception

    29/84

    Patron de conception 1daptateur "

    $o G $o H $o I $o JK

    H

    J

    L

    M

    GK

    GH

    Column GColumn HColumn I

    -bet)raphique

    get>ounds* : $ect

    -pen-ffice)raphicsidthheight

    interface utilisée par mon logiciel*

  • 8/15/2019 les patrons de conception

    30/84

  • 8/15/2019 les patrons de conception

    31/84

    Patron *açade " : 3 un besoin si(ple4 une inter*acesi(ple

    #on besoin :

    Nnterpréteur +cheme(# ($ 2 3) %) 11

  • 8/15/2019 les patrons de conception

    32/84

    Patron *açade " : 3 un besoin si(ple4 une inter*acesi(ple

  • 8/15/2019 les patrons de conception

    33/84

    Patron *açade "

    +ource : Patterns in .ava5 Volume G: 3 Catalog of $eusable Design Patterns Nllustrated ith F#5 +econd

  • 8/15/2019 les patrons de conception

    34/84

    .i**érence entre le patron 5açade " et 1daptateur "

    5açade

    ● >ut : créer une interfacesimplifiée ! unebiblioth4que complexe !utiliser 

    1daptateur 

    ● >ut : offrir une interfaceconforme et adapter uneclasse

  • 8/15/2019 les patrons de conception

    35/84

  • 8/15/2019 les patrons de conception

    36/84

    Patron Co(posite "

    +ource : i%iboo%s

  • 8/15/2019 les patrons de conception

    37/84

  • 8/15/2019 les patrons de conception

    38/84

  • 8/15/2019 les patrons de conception

    39/84

    Patron .écoration " utilise la délégation

    ●  3vec ladélégation on a-n* classes&

    fen2tre*

    interface d'une fen2tre*

    décorateur abstrait*

    décorateur concretcomme 0 fen2tre avecun fond 1*

  • 8/15/2019 les patrons de conception

    40/84

    Conclusion sur le patron .écorateur "

    ● B #eilleure maintenance que des 0 if 1

    ● B #oins de classes qu'avec l'héritage

    ● B #odifier d8namiquement les décorations

    ● , Comportement inattendu&&&

    new FenetreBordure(new FenetreFond(f))

    ~ new FenetreFond(new FenetreBordure(f)) ?

  • 8/15/2019 les patrons de conception

    41/84

    Patrons de co(porte(ent

    ● Nnterface graphique rafraOchissement5 souris5 clavier&&&*

    ● Conversion de données

    ● Pouvoir annuler des commandes

    ● Nmplémenter plusieurs algorithmes

  • 8/15/2019 les patrons de conception

    42/84

  • 8/15/2019 les patrons de conception

    43/84

  • 8/15/2019 les patrons de conception

    44/84

    Patron de conception : observateur 

    -n veut assurer la cohérencede l'interface graphique&

    Comment faire ;

    -n appliquele patron de conception

    0 observateur 1&

  • 8/15/2019 les patrons de conception

    45/84

  • 8/15/2019 les patrons de conception

    46/84

    .iagra((e de classe du (od/le %bservateur 

  • 8/15/2019 les patrons de conception

    47/84

    1utre application de %bservateur " : gestion desentrées9sorties

    obet qui écoute et effectue une action

  • 8/15/2019 les patrons de conception

    48/84

  • 8/15/2019 les patrons de conception

    49/84

    1 t li ti d %b t i d

  • 8/15/2019 les patrons de conception

    50/84

    1utre application de %bservateur " : conversions dedonnées d'un *or(at vers un autre

    a=

  • 8/15/2019 les patrons de conception

    51/84

  • 8/15/2019 les patrons de conception

    52/84

  • 8/15/2019 les patrons de conception

    53/84

  • 8/15/2019 les patrons de conception

    54/84

  • 8/15/2019 les patrons de conception

    55/84

  • 8/15/2019 les patrons de conception

    56/84

  • 8/15/2019 les patrons de conception

    57/84

    Probl/(es

    ● annuler des commandes ;

    ● enregistrer des macros ;

    ● la classe 0 Dessin 1 grossit si on raoute des opérations

  • 8/15/2019 les patrons de conception

    58/84

    Patron de conception Co((ande "

  • 8/15/2019 les patrons de conception

    59/84

    Patron de conception Co((ande ".iagra((e de classe

    Patron de conception Co((ande "

  • 8/15/2019 les patrons de conception

    60/84

    Patron de conception Co((ande ".iagra((e de classe

  • 8/15/2019 les patrons de conception

    61/84

  • 8/15/2019 les patrons de conception

    62/84

  • 8/15/2019 les patrons de conception

    63/84

  • 8/15/2019 les patrons de conception

    64/84

  • 8/15/2019 les patrons de conception

    65/84

  • 8/15/2019 les patrons de conception

    66/84

    Solution : le patron de conception $isiteur "

  • 8/15/2019 les patrons de conception

    67/84

    Solution : le patron de conception $isiteur "

    Solution : le patron de conception $isiteur "

  • 8/15/2019 les patrons de conception

    68/84

    Solution : le patron de conception $isiteur "

    public void visitVisitor visitor*T

    visitor&visitParagraph this*U

  • 8/15/2019 les patrons de conception

    69/84

    $isitor 

  • 8/15/2019 les patrons de conception

    70/84

  • 8/15/2019 les patrons de conception

    71/84

  • 8/15/2019 les patrons de conception

    72/84

  • 8/15/2019 les patrons de conception

    73/84

  • 8/15/2019 les patrons de conception

    74/84

  • 8/15/2019 les patrons de conception

    75/84

  • 8/15/2019 les patrons de conception

    76/84

  • 8/15/2019 les patrons de conception

    77/84

  • 8/15/2019 les patrons de conception

    78/84

    >8e(ple

  • 8/15/2019 les patrons de conception

    79/84

  • 8/15/2019 les patrons de conception

    80/84

  • 8/15/2019 les patrons de conception

    81/84

    Patron de conception état "

  • 8/15/2019 les patrons de conception

    82/84

    +lass Ea/i0ee i'0le'ens EaDessin

      0*bli+ oi 'o*se40()

     

      essin.seEa(new EaCraon())5

    0*bli+ +lass Dessin   0riae EaDessin 'onEa5

    0*bli+ Dessin()

    seEa(new EaCraon())5

      0*bli+ oi seEa(EaDessin no*elEa)

    &is.'onEa 7 no*elEa5

     

    0*bli+ oi 'o*se40()

    &is.'onEa.'o*se40()5

    )re* c'est un auto(ate222 d'ailleurs &; prévoit une s0nta8e " pour ça : les state (achine "

  • 8/15/2019 les patrons de conception

    83/84

  • 8/15/2019 les patrons de conception

    84/84


Recommended