/* T01n18.java -- A Fraction class. A fraction has a numerator and a * denominator. This class has a pair of constructors: * * Fraction () -- Constructs the fraction 0/1 * Fraction (int, int) -- accepts initial numerator and denominator * * And several instance methods: * * "Getters" ( void getNumerator(int) and void getDenominator(int) ) * "Setters" ( void setNumerator(int) and void setDenominator(int) ) * double asDouble() -- return the fraction as a value of type double * String asString() -- convert the fraction to a "X / Y" format string * Fraction multiplyBy(int) -- mult. X/Y by Z to produce XZ/Y * Fraction multiplyBy(Fraction) -- mult X/Y by W/Z to get XW/YZ * * Note #1: The overloading of the multiplyBy name; this shows that we can * overload more than just the constructors. * * Note #2: This doesn't demonstrate the level of documentation we'll * expect from you! We'll have guidelines for you to follow when the time * comes. */ class Fraction { /* Instance Variables, a.k.a. Data Members */ private int numerator, // Top number of the fraction denominator; // Bottom number of the fraction /* Constructors */ public Fraction () { numerator = 0; denominator = 1; } public Fraction (int numerator, int denominator) { this.numerator = numerator; // "this" references the current object this.denominator = denominator; } /* Public Methods */ public int getNumerator () { return numerator; } public int getDenominator () { return denominator; } public void setNumerator (int newNumerator) { numerator = newNumerator; } public void setDenominator (int newDenominator) { denominator = newDenominator; } public double asDouble () { return (double)numerator / denominator; } public String asString () { return numerator + "/" + denominator; } public Fraction multiplyBy (int multiplier) { return new Fraction(numerator * multiplier,denominator); } public Fraction multiplyBy (Fraction multiplier) { Fraction result; int newNumerator, // the product of the existing numerators newDenominator; // the product of the existing denominators newNumerator = numerator * multiplier.getNumerator(); newDenominator = denominator * multiplier.getDenominator(); result = new Fraction(newNumerator,newDenominator); return result; } } // class Fraction public class T01n18 { public static void main (String [] args) { Fraction myFraction, // these fractions are hard to name... myOtherFraction, anotherFraction, yetAnotherFraction; myFraction = new Fraction (3,4); myOtherFraction = new Fraction (2,3); System.out.println(myFraction.asDouble()); anotherFraction = myOtherFraction.multiplyBy(4); System.out.println(anotherFraction.asString()); yetAnotherFraction = myOtherFraction.multiplyBy(myFraction); System.out.println(yetAnotherFraction.asString()); } }