31 0 468KB
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, sousré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 ceuxci 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é.