package TD7;
/** Classe Chemise 
    @author 	M. Frébourg
    @version 	2013 
*/
public class Chemise extends Vetement{
	
	/** Donne la longueur d'une manche */
	private int longueurManche;
	/** Donne la taille du cou */
	private int couTaille;
	
	
	/** constructeur chemise
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
		@param 			a le composant
		@param 			longueurManche longueur de manche
		@param 			couTaille taille du cou
		@param 			prix le prix
		@see 			Composant
		
	*/
	public Chemise(String libelle, String couleur, String marque, String collection, Composant a,
					int longueurManche, int couTaille, double prix){
		super( libelle,  couleur,  marque,  collection,  a, prix);
		this.longueurManche=longueurManche;
		this.couTaille=couTaille;
	}
	
	/** création de chaine de caractere de l'objet chemise
			@return 		la chaine de caractere de la Chemise
	*/
	public String toString(){
		return super.toString()+ this.getLongueurManche()+ " "+this.getCouTaille() ;
	}

    /**
     * @return the longueurManche
     */
    public int getLongueurManche() {
        return longueurManche;
    }

    /**
     * @param longueurManche the longueurManche to set
     */
    public void setLongueurManche(int longueurManche) {
        this.longueurManche = longueurManche;
    }

    /**
     * @return the couTaille
     */
    public int getCouTaille() {
        return couTaille;
    }

    /**
     * @param couTaille the couTaille to set
     */
    public void setCouTaille(int couTaille) {
        this.couTaille = couTaille;
    }
}
package TD7;
/** Classe principale 
    @author 	M. Frébourg
    @version 	2013
    *
    execution des différentes classes
*/
public class ClassePrincipale{
	public static void main(String args[]){
		/*
		//question 2
		Composant monComposant=new Composant("coton", 30, "Chine", 40);
		// non demande mais util pour tester ( appel de la fonction toString() de la classe)
		System.out.println(monComposant);
		
		//question 4
		Vetement wiwi=new Vetement("pantalon", "rouge", "Wiwi", "Nido");
		// non demande mais util pour tester ( appel de la fonction toString() de la classe)
		System.out.println(wiwi);
		
		//question 6 
		//estCompose est mis � public donc:
		wiwi.setEstCompose(monComposant);
		System.out.println(wiwi);
		//sinon faire un accesseur ou creer un autre Vetment avec le composant, appel au nouveau constructeur
		Vetement wiwi2=new Vetement("pantalon", "rouge", "Wiwi", "Nido",monComposant);
		System.out.println(wiwi2);
		
		//question 8  et 9 avec un nouveau constructeur possedant le prix, respecter l'ordre des arguments
		// on choisi de le faire en coton.
		Pantalon p=new Pantalon("Arizona", "bleu", "3S", "Jee",monComposant,38,50,80);
		System.out.println(p);
		
		//question 10
		Chemise c=new Chemise("Arizona", "vert", "3S", "Jee",monComposant,38,20,80);
		System.out.println(c);
                * */
                
            //question 4
                Composant monComposant=new Composant("coton", 30, "Chine", 40);
                Vetement wiwi2=new Vetement("pantalon", "rouge", "Wiwi", "Nido",monComposant);
		System.out.println(wiwi2);
                
                //question 5*************
                System.out.println(Vetement.getNbVetement());
                //*************
                Chemise c=new Chemise("Arizona", "vert", "3S", "Jee",monComposant,38,20,80);
		System.out.println(c);
                //question 5*************
                System.out.println(Vetement.getNbVetement());
                //*************
                
                //question 7
                System.out.println(c.calculPrix());
               
                
	}



}
package TD7;
/** Classe Composant 
    @author 	M. Frébourg
    @version 	2013 
*/
public class Composant{
    /** Donne le libelle */
	private String libelle;
        /** Donne le prix */
	private double prix;
        /** Donne la provenance */
	private String provenance;
        /** Donne la température de lavage */
	private int lavageMachine;
	
	/** constructeur Composant
		@param 			lib le libelle
		@param 			prix le prix
		@param 			pro le produit
		@param 			collection
		@param 			lavM la temperature de lavage
		
		
		
	*/
	public Composant(String lib, double prix, String pro, int lavM){
		this.libelle=lib;
		this.prix=prix;
		this.provenance=pro;
		this.lavageMachine=lavM;
	}
	/** création de chaine de caractere de l'objet Composant
			@return 		la chaine de caractere du Composant
	*/
	public String toString(){
		return this.getLibelle()+" "+this.getPrix()+" "+this.getProvenance()+" "+this.getLavageMachine();
	}

