package monPack;

import java.util.ArrayList;

/**
 * Une armoire tridimensionnelle qui calcule son volume.
 * @author Christian Mascart
 */
public class Armoire implements Observable 
{
	private int largeur, hauteur, profondeur;
	private ArrayList<Observateur> mesObservateurs = new ArrayList<Observateur>();
	
	public Armoire(int pLargeur, int pHauteur, int pProf)
	{
		super();
		this.setLargeur (pLargeur);
		this.setHauteur (pHauteur);
		this.setProfondeur (pProf);
	}

	public int getLargeur()
	{
		return (largeur);
	}

	public void setLargeur(int pLarg)
	{
		if (pLarg > 0)
		{
			this.largeur = pLarg;
			updateObservateurs();
		}
	}

	public int getHauteur()
	{
		return (hauteur);
	}

	public void setHauteur(int pHaut)
	{
		if (pHaut > 0)
		{
			this.hauteur = pHaut;
			updateObservateurs();
		}
	}

	public int getProfondeur()
	{
		return (profondeur);
	}

	public void setProfondeur(int pProf)
	{
		if (pProf > 0)
		{
			this.profondeur = pProf;
			updateObservateurs();
		}
	}
	
	/**
	 * Cette méthode calcule le volume
	 * @return Le produit des trois dimensions.
	 */
	public int getVolume()
	{
		return(this.largeur * this.hauteur * this.profondeur);
	}

	@Override
	public void addObservateur(Observateur obs)
	{
		mesObservateurs.add (obs);
	}

	@Override
	public void updateObservateurs()
	{
		for (Observateur obs : mesObservateurs)
		{
			obs.metAjour();
		}
	}
}
