// Solution to CIS3023 Interfaces 1 // Problem #1, and 5 public class RationalNumber { private int numerator, denominator; public RationalNumber() { this.numerator = 2; this.denominator = 1; } public void setDenominator(int d) { this.denominator = d; } public void setNumerator(int d) { this.numerator = d; } public int getN() { return numerator; } public int getD() { return denominator; } public RationalNumber(int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } public RationalNumber addition(RationalNumber r2) { RationalNumber r = new RationalNumber(); r.setDenominator(getD() * r.getD()); r.setNumerator(getN() * r.getD() + r.getN() * getD()); return r; } public RationalNumber subtraction(RationalNumber r2) { RationalNumber r = new RationalNumber(); r.setDenominator(getD() * r.getD()); r.setNumerator(getN() * r.getD() - r.getN() * getD()); return r; } public RationalNumber multiplication(RationalNumber r2) { RationalNumber r = new RationalNumber(); r.setDenominator(getD() * r.getD()); r.setNumerator(getN() * r.getN()); return r; } // compareTo method public int compareTo(Object obj) { RationalNumber rn = null; if (obj instanceof RationalNumber) rn = (RationalNumber) obj; else { // generate exception } // equalize the denominators int n1 = getN() * rn.getD(); int n2 = rn.getN() * getD(); if (n1 > n2) return 1; else if (n1 == n2) return 0; else return -1; } }