Implement an immutable data type Rational for rational numbers that supports addition, subtraction, multiplication and division.
public class Rational
|
Rational(int numerator, int denominator)
|
Rational
|
plus(Rational b)
|
sum of this number and b
|
Rational
|
minus(Rational b)
|
difference of this number and b
|
Rational
|
times(Rational b)
|
product of this number and b
|
Rational
|
divides(Rational b)
|
quotient of this number and b
|
boolean
|
equals(Rational that)
|
is this number equal to that?
|
String
|
toString()
|
string representation
|
Notes
- You do not have to worry about testing for overflow, but use as instance variables two long values that represent the numerator and denominator to limit the possibility of overflow.
- Use Euclid's algorithm to ensure that the numerator and denominator never have any common factors.
- Include a test client that exercises all of your methods.