You are on page 1of 18

22/10/2022

Patron de conception

Lazhar HAMEL
MR/MP GL
Institut Supérieur d’Informatique et de Mathématiques de
Monastir – Université de Monastir
Contact : Lazhar HAMEL
e-mail : lazhar.hamel@isimm.rnu.tn
Bureau : N°23

I. Introduction
• Cycle de vie d’un logiciel

Analyse ○ Conception
• Macroscopique
• Microscopique ou détaillée
Maintenance

Conception

Implémentation
○ Maintenance
• Corrective: correction des erreurs résiduels
Test • Evolutive: intégrer de nouvelles
fonctionnalité dans le logiciel

Utilisation

1
22/10/2022

I. Introduction
La conception d’un logiciel : un art difficile
○ Une conception réutilisable, extensible et efficace (complexité
linéaire non exponentielle) est une activité extrêmement
difficile.
○ Concepteur:
□ Novice
□ Expert
○ Un concepteur novice hésite entre les différents variantes:
Classe abstraite/ classe effective, relation de héritage/ relation
client/serveur.
○ Un concepteur expert trouve tout de suite la solution
○ Quel est le secret?
□ L’expérience

Objectifs
○ Modularité
Facilité de gestion (technologie objet)
○ Cohésion
Degré avec lequel les tâches réalisées par un seul module
sont fonctionnellement reliées
Une forte cohésion est une bonne qualité
○ Couplage
Degré d’interaction entre les modules dans le système
Un couplage'‘lâche’’ est une bonne qualité
○ Réutilisabilité
Bibliothèques, frameworks (cadres)

2
22/10/2022

Cohésion : "mauvais"
exemple

Cohésion : « bon»
exemple

3
22/10/2022

Couplage : exemple

Principes de
conception (1)

○ Programmer une interface plus qu’une implémentation


○ Utiliser des classes abstraites (interfaces en Java) pour définir des
interfaces communes à un ensemble de classes
○ Déclarer les paramètres comme instances de la classe abstraite
plutôt que comme instances de classes particulières

4
22/10/2022

Principes de
conception (2)

AINSI :
○ les classes clients ou les objets sont indépendants des classes des
objets qu’ils utilisent aussi longtemps que les objets respectent
l’interface qu’ils attendent
○ les classes clients ou les objets sont indépendants des classes qui
implémentent l’interface

Principes de
conception (3)

○ Préférer la composition d’objet à l’héritage de classes


Ainsi :
○ le comportement peut changer en cours d’exécution
○ les classes sont plus focalisées sur une tâche
○ réduction des dépendances d’implémentation

10

5
22/10/2022

I. Introduction
○ L’implémentation :
□ Est une activité répétitive : choses semblables mais
non identiques
□ Solution : des algorithmes fondamentaux et des
structures de données fondamentales.
○ Conception :
□ Répétition : choses semblables mais non
identiques
□ Solution : solution conceptuelle proposées sont
connues sous le nom : Patron de conception [1]
= des modèles de conception
= des microarchitectures logicielles
= Design Pattern.
[1] « Design Patterns » Catalogue de modèle de conception réutilisable ( 1995 version Anglaise,
version française (traduction) 1990). Ce cours va présenter quelques patterns issue de ce livre. Ces
patterns sont connues sous le nom Patterns de E.Gamma ou encore Patterns de GoF( bandes de
quatres).

11

I. Introduction
○ Référence de base :
« Design Patterns : Catalogue de modèle de conception
réutilisable »

- Ce cours va présenter quelques patrons issus de ce


livre,
- Ces patrons son connu sous le nom de patron
« E.Gamma » ou encore « patterns de Gof » ( la bande
des quatres)
- Les patterns de Gof sont au nombre de 23
- Les deux objectifs fondamentaux de la conception OO:
- Ne pas réinventer la roue
- Réutiliser systématiquement des solutions
conceptuels qui ont fait leurs preuve.

12

6
22/10/2022

Introduction et classification

 Solution générale à un problème courant en conception logicielle


 Définition des interactions entre classes ou objets
 Indépendant du langage de programmation et du paradigme
 Différent des bibliothèques
 Possibilité de combiner des patterns
 Amélioration de l’efficacité, la robustesse, le temps de
développement, la lisibilité du code

13

13

Introduction et classification

 Un patron décrit à la fois un problème qui se produit


très fréquemment dans l’environnement et
l’architecture de la solution à ce problème de telle façon
que l’on puisse utiliser cette solution des milliers de fois
sans jamais l’adapter deux fois de la même manière.

 Décrire avec succès des types de solutions récurrentes à


des problèmes communs dans des types de situations

14

14

7
22/10/2022

Introduction et classification

Définition:
 Coad [Coad92] – Une abstraction d’un doublet, triplet ou d’un
ensemble de classes qui peut être réutilisé encore et encore pour le
développement d’applications
 Appleton [Appleton97] – Une règle tripartite exprimant une relation
entre un certain contexte, un certain problème qui apparaît
répétitivement dans ce contexte et une certaine configuration
logicielle qui permet la résolution de ce problème
 Aarsten [Aarsten96] – Un groupe d’objets coopérants liés par des
relations et des règles qui expriment les liens entre un contexte, un
problème de conception et sa solution

15

15

