Master 1ère année
Filière -- Informatique 2005 - 2006
Génie Logiciel (Patron de Conception)
1er semestre 2005
TD 1 -- Method Factory, Factory et Abstract Factory
Auteurs Rémi Forax et Thibault Crucy 08 Novembre 2005
Method Factory, Factory et Abstract Factory

Dans ce TD, nous allons nous consacrer à la compréhension des patrons de conception Method Factory, Factory, Abstract Factory et Singleton.
Tout d'abord, nous allons réaliser un petit programme permettant d'appliquer une série de filtres décrit dans un fichier (par exemple, filter.txt) à une série d'images.
Dans un second temps, nous allons nous intéresser au patron de conception Singleton en développant un programme permettant de décrire un chemin dans l'arborescence de fichier (le code de la classe PathName permet de réaliser cette description). Cette description doit être indépendante du séparateur utilisé par le système d'exploitation sous jacent (Unix, Windows, MacOs).
Enfin, nous souhaitons complèter le programme appliquant une série de filtres à une série d'images en permettant de spécifier des paramètres aux différents filtres décrit dans un fichier (par exemple, filter2.txt) que l'on peut appliquer à une (ou des) image(s).

Omondo, le plugin UML d'Eclipse utilisé durant ce TD.

TD 2 -- Association, Composite et Decorator
Auteurs Rémi Forax et Thibault Crucy 15 Novembre 2005
Association, Composite et Decorator

Durant ce TD, nous allons nous intéresser aux patrons de conception Association, Composite et Decorator.
Nous allons commencer par modéliser un système d'achat en ligne de type Amazon réalisé avec J2EE.
Nous verrons ensuite comment créer une version très simple d'un jeu de type Command and Conquer en exploitant les patrons de conception Composite et Decorator.

TD 3 -- Diagramme de séquence, Injection de dépendance et Builder
Auteurs Rémi Forax et Thibault Crucy 29 Novembre 2005
Diagramme de séquence, Injection de dépendance et Builder

Le but de ce TD est de s'intéresser aux diagrammes de séquence puis aux patrons de conception Injection de dépendance et Builder.
Dans un premier temps et à partir du code précédemment écrit dans le TD 1, nous allons modéliser le scénario de l'applications d'un ensemble de filtre à une image en utilisant un diagramme de séquence.
Dans un second temps, nous allons utiliser le patron de conception Injection de dépendance afin de répondre au problème de l'internationalisation du fichier décrivant les filtres appliqués à une image. L'idée consiste à enregistrer plusieurs fois un filtre avec des noms différents dans la table d'association.
Enfin, en utilisant le patron de conception Builder, on souhaite créer une classe Query permettant de créer des requêtes SQL (seulement, SELECT, FROM, WHERE et AND). On souhaite de plus permettre à l'utilisateur de spécifier seulement des couples nom de table / champs soit en tant que clause SELECT ou en tant que clause WHERE. Les valeurs du FROM seront alors calculées automatiquement.

TD 4 -- Proxy, State et Logger
Auteur Rémi Forax 06 Décembre 2005
Proxy, State et Logger

Nous allons nous intéresser dans ce TD aux patrons de conception Proxy, State et Logger.
Dans un premier temps, nous allons gérer un album de photos et plus particulièrement on souhaite, pour faciliter le déverminage d'une application, afficher un message lorsque l'on entre ou sort d'une fonction d'un objet. Pour se faire, nous allons utiliser le patron de conception Proxy qui va nous permettre d'ajouter des fonctionnalités avant ou après l'appel à une méthode d'une classe donnée.
Dans un second temps, nous souhaitons réécrire notre propre Logger. En utilisant le patron de conception State, on souhaite déléguer au niveau du Logger le soin d'afficher ou non le message. On enrichira par la suite notre Logger de fonctionnalités permettant en autre d'afficher des informations telles que la classe de la méthode appelante, le fichier dans lequel se trouve la méthode ainsi que sa ligne. On utilisera le mécanisme des Exceptions et la pile d'appel (stack trace) afin de récupérer toutes ces informations.

TD 5 -- Visiteur
Auteur Rémi Forax 13 Décembre 2005
Visiteur

Ce TD va s'intéresser au patron de conception Visiteur.
Ainsi, à partir d'un petit évaluateur et simplificateur d'expressions arithmétiques, nous allons intégrer un mécanisme de Visiteur permettant d'enrichir du code déjà existant de nouvelles fonctionnalités sans le modifier (par exemple, une méthode d'évaluation, une méthode de conversion en chaîne de caractères d'un noeud d'un arbre, etc). Pour se faire, nous allons créer une interface Visitor implantée par les classes SimplifyVisitor, EvalVisitor et ToStringVisitor. Lors du parcours de l'arbre d'une expression arithmétique, un visiteur sera appelé sur chacun des noeud afin de réaliser un traitement pouvant être l'affichage des informations du noeud, l'évaluation du noeud, etc.

Projet -- Projet Design Pattern
Auteur Rémi Forax Deadline : 31 Décembre 2005 et 05 Février 2005 2005
Projet Design Pattern

Ce projet est décomposé en deux parties distinctes ayant chacune une date de rendu différente.
La première partie va consister à corriger un bug existant dans le JDK du langage Java ainsi que la fourniture d'un plan de travail prévisionnel de la seconde partie du projet sous forme d'un diagramme de Gantt.
La seconde partie, quant à elle, va consister à effectuer un travail d'analyse à postériori d'un logiciel existant, Tatoo un compilateur de compilateur, et à écrire le code d'un certain nombre de modifications mineures sur ce logiciel.