TD1 DesignPattern 2010-2011
TD1 DesignPattern 2010-2011
TD1 DesignPattern 2010-2011
Master 2 ‐ Ingénierie Logiciel ‐ Année 2010‐2011
Méthodologie et Processus de Développement de Logiciels (MPD LOG)
TD n°1
Design Pattern
Exercice1 Le Design Pattern singleton
1 Rappel
Intention
• Garantir qu’une classe n’a qu’une seule instance et fournir un point d’accès global
à cette instance.
Indications d’utilisation
• Il doit y avoir exactement une instance d’une classe ;
• cette instance est accessible globalement ;
Exemple :
• Fenêtre principale d’une IHM
• Accès à un fichier de configuration
• Accès à une base de données
Pattern :
• Constructeur privé
• Instance en tant qu’attribut statique de la classe
• Méthode statique d’accès à l’instance
Voici une solution écrite en Java (il faut écrire un code similaire pour chaque classe‐
singleton):
public class Singleton {
private static Singleton instance = null;
/**
* La présence d'un constructeur privé supprime
* le constructeur public par défaut.
*/
private Singleton() {}
/**
* Le mot-clé synchronized sur la méthode de création
* empêche toute instanciation multiple même par
* différents threads.
* Retourne l'instance du singleton.
*/
public final synchronized static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
}
}
1
Université des sciences et de la technologie Houari Boumediene (USTHB)
Master 2 ‐ Ingénierie Logiciel ‐ Année 2010‐2011
Méthodologie et Processus de Développement de Logiciels (MPD LOG)
2 Utilisation de ce pattern
Proposez une implémentation d'une application qui veut créer un seul point au pilote de
la carte son, en se basant sur le patron singleton.
Exercice2 Le Design Pattern Composite
1 Rappel
Intention
• Représenter une hiérarchie d’objets en permettant à un objet client de traiter de
manière unique les objets élémentaires et les combinaisons de ceux‐ci.
Indications d’utilisation
• Représentation de structures récursives ;
• traitement uniforme de tous les objets du composite, qu’ils soient terminaux ou
non.
La figure suivante montre le diagramme de classe du Design Pattern Composite :
2 Utilisation de ce pattern
1.1. Système de gestion de fichiers
Soit le système de gestion de fichiers suivant : Les fichiers, les raccourcis et les
répertoires sont contenus dans des répertoires et possèdent un nom. Un raccourci
peut concerner un fichier ou un répertoire. Au sein d'un répertoire donné, un nom
ne peut identifier qu'un seul élément (fichier, sous‐répertoire ou raccourci)
Question
Proposez une modélisation de ce système de gestion de fichiers.
2
Université des sciences et de la technologie Houari Boumediene (USTHB)
Master 2 ‐ Ingénierie Logiciel ‐ Année 2010‐2011
Méthodologie et Processus de Développement de Logiciels (MPD LOG)
1.2. Les listes d’entiers
Soit la description du patron composite pour des listes d’entiers donnée dans la
Figure 1.
Figure 1 : Diagramme de classe pour les listes
Questions:
1. Faites apparaître et justifiez l’utilisation du patron singleton dans votre
implémentation.
2. Implémentez de façon récursive les fonctions suivantes : append, putlast,
reverse.
1.3. Polynômes à une variable réelle
L’objectif est d'élaborer un diagramme de classe permettant la représentation des
polynômes à une variable réelle.
Exemple : 0 − 100 − Z4 ; 3.5X2 + 2X ; Y3 + Y2 + Y
3
Université des sciences et de la technologie Houari Boumediene (USTHB)
Master 2 ‐ Ingénierie Logiciel ‐ Année 2010‐2011
Méthodologie et Processus de Développement de Logiciels (MPD LOG)
Question 1 :
Définissez une classe de variable, une classe de constante réduite au flottant, une classe
de monôme et une classe des polynômes.
Il faudra munir cet ensemble de classes d’un minimum d’opération :
z getZero : une référence sur le polynôme null crée suivant le principe du
singleton.
z sameVariable : teste si le polynôme à la même variable que le monôme
argument.
z degree : calcule le degré du polynôme.
z compute : calcule la valeur du polynôme pour une valeur donnée de la
variable.
z derivation : trouver un moyen de calculer une approximation raisonnable de
la dérivée en un point d’un polynôme. Cette méthode aura le profil suivant :
derivation : Polynome × float → float.
Question 2 :
Utiliser un patron composite pour organiser tout cela. Réfléchir et résoudre le problème
suivant : un monôme seul peut‐être considéré comme le polynôme réduit à ce monôme
et c’est également le cas pour une constante. Par ailleurs si un polynôme à plusieurs
monômes ceux‐ci sont mémorisés en ordre strictement décroissant des puissances (ceci
permet d’avoir une forme normale bien pratique pour comparer deux polynômes). Ces
dernières conditions apparaîtront comme des contraintes dans un commentaire associé
à la classe polynôme. Votre première tâche est donc de réfléchir au diagramme des
classes.
Question 3 :
Implémentez de façon récursive les fonctions suivantes : sameVariable, compute, et
derivation
4