package lab4;

/**
 * classe Tableau du lab 4 exercise 4
 * @author martin
 *Créez une classe Tableau qui a comme attribut un tableau d’entiers. Le constructeur par défaut
 *prend la taille en paramètre et créer le tableau de cette taille et initialise tous les entiers à 0.

*Créez ensuite une méthode setElement qui modifie le tableau en affectant un entier à une position, cette
*méthode prendra donc la position et l’élément à affecter dans le tableau.
* Créez une méthode qui affiche les valeurs contenues dans le tableau.
* Créez une méthode sort qui trie le tableau. Utilisez un tri déjà définie dans le JDK.
* Créez une méthode size qui retourne la taille du tableau
* Quelle méthode (s) pourrait être créée (s) pour compléter ce nouvel objet ? Créez la (les).
* Dans le main, créez un objet Tableau, remplissez, l'affichez-le, triez-le et réaffichez-le.
* au moin un getAt()
 */
public class Tableau {
	/*properties*/
	private int [] _tableau;

	/*constructor*/
	private Tableau(int [] tab){
		_tableau = tab;
	}

	/*static factory*/
	public static Tableau fromSizeInitAtZero(int size){
		int[] tmp = new int[size];
		for (int i=0;i<size;i++)
			tmp[i] = 0;
		return new Tableau(tmp);
	}

	/*getter*/
	public int size(){
		return _tableau.length;
	}

	public int getAt(int pos){
		if (pos>=_tableau.length)
			throw new IndexOutOfBoundsException();
		return _tableau[pos];
	}


	/*setter*/
	public void setElement(int pos, int elem){
		if (pos>=_tableau.length)
			throw new IndexOutOfBoundsException();
		_tableau[pos] = elem;
	}

	/*mutator*/
	public void sort(){
		java.util.Arrays.sort(_tableau);
	}

	/*method*/
	public void affiche(){
		for (int i=0;i<_tableau.length;i++)
			System.out.print(_tableau[i]+" ");
		System.out.println();
	}

	/*main*/
	public static void main(String [] args){
		Tableau tmp = Tableau.fromSizeInitAtZero(10);
		tmp.setElement(4,1);
		tmp.sort();
		tmp.affiche();
	}
}
