Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

- You need to implement Fraction class which is within package PJ1 See PJ1/Fract

ID: 3568729 • Letter: #

Question

- You need to implement Fraction class which is within package PJ1
See PJ1/Fraction.java and PJ1/FractionInterface.java for specifications

- Use PJ1_Test.java to test correctness of your proggram

- Compile programs (you are in directory containing Readme file):
  
javac PJ1/*.java
javac PJ1_Test.java

- Run programs (you are in directory containing Readme file):

// Run tests in Fraction class
java PJ1.Fraction  

// Run main test program
java PJ1_Test      


- Note: For some systems, you may require

javac -cp . PJ1_Test.java
java -cp . PJ1.Fraction  
java -cp . PJ1_Test


- Bonus (25%): Implement GUI test program
  
Before implemeting GUI test program,
your program must work for all test cases using PJ1_Test.

Explanation / Answer

public class Fraction implements FractionInterface, Comparable<Fraction>
{
private int num; // Numerator
private int den; // Denominator

public Fraction()
{
// set fraction to default = 0/1
setFraction(0, 1);
} // end default constructor

public Fraction(int numerator, int denominator)
{
// implement this method!
setFraction(numerator, denominator);
} // end constructor

public void setFraction(int numerator, int denominator)
{
// return FractionException if initialDenominator is 0
// implement this method!
if (denominator == 0)
throw new FractionException("My Exception Occurred");
if (denominator < 0){
numerator = num * -1;
denominator = denominator * -1;
}
num = numerator;
den = denominator;
this.simplify();
} // end setFraction

public double toDouble()
{
// return double floating point value
// implement this method!
return (double)num/den;
} // end toDouble

private int getDenominator(){
return this.den;
}

public FractionInterface add(FractionInterface secondFraction)
{

// a/b + c/d is (ad + cb)/(bd)
// implement this method!
Fraction second = (Fraction)secondFraction;
Fraction addition = new Fraction (((this.num * second.den) + (second.num * this.den)), (this.den * second.den));
addition.simplify();

return addition;
} // end add