Vous êtes sur la page 1sur 4

Devoir surveillé Examen x Session: principale x

de contrôle

Matière : UML & Design Patterns Semestre : 1er………..….


Enseignant(s) : Mme S. Bouzidi……………………….. Date: …03/01/2020………
Filière(s) : GL3………………………………………… Durée:1heure 30 mn ……..
Barème : Documents: autorisés
Nombre de pages : …2………………………………… non autorisés x

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

2. On veut modéliser une situation où un ensemble de personnes et d'organisations suivent les


variations du prix d'un article. Par exemple il peut s'agir de consommateurs décidant s’ils
achètent ou pas l'article en fonction de son prix. Il peut aussi s'agir d'organismes de contrôle
surveillant l'évolution du prix de cet article.
Chaque personne/entité fixe un prix seuil à partir duquel elle peut déclencher une action (acheter
par exemple pour un consommateur, alerter par exemple pour un organisme de contrôle).
Quel patron de conception vu en cours vous paraît le plus adapté pour modéliser la
situation ? Pourquoi ? observateur

3. On souhaite créer un gestionnaire de données permettant de sauvegarder une collection de


données de manière transparente soit sur un serveur distant, soit sur une base de données locale
SQLite, soit sous forme de fichier XML. On suppose que la collection des données est
représentée par une classe DataCollection.
Quel design pattern offre la solution la plus adaptée à votre problème ? strategy

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

I. Persistance et accès aux Tweets


On propose la classe AnalyseTweet, responsable d’analyser les Tweets, pour déduire les personnes citées
dans le tweet ainsi que les tags utilisés par un tweet. Les citations de personnes sont précédées d’une @
comme « @PascalRocques », les tags sont précédés d’un symbole # comme « #UML ». Cette classe
implémente l’interface IAnalyseTweet présentée par la figure ci-dessous :

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é.

Il faut ajouter le diagramme correspondant

3
4