IFT 232 Méthodes de conception orientée objets Séance d’exercices IV Date : 31 janvier et 7 février 2005 Objectifs Comprendre et maîtriser le design pattern « Factory Method » Comprendre et maîtriser le design pattern « Abstract Factory» Factory method design pattern Enoncé : Tout programme doit pouvoir rapporter les erreurs ou encore afficher des messages servant pour le déverminage. Soit l’interface suivante public interface Trace { // turn on and off debugging public void setDebug( boolean debug ); // write out a debug message public void debug( String message ); // write out an error message public void error( String message ); } Question 1 : Écrire une classe SystemTrace qui implémente Trace. Les instances de cette classe affiche le résultat dans la fenêtre de commande en ligne. Question 2 : Ajouter les instructions de déverminage nécessaires pour tracer sur la console chacun des appels de méthodes de votre solution de la séance d’exercices III. Question 3 : Écrire une classe FileTrace qui implémente Trace. Les instances de cette classe affiche le résultat dans un fichier. Question 4 : Modifier votre réponse à la question 2 pour conserver la trace dans un fichier. Le nom de ce fichier sera spécifié dans les propriétés du programme et chargé dans une instance de ProgramProperties. Cette instance sera un Singleton créé à sa première utilisation. Cette classe sera sous-classe de java.util.Properties. Si vous n’êtes pas familier avec les alternatives permettant de déterminer les propriétés d’un programme, voir http://java.sun.com/docs/books/tutorial/essential/attributes/index.html Question 5 : Vous avez probablement dû modifier votre programme en plusieurs endroits dans plusieurs classes. Afin de rassembler la création du système de trace en un seul endroit, écrivez une classe TraceFactory possédant une méthode « factory » abstraite getTrace(). Question 6 : Ecrivez la classe SystemTraceFactory qui est une sous-classe de TraceFactory. Cette classe rend une instance de la classe SystemTrace. Question 7 : Ecrivez la classe FileTraceFactory qui est une sous-classe de TraceFactory Cette classe rend une instance de la classe FileTrace. Question 8 : Transformez TraceFactory en Singleton. La classe de l’instance sera spécifée dans le fichier de propriétés du programme. Par défaut, une instance de la classe SystemTraceFactory. Remarques : Java fournit un système sophistiqué de logging. Vous pouvez consulter le site suivant pour avoir plus d’informations : http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/ Abstract Factory design pattern Enoncé : Vos clients sont américains et français. Bien entendu, les américains tiennent mordicus à travailler avec des mesures en système impérial alors que les français tiennent absolument au système métrique. Implémentez à l’aide du patron de conception « Abstract Factory» un programme qui garantisse aux utilisateurs de ne travailler que dans un seul des deux systèmes de mesure de leur choix. Le système de mesure choisi sera spécifié dans un fichier de propriétés.