# 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 **/
}
```