Rapport Help

Envoie de donnés

Cette partie est la plus technique du projet car je vais utiliser la surcharge d'opérateur ainsi que le polymorphisme pour envoyer les données des capteurs au serveur. En effet, pour envoyer les données des capteurs au serveur, j'ai utilisé la surcharge de l'opérateur << pour afficher les données des capteurs dans la console et dans un fichier de log.

Envoie des données des capteurs au serveur

Pour envoyer les données d'un capteur au serveur, chaque capteur doit être connecté à un serveur(relation de composition). Une fois que le capteur a éffectué une mesure, il envoie les données au serveur (via la méthode notify de la classe Server qui prend en paramètre un pointeur vers le capteur donc lui-même(server->notify(*this)))

Réception des données par le serveur

Une fois que le serveur à reçu l'adresse du capteur, il va appeler l'opérateur << sur ce capteur sauf que comme le serveur à un pointeur de Sensor, il va appeler l'opérateur << de la classe Sensor et non celle de la classe spécifique du capteur.

Récupération des données

Dans l'opérateur << redéfini dans la classe Sensor, je vais appeler une méthode virtuelle display qui est redéfinie dans chaque classe de capteur ainsi que dans la classe mère Sensor.

Sauf que la méthode appelante display dans la classe Sensor va appeler la méthode display de la fille car l'objet courant n'est pas un objet de la classe Sensor mais un objet d'une classe fille (grace à la liaison dynamique et au polymorphisme).

Puis la méthode display de la classe fille va appeler la méthode display de la classe mère pour mettre les informations de base du capteur (id, type) dans un ostream.

Enfin, la méthode display de la classe fille va appeler l'oporteur << sur la classe Data pour mettre les données du capteur dans l'ostream. Cela est possible car les capteurs spécialisés héritent de la classe Data.

Enregistrement des données dans un fichier

Pour enregistrer les données des capteurs dans un fichier, j'ai utilisé l'opérateur << redéfini pour la classe ofstream. Ainsi, lorsque le serveur reçoit les données des capteurs, il les enregistre dans un fichier de log (et les affiche dans la console).

Schéma séquentiel de l'envoie des données

Fonctionnement de l'envoi de donnéesArnaud MICHELServerServerSensorSensorSensorSpeSensorSpeDataData1<< Sensor2this->display(os);3Sensor::display(os);4os << id << ";" << type << ";";5os << static_cast<const Data<T>&>(*this);6os << value;7return os;8return os;9file << os;SensorSpe: Classe spécialisée de Sensor
Last modified: 10 November 2024