# TP java- ROUSSEAU Pierre-Henri ## partie 1: classe Mesure **classe Mesure** ```java package TP1_ITEA_2020_ROUSSEAU; import personne.Personne; import java.util.*; // importe tout le package java utile pour la suite //Cette classe implémente l'interface Comparateur <Mesure> //Il peut être considéré comme la règle pour comparer les objets Mesure. public class Mesure implements Comparable<Mesure> { private String nom; // je viens créer mes attributs (variables) private Double valeur; // ne puisse les changer par la suite private Long timestamp; // en private pour que personne public Mesure (String nom, double valeur,long timestamp) //constructeur avec trois parametres { //super(nom,valeur, timestamp) //pas obligatoire de le mettre car il est automatiquement créée this.nom=nom; // on affecte le nom initial this.setValeur(valeur); // on affecte la valeur initial this.timestamp=timestamp; // on affecte le timestamp initial } public Mesure (String nom,double valeur) //constructeur avec deux parametres { this.timestamp = System.currentTimeMillis(); this.nom=nom; // on affecte le nom initial this.setValeur(valeur); // on affecte la valeur initial } // mes atibuts sont en mode "Private", donc innaccessibles depuis une autre classe //les explications seront les même pour les variables, "nom", "timestamp" et valeur" public String getNom() // la méthode "get" me permet de venir afficher ma variable dans une autre classe { return nom; } public void setNom(String nom) //la méthode "set" me permet de modifier ma variable dans une autre classe { this.nom = nom; } public long getTimestamp() { return timestamp; } public void setTimestamp(long timestamp) { this.timestamp = timestamp; } public double getValeur() { return valeur; } public void setValeur(double valeur) { this.valeur = valeur; } // fin de get et set // affiche les variables "nom", "valeur" et "timestamp" // public String toString() { // return "capteur [" + nom + ", " + valeur + ", " + timestamp + "]"; // } // affiche les valeurs de "valeur" et "timestamp" @Override public String toString() { return + valeur + "[" + timestamp + "]"; } // affichage de nos variables public boolean equals(Object o) { // 1. verifier le type if (o instanceof Mesure) { // Cast vers le type pour pouvoir acceder aux champs de o Mesure other = (Mesure) o; // Comparaisons : return this.timestamp.compareTo(other.timestamp)==0 && this.nom.equals(other.nom) && this.valeur.compareTo(other.valeur)==0; } return false; } @Override public int hashCode() { return (int) (nom.hashCode() + valeur + timestamp); } // on utilise la methode compareTo pour chacune de nos variables : public int compareTo(Mesure autreMesure) { int compareTimestamp = this.timestamp.compareTo (autreMesure.timestamp); int compareNom = this.nom.compareTo (autreMesure.nom); int compareValeur = this.valeur.compareTo (autreMesure.valeur); //on vient comparer dans l'ordres les requetes. //on ne peut passer à la suivante, si la précédente n'est pas respectée. if (compareTimestamp != 0) // en premier on compare les variables "timestamp" { return compareTimestamp; } else { if (compareNom != 0) // en second on compare les variables "noms { return compareNom; } else { if (compareValeur != 0) // en dernier on compare les variables "valeurs" { return compareValeur; } else { return 0; } } } } } ``` ** classe Application** ```java package TP1_ITEA_2020_ROUSSEAU; public class Application { public static void main(String[] args) { Mesure m1 = new MesurePositive("Capteur1", +20, 1603749201055L); Mesure m2 = new MesurePositive("Capteur1", 2, 1603749201055L); Mesure m3 = new MesurePositive("Capteur1", 4); Mesure m4 = m1; // Mesure mp = new MesurePositive(-20); System.out.println(m1); // System.out.println(m2); // System.out.println(m3); // Mesure m1 = new Mesure("Capteur1", 2, 1603749201055L); // Mesure m2 = new Mesure("Capteur1", 2, 1603749201055L); // Mesure m3 = new Mesure("Capteur1", 2); // Mesure m4 = m1; // Object o = new Object(); // // System.out.println(m1 == m2); // FALSE // System.out.println(m1 == m3); // FALSE // System.out.println(m1 == m4); // TRUE // System.out.println(m1 == o); // FALSE // // System.out.println(m1.equals(m2)); // TRUE // System.out.println(m1.equals(m3)); // FALSE // System.out.println(m1.equals(m4)); // TRUE // System.out.println(m1.equals(o)); // FALSE } } ``` ## partie 2: MesurePositive/Negative **Classe MesurePositive ** ```java public class MesurePositive extends Mesure { public MesurePositive(String nom, double valeur, long timestamp) { super(nom, valeur,timestamp); } public MesurePositive(String nom, double valeur) { super(nom,valeur); } public void setValeur(double valeur) { if (valeur < 0) { throw new IllegalArgumentException ("La mesure doit être positive"); } super.setValeur(valeur); } @Override public String toString() { return "+" +super.toString(); } } ``` Classe MesureNegative ```java public class MesureNegative extends Mesure { public MesureNegative(String nom, double valeur, long timestamp) { super(nom, valeur,timestamp); } public MesureNegative(String nom, double valeur) { super(nom,valeur); } public void setValeur(double valeur) { if (valeur > 0) { throw new IllegalArgumentException ("La mesure doit être negative"); } super.setValeur(valeur); } @Override public String toString() { return "-" +super.toString(); } } ``` ## partie 3: StockageMesureTableau #### h4: marche pas encore ```java= import TP1_ITEA_2020_ROUSSEAU.Mesure; public class StockageMesureTableau implements StockageMesure{ private Mesure[] mesures; //Ici on est forcé de fournir la méthode size car on a public int size(){ //TODO= test pour que size = 0 return 0 return mesures.length; } @Override public void addMesure(Mesure m) { Mesure [] nouvelleMesures = new Mesure [size()+1]; for (int i=0; i<size(); i++) { nouvelleMesures [i]=mesures[i]; } mesures = new mesure[size()+1]; nouvelleMesures[size()+1]= m; for (int k=0; k<=size(); k++) { mesures[k]=nouvelleMesures [k]; } } @Override public void removeMesure(String nomCapteur, long timestamp) { // TODO Auto-generated method stub for (int i=0; i<size(); i++) { if (mesures[i] ) nouvelleMesures [i]=mesures[i]; } mesures = new mesure[size()+1]; nouvelleMesures[size()+1]= m; for (int k=0; k<=size(); k++) { mesures[k]=nouvelleMesures [k]; } } @Override public Mesure[] getCopy() { // TODO Auto-generated method stub return null; } @Override public Mesure[] getSortedCopy() { // TODO Auto-generated method stub return null; } @Override public void addAll(Mesure[] mesures) { // TODO Auto-generated method stub } @Override public double somme() { // TODO Auto-generated method stub int somme=0; for (int j=0; j<size();j++) { somme=somme + nouvelleMesure[j]; } return somme; } @Override public double moyenne() // TODO Auto-generated method stub { return this.somme()/ (float)size(); } @Override public double variance() { // TODO Auto-generated method stub float var=0; for (int k=0; k <size(); k++) { var=var+Math.pow(mesure(k)- moyenne(),2); } return (var /(float) size()); //return 0; } @Override public double ecartType() { // TODO Auto-generated method stub float ecarT= Math.sqrt(variance ()); return ecarT; } /** idem pour les autres méthodes **/ } ```