public class Fraction { // instance variables/fields/data members private int numerator; private int denominator; // Constructors public Fraction(int num) { numerator = num; denominator = 1; } // Fraction() public Fraction(int num, int denom) { numerator = num; denominator = denom; this.normalize(); } // Fraction() // Accessors // Modifiers // Operations public void multiply(Fraction f) { this.numerator *= f.numerator; this.denominator *= f.denominator; this.normalize(); } // multiply() public static Fraction multiply(Fraction a, Fraction b) { Fraction result; int n = a.numerator * b.numerator; int d = a.denominator * b.denominator; result = new Fraction(n, d); return result; } // multiply() // useful stuff private void normalize() { int g = gcd(numerator, denominator); numerator /= g; denominator /= g; } // normalize() private int gcd(int a, int b) { // Euclid's subtraction algorithm, circa 300BC while (a != b) { if (a > b) a = a - b; else b = b - a; } return a; } // gcd() /* private int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a%b); } // gcd() */ // Print method public String toString() { return numerator+"/"+denominator; } // toString() } // class Fraction