TP 6 : Observer et Singleton

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.

Classe Meteo

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

Observer/Observable

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.

Classes instruments

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.

Simulation de comportement avec des Exceptions

Pouvez-vous remplacer l'usage du motif Observer par une utilisation adéquat des exceptions? Comparez la maintenance des deux solutions