Projets GLRT - IT340 - Approche Objet


Ce travail doit être fait par groupe de 4 personnes maximum. Il est interdit de prendre le même sujet par deux groupes. Merci de me faire parvenir par email une liste des groupes au plus tard le jeudi 4/12 avec la répartition des projets.

Vous devez remettre un rapport au plus tard le 14/01par email sous la forme d'une archive zip portant vos noms (par exemple dupont_durand_martin.tgz) et comportant :
- l'architecture sous la forme d'un diagramme de classes UML,
- quelques explications sur les choix, le rapport entre votre application et les patterns utilisés,
- le répertoire de votre projet (sous eclipse)
Les diagrammes et les explications devront être au format postscript ou pdf. 

Vous présenterez vos projets, ainsi que les patterns utilisés lors d'une soutenance de 20' (plus 10' de questions). Les notes seront individuelles en fonction de votre capacité à répondre. Les questions porteront sur votre projet, les patterns utilisés, mais aussi sur les patterns vus en TD.

Chaque projet peut faire l'objet d'un développement plus ou moins important. Pensez à privilégier la qualité de votre architecture, de votre code et de vos documents avant d'augmenter les fonctionnalités.

La description des modèles est à regarder dans le livre de référence :
E. Gamma, R. Helm, R. Johnson, J. Vlissides "Design Patterns, Catalogue de conception réutilisables", Vuibert.

Sujets

  1. Modèles Fabrication/Prototype
    Créer une fenêtre de dessin avec des boutons pour créer des formes graphiques.
    Il y a sans doute des livres sur Swing à la BU, mais vous pouvez aussi utiliser des documents du Web, en particulier ceux disponibles sur les sites de Sun http://java.sun.com/docs/books/tutorial/uiswing/. Voir aussi http://perso.wanadoo.fr/jm.doudoux/java/tutorial/

  2. Modèles Interpréteur/Visiteur/Poids Mouche
    Définir une grammaire avec 4 ou 5 non-terminaux (par exemple celle des expressions arithmétiques avec les 4 opérateurs +, -, x, /). Implémenter le modèle Interpréteur sur cette grammaire. Implémenter le modèle Visiteur sur l'arbre syntaxique ainsi obtenu et effectuer au moins deux traitements à l'aide du visiteur, par exemple un calcul et un affichage. On pourra aussi mettre en oeuvre le modèle Poids mouche pour les feuilles.

  3. Modèles Commande/Memento
    Ecrire une classe représentant une matrice. Parmi les opérations, prévoir des opérations complexes comme "mettre toutes les valeurs à x". Implémenter le modèle Commande pour mémoriser l'ensemble des actions effectuées et ainsi pouvoir faire un ou plusieurs undo/redo. Utiliser le modèle Memento pour effectuer les undo sur les modifications complexes. Le programme fonctionnera à l'aide de commandes passées sur l'entrée standard.

  4. Modèles Etat/Stratégie/Poids Mouche
    On considère un jeu avec 3 types d'éléments : un gentil, des méchants et des pastilles magiques. Les méchants cherchent à manger le gentil et quand le gentil mange une pastille magique, il devient invincible et peut à son tour manger les méchants, pendant un certain temps. Le gentil et les méchants se déplacent dans un espace rectangulaire, les pastilles sont fixes. Utiliser le pattern Etat pour le changement d'état du gentil lorsqu'il mange une pastille magique, le pattern Stratégie pour que le gentil et les méchants adaptent leur déplacement à l'état du gentil et le pattern Poids Mouche pour les pastilles magiques.

  5. Modèles Monteur/Stratégie/Décorateur/Médiateur
    On considère un jeu avec des méchants et un gentil se déplaçant sur une grille. La grille sera fabriquée en utilisant le modèle Monteur. Le comportement du gentil sera modifié en utilisant le modèle Décorateur. Le jeu sera un Médiateur empêchant une trop grande dépendance entre les autres classes. On pourra utiliser Stratégie pour changer le comportement du gentil et/ou des méchants selon les objets récupérés sur la grille, le niveau de jeu (débutant, expert etc.).