Le but de ce TP est d'écrire un système de gestions de données météo. Une classe singleton (n'ayant qu'un seul objet existant à la fois) representera les données météo. Plusieurs classes instruments (thermometre, barometre,...) observeront ces données. La météo evoluera au cours du temps, et à chaque évolution les instruments devront se reafficher.
La classe Meteo doit être une classe Singleton. On fera donc en sorte que son constructeur ne soit pas accesible, mais que l'on accède à l'instance courante (en la créant si nécessaire) par l'intermédiaire d'une méthode statique. Cette classe contiendra des données double representant la temperature, l'hygrométrie, ect... On surchargera l'operateur d'affichage <<.
Comme il a été vu en TD, nous allons implémenter le pattern Observer. On réalisera deux classes abstraites Observer et Observable. Observable contiendra un tableau d'Observer, representant les objets qui l'observent. Une méthode publique permettra de rajouter un Observer, et une méthode pure signal appelera sur tous les Observer une méthode pure valueChanged.
Définir la Meteo comme étant un Observable et ecrire une méthode evolue qui fait evoluer les parametères (par exemple avec des VANormale) et signale le changement.
Ecrire une classe Instrument, et des sous-classes Thermometre et Barometre. A la création d'un instrument, celui-ci doit observer la météo, et lorsque celle-ci change, il doit s'afficher.
Pouvez-vous remplacer l'usage du motif Observer par une utilisation adéquat des exceptions? Comparez la maintenance des deux solutions