---
# System prepended metadata

title: TP java- ROUSSEAU Pierre-Henri

---

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

	}
	
	





```