public class Rat {

    public Rat add(Rat y) {
        return new Rat(numer() * y.denom()
                       + y.numer() * denom(),
                       denom() * y.denom());
    }

    public boolean equals(Object y) {
        return (y instanceof Rat)
            && (numer() * ((Rat)y).denom()
                == ((Rat)y).numer() * denom());
    }

    public String toString() {
        return numer() + "/" + denom();
    }

    public static void main(String argv[]) {
        System.out.println("1/2 + 3/4 = "
                  + new Rat(1,2).add(new Rat(3,4))
                      );
    }

    // ------ code above is client of that below --

    protected int n, d;

    public Rat(int given_n, int given_d) {
        n = given_n;
        d = given_d;
    }
    public int numer() { return n; }
    public int denom() { return d; }
    
}
