You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.6 KiB

package Model;
import java.util.*;
public class CapteurZone extends Capteur implements Observer{
//Liste référençant les capteurs observés
private List<Capteur> capteurs = new ArrayList<>();
//Liste référençant le poids de chaque capteur observé
private List<Double> poids = new ArrayList<>();
private double poidTotal = 0.0;
//Constructeur
public CapteurZone(int id, String name) {
super(id, name);
}
//Permet d'ajouter un capteur à la zone
public void add(Capteur captor, Double poids){
capteurs.add(captor);
this.poids.add(poids);
poidTotal = poidTotal + poids;
}
//Retire un capteur de la zone
public void remove(int index){
capteurs.remove(index);
poidTotal = poidTotal - poids.get(index);
poids.remove(index);
}
//Recalcule la température du capteur, étant la moyenne des température des capteurs, en prenant en compte leur poids
//Ce recalcul est appelé dès qu'un des capteurs change de température, car il notifie ses observateurs
// en sachant que le capteur de zone est à la fois un capteur et un observateur
@Override
public void update() {
Double sommeTemp = 0.0; //Somme des températures des capteurs
for (int i = 0; i < capteurs.size(); i++) { //On parcourt chacun des capteurs
sommeTemp = sommeTemp + (capteurs.get(i).getTemperature() * poids.get(i)); //On calcule la somme des températures
}
//On change la température du capteur en divisant le résultat par la somme des poids pour obtenir la moyenne
setTemperature(sommeTemp/poidTotal);
}
}