TDPattron de Conception [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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é.