Définitions
Documentation d’une expérience éprouvée de conception
• Identification et spécification d ’abstractions qui sont au dessus
du niveau des simples classes, instances
• Vocabulaire commun et aide à la compréhension de principes
de conception
• Moyen de documentation de logiciels
• Aide à la construction de logiciels répondant à des propriétés
précises, de logiciels complexes et hétérogènes
• Traductions : patrons de conception, schémas de conception

16

16

8
22/10/2022

Historique

17

17

Catégories
Architectural Patterns
– schémas d’organisation structurelle de logiciels (pipes, filters, brokers,
blackboard, MVC, …)
• Design Patterns
– caractéristiques clés d’une structure de conception commune à plusieurs
applications,
– Portée plus limitée que les « architectural patterns »
• Idioms ou coding patterns
– solution liée à un langage particulier
• Anti-patterns
– mauvaise solution ou comment sortir d ’une mauvaise solution
• Organizational patterns
– Schémas d’organisation de tout ce qui entoure le développement d’un
logiciel (humains)

18

18

9
22/10/2022

Introduction et classification

 Propriétés:
Un bon modèle de conception possède les caractéristiques suivantes :
 Il résout un problème de conception récurrent.
 La solution proposée n’est pas évidente
 La solution proposée doit être élégante et utile.

19

19

Introduction et classification
Description des modèles de conception :
 Tous les modèles de conception de E.Gamma sont décrits selon le même canevas (format
unique) un tel canevas comporte plusieurs rubriques :
 intention,
 motivation,
 indication d’utilisateurs,
 structure…

20

20

10
22/10/2022

Introduction et classification

 Nom du pattern, description du problème, description de la solution


 Catégories (classification):
Création : instanciation et configuration des objets
Structure : organisation des classes
Comportement : interactions entre les objets

21

21

22

22

11
22/10/2022

Les modèles de création : les


créateurs

 Les modèles de conception de création d’E.Gamma sont en nombre de 5 :

 Fabrication
 Fabrique abstraite
 Prototype
 Singleton
 Monteur

23

23

Les modèles de création : les


créateurs

 Les objectifs principaux de ces patrons sont :


 Abstraire le processus de ces patrons d’instanciation(ou de création d’objets)
 Cacher la création d’un objet : qui a créé l’objet, quand et comment ?
 Créer, composer, assembler et représenter les objectifs pour des instances d’une façon
simple et flexible.

24

24

12
22/10/2022

Les modèles de création : les


créateurs
 Les deux caractères récurrents sont :
 Ces modèles encapsulent les connaissances concrètes des classes formant le système
étudié.
 Ces modèles cachent le processus de création des objets

25

25

Le patron Singleton (créateur)


 Intention : Garantir une classe possède une seule instance (objet) et fournit un accès
(interface) de type global à cette classe.
 Motivation :
 Exemple1 : un seul serveur d’impression qui gère l’impression sur plusieurs
imprimantes.
 Exemple2 : un seul ordonnanceur pour gérer plusieurs processus.
 Exemple3 : l’utilisation des objets partagés c’est à peu près variable globale dans une
approche non OO ou une approche fonctionnelle ou encore procédurale(C).

26

26

13
22/10/2022

Le patron Singleton (créateur)

 Les deux caractères récurrents sont :


 Ces modèles encapsulent les connaissances concrètes des classes formant le système
étudié.
 Ces modèles cachent le processus de création des objets

27

27

Le patron Singleton (créateur)

 Structure

28

28

14
22/10/2022

Le patron Singleton (créateur)

 Constituants :
 Singleton: La classe singleton offre une opération classe instance () permettant
d’accéder à la seule instance (objet).
 Collaboration : Le client doit passer par l’interface instance pour accéder à la seule
instance de la classe singleton.

29

29

Le patron Singleton (créateur)

 Exercice:
Enoncé : Utiliser le patron singleton pour implémenter en java une variable globale (objet
partagé : par exemple un compteur de type entier)

30

30

15
22/10/2022

Le patron Singleton (créateur)

 Solution :
 Faire des correspondances :
 compteur-> singleton
 Connaissances concrètes :
 Cpt
 Incrémenter
 Décrémenter
 Réinitialiser
 Valeur

31

31

Le patron Singleton (créateur)

public class compteur {


private int cpt ;
private static compteur Instance_unique= NULL ;
private compteur(){
Cpt=0 ; }

32

32

16
22/10/2022

Le patron Singleton (créateur)

public void reinitialiser()


{ cpt=0 ; }
public void incrementer()
{ cpt++ ; }
public void decrementer ()
{ cpt-- ; }

33

33

Le patron Singleton (créateur)


public static compteur instance()
{
If(instance_unique ==NULL)
Intance_unique= new compteur() ;
return instance_unique ; }

public int valeur() {


return cpt ; } }

34

34

17
22/10/2022

Le patron Singleton (créateur)

Class test{
public static void main(String args[]){
Compteur.instance().incrementer();
Compteur.instance().incrementer();
Compteur.instance().incrementer();
Compteur.instance().decrementer();
System.out.println(‘’ valeur = ‘’+ compteur.instance().valeur()) ; }
}

35

35

Le patron Monteur (créateur)


 Intention : Il offre le moyen de créer des objets complexes. Il sépare le processus (ou
l’algorithme de création et la représentation des objets de telle manière que le même
processus ou algorithme puisse être utilisés par des représentations différentes.
 Motivation :
 Exemple : un Un objet complet peut comporter plusieurs composantes et il sera créé
progressivement. (partie par partie)
 RTF  ascii , text, ,,,,
 Pspdf

36

36

18

You might also like