Patrons de conception dans un concours de mangeurs de galettes

Page 1 sur 2Lecteur de document UniversityLib

Patrons de conception dans un concours de mangeurs de galettes

Programmation, Génie Logiciel · lab

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