Licence 3 Informatique – Génie Logiciel
TP4 : Patrons de conception
Objectifs
ü Manipuler les patterns Fabrique Abstraite et Stratégie
ü Comprendre le principe SOLID
Exercice 1 : Reprise de l’exercice du concours de galettes
Dans cet exercice que vous avez vu au premier semestre, vous avez dû concevoir et réaliser une
petite application permettant de simuler un concours de mangeurs de galettes.
Petit rappel du sujet :
Le concours de mangeurs de galettes des rois est une compétition internationale de première
importance. Il regroupe dans un même lieu des gourmands et des gourmets face à des galettes.
Les règles sont simples :
• Chaque mangeur de galettes prend une part à tour de rôle et la mange.
• Si un mangeur de galettes trouve une fève le concours s’arrête et il est déclaré vainqueur.
• Si un mangeur de galette a mangé plus que son poids maximum autorisé, il s’arrête et
ne peut plus participer au concours.
• Le jeu s’arrête lorsque quelqu’un trouve la fève ou lorsqu’il n’y a plus de mangeurs en
état de continuer.
Publicité
La conception était guidée :
• La classe MangeurDeGalettes se caractérise par un poids maximum de galette qu’il
peut manger ; par le poids de galette qu’il a effectivement mangé ainsi que par la
fève. Elle possède de plus une méthode
possession éventuelle d’une
mangerPart(PartDeGalette part) pour manger une part et peut être trouver la
fève. Elle possède une deuxième méthode qui lui permet rechercher la prochaine part à
manger : PartDeGalette rechercherParts(…)
• La classe MangeurDeGalettes se spécialisait en deux classes Gourmand (qui peut
manger jusqu’à 2kg de galettes et cherche les plus grosses parts en premier) et Gourmet
(qui peut manger jusqu’à 500g de galettes et cherche les plus petites parts en premier)
• La classe Concours doit contenir une collection permettant de stocker les mangeurs de
galettes et une autre collection permettant de stocker les galettes. Il vous était de plus
indiqué que la classe Concours possédait trois méthodes :
o nettoyerTable() pour supprimer les galettes ne contenant pas de parts à
manger
Génie Logiciel
Licence 3 Informatique – Génie Logiciel
Publicité
o enleverLesPerdants() qui parcourt la liste des mangeurs de galettes et
supprime tous ceux qui ne peuvent plus manger
o MangeurDeGalettes concourir() qui va permettre au concours de se
dérouler. Cette méthode renvoie le gagnant du concours ou null si personne n’a
réussi à trouver la fève.
Consignes
ü Faites le diagramme de classes de la solution que vous avez trouvée.
ü Est-ce que cette solution respecte les principes SOLID ? Modifiez-la en conséquence
pour qu’elle les respecte au maximum.
ü Ecrivez les différents tests unitaires permettant de valider votre solution.
Exercice 2 : Extension avec le patron Fabrique
Nous souhaitons maintenant étendre notre programme en proposant différentes galettes. En
particulier, il faudra créer des galettes à la frangipane (assez lourde ~2kg pour 8 parts), à la
pistache (encore plus lourde ~2.5kg pour 8 parts) et des galettes allégées (~500g pour 8 parts)
Consignes :
ü Etendez votre diagramme de classe pour prendre en compte cette extension. Pour cela,
utilisez le patron de conception Fabrique Abstraite pour permette de créer simplement
des galettes pour les concours.
Publicité
ü Vérifiez que votre solution fonctionne et est bien évolutive en ajoutant une nouvelle
recette de galettes spécialement pour végans (~1.5kg pour 8 parts).
Exercice 3 : Introduction du patron Stratégie
Dans la version initiale du TP il vous était proposé d’utiliser l’héritage pour représenter les
Gourmands et les Gourmets. Néanmoins cette solution n’est pas optimale dans la mesure où
elle ne respecte pas le O de SOLID.
Consignes :
ü Modifiez votre conception pour introduire un patron de Stratégie qui vous permette de
représenter les Gourmands et les Gourmets.
ü Adaptez les stratégies au nouveau type de galettes :
o Le gourmand va viser les galettes à la pistache.
o Le gourmet se concentre sur les galettes à la frangipane.
ü Ajoutez un nouveau type de compétiteur à savoir le Vegan qui aura pour stratégie de ne
manger que des galettes végans.
Génie Logiciel