TD : Design Patterns
Exo : L’Observer
La figure 4 représente les relations entre les classes Synchronisateur et Calculateur. Un calculateur
permet d’effectuer des calculs. Etant donné que n’importe qui peut demander à un calculateur
d’effectuer des calculs, la classe Synchronisateur a été construite pour réguler les calculs.
Les personnes qui souhaitent demander la réalisation d’un calcul doivent passer par le
synchronisateur (via l’opération calculer()). Celui-ci distribue les calculs aux différents calculateurs
avec lesquels il est lié (c’est lui qui appelle l’opération calculer() sur les calculateurs). Un calculateur
connaît le synchronisateur auquel il est relié grâce à la propriété sync de type Synchronisateur. Sa
valeur doit être déterminée lors de la création des objets de type Calculateur.
Figure 3 Classes Synchronisateur et Calculateur
Q1: Nous souhaitons maintenant définir une classe représentant une barre de progression. Cette
barre affiche l’état d’avancement du calcul (en pourcentage). Une barre de progression reçoit des
messages d’un calculateur qui l’informe que l’état d’avancement du calcul a changé. Définissez cette
classe.
Q2: Tout comme le synchronisateur, une barre de progression doit se déclarer auprès d’un
calculateur. De plus, le calculateur doit offrir une opération permettant de connaître le pourcentage
d’avancement du calcul. Définissez les associations et opérations nécessaires.
Q3: Comme vous avez du le remarquer, ici nous avons le moyen d’appliquer le patron de conception
Observer. Proposez une solution et n’hésitez pas à demander plus d’information à votre prof.