    /**
     * @return the libelle
     */
    public String getLibelle() {
        return libelle;
    }

    /**
     * @param libelle the libelle to set
     */
    public void setLibelle(String libelle) {
        this.libelle = libelle;
    }

    /**
     * @return the prix
     */
    public double getPrix() {
        return prix;
    }

    /**
     * @param prix the prix to set
     */
    public void setPrix(double prix) {
        this.prix = prix;
    }

    /**
     * @return the provenance
     */
    public String getProvenance() {
        return provenance;
    }

    /**
     * @param provenance the provenance to set
     */
    public void setProvenance(String provenance) {
        this.provenance = provenance;
    }

    /**
     * @return the lavageMachine
     */
    public int getLavageMachine() {
        return lavageMachine;
    }

    /**
     * @param lavageMachine the lavageMachine to set
     */
    public void setLavageMachine(int lavageMachine) {
        this.lavageMachine = lavageMachine;
    }
	

}//class
package TD7;
/** Classe Pantalon 
    @author 	M. Frébourg
    @version 	2013 
*/
public class Pantalon extends Vetement{
	/** Donne la longueur de la jambe */
	private int longueurJambe;
        /** Donne le tour de taille */
	private int tourTaille;
	
	/** constructeur Pantalon
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
		@param 			a le composant
		@param 			longueurJambe longueur de la jambe
		@param 			tourTaille tour de taille
		@see 			Composant
		
	*/
	public Pantalon(String libelle, String couleur, String marque, String collection,
					int longueurJambe, int tourTaille, Composant a){
		super( libelle,  couleur,  marque,  collection,  a);
		this.longueurJambe=longueurJambe;
		this.tourTaille=tourTaille;
	}
	
	/** constructeur Pantalon avec le prix
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
		@param 			a le composant
		@param 			longueurJambe longueur de la jambe
		@param 			tourTaille tour de taille
                @param 			prix le prix
		@see 			Composant
		
	*/
	public Pantalon(String libelle, String couleur, String marque, String collection, Composant a,
					int longueurJambe, int tourTaille, double prix){
		super( libelle,  couleur,  marque,  collection,  a, prix);
		this.longueurJambe=longueurJambe;
		this.tourTaille=tourTaille;
	}
	
	/** création de chaine de caractere de l'objet Pantalon
			@return 		la chaine de caractere du Pantalon
	*/
    @Override
	public String toString(){
		return super.toString()+ this.getLongueurJambe()+ " "+this.getTourTaille() ;
	}

    /**
     * @return the longueurJambe
     */
    public int getLongueurJambe() {
        return longueurJambe;
    }

    /**
     * @param longueurJambe the longueurJambe to set
     */
    public void setLongueurJambe(int longueurJambe) {
        this.longueurJambe = longueurJambe;
    }

    /**
     * @return the tourTaille
     */
    public int getTourTaille() {
        return tourTaille;
    }

    /**
     * @param tourTaille the tourTaille to set
     */
    public void setTourTaille(int tourTaille) {
        this.tourTaille = tourTaille;
    }
}
package TD7;
/** Classe Vetement 
    @author 	M. Frébourg
    @version 	2013 
*/

public class Vetement{
    /** Donne le libelle */
	private String libelle;
        /** Donne la couleur */
	private String couleur;
        /** Donne le prix  */
	private double prix=-1;
        /** Donne la marque */
	private String marque;
        /** Donne la collection */
	private String collection;

	//question 5 ******************
        /** Réalise le lien avec le composant */
	private Composant estCompose=null;
        
         /** Donne le pourcentage du composant dans le vetement */
        private double pourcentageComposant;
        
         /** Donne le nombre de vetement */
        private static int nbVetement=0;
        
         /** Donne le taux de marge pour le composant */
        private double taux=1.2;
	
