Académique Documents
Professionnel Documents
Culture Documents
de contrôle
Exercice 1
Cet exercice est un ensemble de questions indépendantes. Dans chaque question, il s'agit de découvrir
l'utilisation d'un design pattern. Dans tous les cas de figures une justification est exigée.
1. Un avatar est un être virtuel dans une animation vidéo. Suivant les bonus et malus qu'il a pu
emmagasiner dans son parcours, l'avatar ne réagit pas de la même façon aux différents messages
qu'on lui envoie.
Quel Design Pattern identifiez-vous ? etat
4. On souhaite gérer un système d'édition de documents d'une application. Les documents peuvent
êtres des factures, des rapports de stock, des courriers divers, etc. L'édition peut aboutir à un
document PDF, une sortie imprimante, une image sur le disque dur, etc. On souhaite ne pas
avoir à changer les classes de documents chaque fois qu'une nouvelle sortie est gérée et
implémentée.
Quel design pattern est le mieux adapté pour répondre au problème ? bridge
Exercice 2
Nous considérons l’application Twitter, permettant d’échanger des « Tweets » ou messages courts avec
le monde entier. Par exemple, l’utilisateur @xyz peut envoyer le tweet « Aime #UML and
@PascalRoques» qui utilise le tag #UML et cite explicitement l’utilisateur « @PascalRoques ».
1
Tout utilisateur muni d’un compte est associé à un fil d’actualité, visible par tous, qui porte par ordre
chronologique du plus récent au plus ancien tout tweet :
qu’il a tweeté,
qu’il a retweeté,
qui le cite explicitement dans le corps du tweet,
qu’un utilisateur auquel il est abonné à lui-même tweeté ou retweeté.
Nous allons faire plusieurs hypothèses simplifiant le problème dans cet énoncé :
- Les tweets sont du texte pur, on ne peut pas attacher d’images ou fichier
- On ne peut pas rajouter du texte quand on « retweete » un message. Retweeter consiste
simplement à ajouter le tweet en question à son propre fil d’actualité ainsi qu’à celui de tous ses
abonnés potentiels.
- On ignore la fonctionnalité « aimer le tweet »
- Plus globalement, on ignore l’authentification et la création de compte (profil etc…) dans tout
l’énoncé
Question 1 :
Proposer un premier diagramme de classe (diagramme d’analyse) modélisant ce problème
2
Pour le stockage, chaque tweet est stocké en combinant les résultats obtenus par les méthodes FindCites
et FindTags. Le tweet lui-même porte le nom de son auteur, le corps de texte, la liste des personnes
citées dans ce tweet, la liste des tags présents dans le tweet, et la liste des noms des personnes ayant «
retweeté » ce tweet.
Question 2 :
Donner la partie du diagramme de classe responsable de la création d’un tweet (la sauvegarde) en
indiquant le design pattern utilisé. Builder
Question 3 :
Nous proposons ensuite de construire une liste des tweets : modifier le diagramme de la question 2 pour
ajouter la classe modélisant cette liste (reprendre tout le diagramme de la question 2).
Question 4 :
Dans cette liste, nous pouvons ajouter, retirer ou chercher des tweets. La recherche de tweets peut
correspondre soit à un fil d’actualité d’un utilisateur, soit à un mot clé ou tag comme #UML. Proposez
l’utilisation d’un design pattern pour permettre ces deux possibilités et compléter le diagramme de classe
modélisant le pattern proposé.
Stratégy
Il faut ajouter le diagramme correspondant
Question 5 :
Un compte twitter peut avoir un nombre arbitraire d’abonnés, à chaque fois qu’un utilisateur envoie un
message, ses abonnés doivent être notifiés. observateur
Quel design pattern modélise le mieux cette fonctionnalité ? Compléter le diagramme de classe
pour adopter le pattern proposé.
3
4