Vous êtes sur la page 1sur 3

TD – Design patterns

I ­ Patterns créationnels (creational)
Exercice 1 :
proposez une implémentation d'une application qui veut créer un seul point d'accès au pilote de la 
carte son,  en se basant sur la patron singleton. 

II ­ Patterns structuraux (structural)
Exercice 2:
proposer une solution qui permette de modéliser 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)

Exercice 3:
Soit la description de ce patron pour des listes d’entiers donnée dans la figure 1.

Fig1 : Diagramme de classe pour les listes

1. Faites apparaître et justifier l’utilisation du patron singleton dans votre implémentation.
 Implémentez de façon récursive les fonctions suivantes : append, putlast, reverse. 
 append : ListeDEntier ListeDEntier ­> ListeDEntier : concatène simplement deux listes en 
une seule. Par exemple soient l1 = 1 2 3 et l4 = 4 5 6 alors l1.append(l2) sera la liste 1 2 3 4 5 
6.
 putlast : ListeDEntier int ­> ListeDEntier : ajoute l’entier à la fin de la liste. Par exemple 
l1.putlas(4) sera 1 2 3 4.
 reverse : ListeDEntier ­> ListeDEntier : produit une nouvelle liste inversée. Par exemple 
l1.reverse() produira une nouvelle liste représentant 3 2 1.
Exercice 4:
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 
 Y 3 + Y 2 + Y
Hypothèse : nous considérerons le type float comme une bonne réalisation informatique des réels 
mathématiques, et supposons que les polynômes manipulés sont homogènes à une seule variable. 

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 :
 getZero : une référence sur le polynôme null crée suivant le principe du singleton.
 sameVariable : teste si le polynôme à la même variable que le monôme argument.
 degree : calcule le degré du polynôme.
 compute : calcule la valeur du polynôme pour une valeur donnée de la variable.
 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ée   à   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

Exercice 5:
L'objectif   est   d'élaborer   un   diagramme   de   classe   permettant   la   représentation   des   interfaces 
graphiques. Une fenêtre est définie par un titre, une largeur et une longueur. 

Nous supposons que les éléments graphiques disponibles sont :  bouton,  label  et  panneau. Les 


boutons et labels sont décrits par un nom de programmation, un texte représentant le message à 
afficher et sont munis des opérations suivantes:
 getText() : retourne le texte affiché.
 setText(String text) : modifie le texte à afficher
 setVisible(boolean b) : modifie la visibilité de l'objet selon la valeur du boolean b.

Tout  panneau  est   un   conteneur   simple   qui   peut   contenir   des  boutons,  labels  et   d'autres 
panneaux. Il dispose pour cela de la méthode ajouter.

Les éléments graphiques ne peuvent être ajoutés directement à une   fenêtre. Pour cela, chaque 
fenêtre dispose d'un panneau par défaut, auquel les éléments graphiques peuvent être ajoutés. La 
méthode getPanneau permet de récupérer le panneau par défaut d'une fenêtre.

Question 1 :
Donner la description  UML de chacune des classes suivantes :
2. classe Fenetre
3. classe Bouton
4. classe Label
5. classe Panneau

Question 2 : 
Proposer un diagramme des classes pour représenter les interfaces graphiques, en utilisant 
un patron composite. Préciser pour chaque association son nom et sa cardinalité.

Vous aimerez peut-être aussi