Class Air

java.lang.Object
  extended by java.lang.Thread
      extended by Air
All Implemented Interfaces:
java.lang.Runnable

public class Air
extends java.lang.Thread

Programme qui simule l'évolution de la température de l'air d'une pièce en fonction de la température extérieure et du niveau de chauffage demandé. Chaque seconde la température courante est envoyée via un message de type MessageTemperature sur le groupe multicast du programme.

Les demandes de chauffage sont prises en compte une fois toutes les 3 secondes (si plusieurs demandes sont arrivées dans un intervalle de 3 secondes, on prend uniquement en compte la dernière). Une demande de chauffage est traitée une seule fois. Si l'on veut chauffer en continu l'air, il faut donc envoyer régulièrement des demandes de chauffage. Une demande de chauffage est effectuée par l'envoi d'un message de type MessageTemperature sur le groupe multicast du programme.

La température extérieure évolue entre une température minimale (la nuit) et une température maximale (le jour) de manière linéaire, en augmentant d'abord la première demi-journée puis diminuant ensuite lors de la seconde. Une journée complète dure 5 minutes. Les températures minimales et maximales sont modifiées à la fin de chaque journée.

Le programme se lance avec les paramètres suivants :
$ java Air groupeMulticast portMulticast nomPiece [seedRandom]


Nested Class Summary
protected  class Air.AttentePaquet
          Thread qui attend les paquets sur la socket
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
protected  java.text.DecimalFormat format
          Format d'affichage des flottants
protected  java.util.Random generateur
          Générateur de nombre aléatoire servant à initiliser puis modifier la température extérieure
protected  java.net.InetAddress groupMulticast
          Adresse du groupe multicast de la pièce
protected  java.lang.String nomPiece
          Nom de la pièce
protected  int port
          Port du groupe multicast
protected  java.net.MulticastSocket socket
          Socket multicast
protected  float temperatureCourante
          Température courante de la pièce
protected  float temperatureExt
          Température extérieure de la maison
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
Air(java.lang.String adrMulti, int port, java.lang.String piece)
           
Air(java.lang.String adrMulti, int port, java.lang.String piece, int initRandom)
           
 
Method Summary
 void envoyerTemp()
          Fonction qui envoie sur le groupe multicast un message précisant la température courante.
protected  void initMulticast(java.lang.String nomMachine, int port)
          Initialise la socket multicast.
static void main(java.lang.String[] argv)
          Lance le programme Air.
 void run()
          Thread qui toutes les 3 secondes récupère la valeur de la dernière demande de chauffage et modifie le cas échéant la température courante en fonction de la puissance de chauffage.
 java.lang.String toString()
           
 void variations()
          Fonction qui calcule et gère les variations de la température courante en fonction de la température extérieure.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

groupMulticast

protected java.net.InetAddress groupMulticast
Adresse du groupe multicast de la pièce


port

protected int port
Port du groupe multicast


socket

protected java.net.MulticastSocket socket
Socket multicast


nomPiece

protected java.lang.String nomPiece
Nom de la pièce


temperatureCourante

protected volatile float temperatureCourante
Température courante de la pièce


temperatureExt

protected float temperatureExt
Température extérieure de la maison


generateur

protected java.util.Random generateur
Générateur de nombre aléatoire servant à initiliser puis modifier la température extérieure


format

protected java.text.DecimalFormat format
Format d'affichage des flottants

Constructor Detail

Air

public Air(java.lang.String adrMulti,
           int port,
           java.lang.String piece,
           int initRandom)

Air

public Air(java.lang.String adrMulti,
           int port,
           java.lang.String piece)
Method Detail

envoyerTemp

public void envoyerTemp()
Fonction qui envoie sur le groupe multicast un message précisant la température courante. Affiche sur la sortie standard la valeur de la température courante et extérieure. Affiche sur la sortie d'erreur un message en cas de problème.


variations

public void variations()
Fonction qui calcule et gère les variations de la température courante en fonction de la température extérieure. Affiche sur la sortie standard et envoie sur le groupe multicast la valeur de la température courante 1 fois par seconde.


run

public void run()
Thread qui toutes les 3 secondes récupère la valeur de la dernière demande de chauffage et modifie le cas échéant la température courante en fonction de la puissance de chauffage. En cas d'erreur, se termine.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

initMulticast

protected void initMulticast(java.lang.String nomMachine,
                             int port)
Initialise la socket multicast. En cas d'erreur, le programme se termine.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Thread

main

public static void main(java.lang.String[] argv)
Lance le programme Air. Les paramètres sont les suivants :
$ java Air groupeMulticast portMulticast nomPiece [seedRandom]