/**
 * 
 * @version $Id: Ratio.java,v 3.0 1998/01/13 13:54:31 bailey Exp $
 * @author duane a. bailey
 */
//+implementation
public class Ratio
{ // a object for storing a fraction
    protected int numerator;   // numerator of ratio
    protected int denominator; // denominator of ratio
    /**
     * 
     * - Precondition:
-  bottom != 0
     * 
- Postcondition:
-  constructs a ratio equivalent to top/bottom
     * 
* 
     * @param top 
     * @param bottom 
     */
    public Ratio(int top, int bottom)
    // pre: bottom != 0
    // post: constructs a ratio equivalent to top/bottom
    {
        numerator = top;
	denominator = bottom;
    }
    public int getNumerator()
    // post: return the numerator of the fraction
    {
	return numerator;
    }
    public int getDenominator()
    // post: return the denominator of the fration
    {
	return denominator;
    }
    /**
     *
     * - Postcondition:
-  returns the real value equivalent to ratio
     * 
* 
     * @return 
     */
    public double value()
    // post: returns the real value equivalent to ratio
    {
        return (double)numerator/(double)denominator;
    }
    public Ratio add(Ratio other)
    // pre: other is non-null
    // post: return new fraction --- the sum of this and other
    {
	return new Ratio(this.numerator*other.denominator+
			 this.denominator*other.numerator,
			 this.denominator*other.denominator);
    }
    //-implementation
    //+main
    public static void main(String[] args)
    {
	Ratio r = new Ratio(1,1);      // r == 1.0
	r = new Ratio(1,2);	       // r == 0.5
	r.add(new Ratio(1,3));	       // r still 0.5
	r = r.add(new Ratio(1,4));     // r == 0.75
	System.out.println(r.value()); // 0.75 printed
    }
    //-main
    //+implementation
}
//-implementation
/*
//+output
0.75
//-output
*/