Documente Academic
Documente Profesional
Documente Cultură
o n
luti
Examen
So
40% note du trimestre
Documentation
permise
A) (35 points) Patterns de création
Supposons qu’un client souhaite que vous conceviez un jeu de Babyfoot paramétrable de manière à pouvoir
créer des joueurs ayant une apparence 2D ou une apparence 3D. De plus, les joueurs d’apparence 2D ou 3D
peuvent également avoir une texture de surface standard (plain) ou une texture de surface avec effets d’ombres
(shaded). Le serveur (Classe concrète ServerBabyfoot) est responsable de créer la table de jeu (Classe
concrète BabyfootTable) et la table est elle‐même responsable de créer 20 joueurs à l’aide d’une usine. Un
seul exemplaire de la table doit exister lors de sa création par le serveur.
Concevez le diagramme de classes du système en utilisant les patterns AbstractFactory, FactoryMethod et
Singleton. Notez que AbstractFactory doit utiliser FactoryMethod. Indiquez clairement toutes les classes
abstraites et concrètes de votre système et le niveau d’accès (private, protected, public) des attributs et
méthodes des classes.
B) (35 points) Patterns structurels
Traitez cette question indépendamment des questions précédentes.
Supposons, comme en A), que nous disposions de la classe ServerBabyfoot et de la classe
BabyfootTable. Supposons également que le code pour chaque joueur (appartenant à la classe concrète
Player) s’exécute sur des machines différentes sur un réseau Ethernet. Pour rendre les communications plus
efficaces, la table de babyfoot utilise le pattern Proxy pour communiquer avec chaque joueur. Le proxy transmet
les requêtes aux joueurs réels seulement lorsque cela s’avère nécessaire (supposez que le proxy conserve des
informations de base sur son joueur et qu’il ne transmet une requête à ce dernier que lorsqu’il ne possède pas
l’information localement). Supposons finalement que vous avez trouvé une classe intéressante appelée
PlayerGameboy qui possède les fonctions de base que vous souhaitez implanter pour votre classe Players,
mais, vous désirez ajouter un effet visuel de surbrillance en décorant le joueur en fonction du contexte de la partie.
Etablissez le diagramme de classes comportant les classes réelles ServerBabyfoot, BabyfootTable,
Player, PlayerGameboy pour utiliser les patterns Proxy, Decorator, et Adapter. Incluez toutes les classes
abstraites et concrètes nécessaires à votre design. Supposez que les classes Player et PlayerGameboy
offrent les interfaces suivantes.
C) (30 points) Patterns comportementaux
Traitez cette question indépendamment des questions précédentes.
Supposons que nous disposions de la classe ServerBabyfoot et de la classe BabyfootTable. Un
objet de la classe BallBabyfoot est un Singleton appartenant à l’objet BabyfootTable et représente
la balle sur le jeu. Supposons également que nous disposions de la classe GoalBabyfoot représentant un but
du jeu de Babyfoot. On désire utiliser le pattern Observer pour que les objets de la classe GoalBabyfoot
puissent connaître la position de l’objet BallBabyfoot lorsqu’elle change sur la table de jeu. Cette position
est représentée par deux coordonnées cartésiennes sur la table.
Concevez le diagramme de classes décrivant les liens entre les classes tels que décrits ci‐dessus. Ajoutez
toutes les classes abstraites et concrètes nécessaires à votre design.