	/** constructeur Pantalon
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
		
		
	*/
	public Vetement(String libelle, String couleur, String marque, String collection){
		this.libelle=libelle;
		this.couleur=couleur;
		this.marque=marque;
		this.collection=collection;
		nbVetement++;
		
	}
	/** constructeur Pantalon avec le composant
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
                @param 			a le composant
		
		
	*/
	public Vetement(String libelle, String couleur, String marque, String collection, Composant a){
		this.libelle=libelle;
		this.couleur=couleur;
		this.marque=marque;
		this.collection=collection;
		nbVetement++;
		//q5
		this.estCompose=a;
	}
	
	/** constructeur Pantalon avec le composant et le prix
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
                @param 			a le composant
		@param 			prix le prix
		
	*/
	public Vetement(String libelle, String couleur, String marque, String collection, Composant a, double prix){
		this.libelle=libelle;
		this.couleur=couleur;
		this.marque=marque;
		this.collection=collection;
		this.prix=prix;
		this.estCompose=a;
                nbVetement++;
	}
        /** constructeur Pantalon avec le composant et le prix et le pourcentage
		@param 			libelle le libelle
		@param 			couleur la couleur
		@param 			marque la marque
		@param 			collection la collection
                @param 			a le composant
		@param 			prix le prix
                @param 			pourcentageComposant le pourcentage du composant dans le vetement
		
	*/
	public Vetement(String libelle, String couleur, String marque, String collection, Composant a, double prix,double pourcentageComposant){
		this.libelle=libelle;
		this.couleur=couleur;
		this.marque=marque;
		this.collection=collection;
		this.prix=prix;
		this.estCompose=a;
                this.pourcentageComposant=pourcentageComposant;
                nbVetement++;
	}
	
	/** création de chaine de caractere de l'objet Vetement
			@return 		la chaine de caractere du Vetement
	*/
    @Override
	public String toString(){
		return " vetement numero"+getNbVetement()+" "+this.getLibelle()+" "+this.getCouleur()+" "+this.getMarque()+" "+this.getCollection() ;
	}

    /**
     * @return the nbVetement
     */
    public static int getNbVetement() {
        return nbVetement;
    }
    /**
     * affiche nbVetement
     */
    public static void afficheNbVetement() {
        System.out.println(getNbVetement());
    }

    /**
     * @param aNbVetement the nbVetement to set
     */
    public static void setNbVetement(int aNbVetement) {
        nbVetement = aNbVetement;
    }

    /**
     * @return the libelle
     */
    public String getLibelle() {
        return libelle;
    }

    /**
     * @param libelle the libelle to set
     */
    public void setLibelle(String libelle) {
        this.libelle = libelle;
    }

    /**
     * @return the couleur
     */
    public String getCouleur() {
        return couleur;
    }

    /**
     * @param couleur the couleur to set
     */
    public void setCouleur(String couleur) {
        this.couleur = couleur;
    }

    /**
     * @return the prix
     */
    public double getPrix() {
        return prix;
    }

    /**
     * @param prix the prix to set
     */
    public void setPrix(double prix) {
        this.prix = prix;
    }

    /**
     * @return the marque
     */
    public String getMarque() {
        return marque;
    }

    /**
     * @param marque the marque to set
     */
    public void setMarque(String marque) {
        this.marque = marque;
    }

    /**
     * @return the collection
     */
    public String getCollection() {
        return collection;
    }

    /**
     * @param collection the collection to set
     */
    public void setCollection(String collection) {
        this.collection = collection;
    }

    /**
     * @return the estCompose
     */
    public Composant getEstCompose() {
        return estCompose;
    }

    /**
     * @param estCompose the estCompose to set
     */
    public void setEstCompose(Composant estCompose) {
        this.estCompose = estCompose;
    }
    /**
     * calcul du prix public d'un vetement
     * 
     */
    public double calculPrix() {
       return  this.getEstCompose().getPrix()*getTaux()*this.getPourcentageComposant();
    }

    /**
     * @return the pourcentageComposant
     */
    public double getPourcentageComposant() {
        return pourcentageComposant;
    }

    /**
     * @param pourcentageComposant the pourcentageComposant to set
     */
    public void setPourcentageComposant(double pourcentageComposant) {
        this.pourcentageComposant = pourcentageComposant;
    }

    /**
     * @return the taux
     */
    public double getTaux() {
        return taux;
    }

    /**
     * @param taux the taux to set
     */
    public void setTaux(double taux) {
        this.taux = taux;
    }
}