Sunteți pe pagina 1din 3

Département de génie électrique et de génie informatique Génie logiciel orienté objet

Faculté des sciences et de génie IFT-2901

o n
luti
Examen
So
40% note du trimestre
Documentation
permise

QUESTION 1 Les design patterns

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.

Trimestre Automne 2010 - Examen Page 1


Département de génie électrique et de génie informatique Génie logiciel orienté objet
Faculté des sciences et de génie IFT-2901

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.

Trimestre Automne 2010 - Examen page 2


Département de génie électrique et de génie informatique Génie logiciel orienté objet
Faculté des sciences et de génie IFT-2901

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. 

Trimestre Automne 2010 - Examen page 3

S-ar putea să vă placă și