package pack0203;

public class Fraction
{
	private int numerateur = 1, denominateur = 1;
	
	public Fraction()
	{
		this.numerateur = 1;
		this.denominateur = 2;
	}
	
	public Fraction(int pVal)
	{
		this.denominateur = 10;
		setNumerateur(pVal);
	}
	
	public Fraction(int pNum, int pDenom)
	{
		setNumerateur(pNum);
		setDenominateur(pDenom);
	}
	
	// Setters
	public void setNumerateur (int pVal)
	{
		this.numerateur = Math.max(pVal, 0);
		reduire();
	}
	
	public void setDenominateur (int pVal)
	{
		this.denominateur = Math.max(pVal, 1);
		reduire();
	}
	
	//getters
	
	public int getNumerateur()
	{
		return(this.numerateur);
	}
	
	public int getDenominateur()
	{
		return(this.denominateur);
	}
	
	// Autres méthodes
	
	public void additionner(int pNum, int pDenom)
	{
		// Nouveaux numérateurs
		this.numerateur *= pDenom;
		int numera2 = pNum * this.denominateur;
		
		// Nouveau dénominateur
		this.denominateur *= pDenom;
		
		// Addition
		this.numerateur += numera2;
		reduire();
	}
	
	public void multiplier(int pNum, int pDenom)
	{
		this.numerateur *= pNum;
		this.denominateur *= pDenom;
		reduire();
	}
	
	public String toString()
	{
		return("Fraction : " + this.numerateur + " / " + this.denominateur);
	}
	
	private void reduire()
	{
		int divi = Math.min(this.numerateur, this.denominateur);
		System.out.print("[");
		while ((this.numerateur % divi > 0 || this.denominateur % divi > 0) && divi > 0)
		{
			divi--;
			System.out.print(".");
		}
		System.out.println("]");
		
		this.numerateur /= divi;
		this.denominateur /= divi;
	}
}
