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
- 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/.
- 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.
- 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.
- 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.
- 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.).