To test your Fraction class, you should, at a minimum, call the methods you crea
ID: 3831292 • Letter: T
Question
To test your Fraction class, you should, at a minimum, call the methods you created with the test cases you manually worked on in Step 1 of the lab. There are several approaches you can take:
1. Write the "usual" interactive driver, and manually enter the test cases.
2. Write a non-interactive driver, and test using just the public interface. So, in your driver, you might create two Fraction objects, add them (using the Fraction class's add() method), create a Fraction with the expected correct result (from your paper calculations in step 1 of the lab), and then check to make sure the Fraction returned from the add() method is equal() to the expected Fraction.
3. A third approach would be to write some additional methods in your Fraction class whose purpose is just to test the code. As these methods are internal to your Fraction class, they have access to the private fields. So, with this approach, you could write an addFractionTest() method that took six integers -- a numerator and denominator for one fraction, a numerator and denominator for a second fraction, and a numerator and denominator for the expected result. In your test method you'd create two fractions, add them using the add() method (the method you're testing), and then check the numerator and denominator of the resulting fraction.
Rather than repeating code, you are encouraged to write a testing method for each of the methods you are testing, and then call each of these methods with the test cases. For example, you could write the following method:
This method would take two Fraction objects as input, add, them, and then check to make sure the result (another Fraction object) was correct.
How would I implelement that code:
to this one?:
fraction class:
public class Fraction
{
/**
* local variables
*/
private int numerator;
private int denominator;
private int y;
/**
* Fraction Constructor method
*/
public Fraction()
{
numerator = 0;
denominator = 1;
}
/**
* Copy Constructor
*/
public Fraction(Fraction y)
{
numerator = 1;
denominator = 1;
}
/**
* Overloaded Constructor
*/
public Fraction (int numerator, int denominator)
{
this.numerator = numerator;
this.denominator = denominator;
}
/**
* simply method that calculates the intial numerator and denominator
*/
private Fraction simplify(int n, int d)
{
int smallest = 0;
int newNum = 0;
int newDem= 0;
if(n < d)
{
smallest = n;
if(d % n == 0)
{
return new Fraction(1, d/n);
}
}
if(d < n)
{
smallest = d;
if(n % d == 0)
{
return new Fraction(n/d, 1);
}
}
if(d == n)
{
return new Fraction(1,1);
}
for(int i = smallest - 1; i > 0; i--)
{
if(smallest % i == 0)
{
newNum = n/1;
newDem = d/i;
break;
}
}
if(newNum == 0)
{
return new Fraction(n,d);
}
else
{
return new Fraction(newNum, newDem);
}
}
/**
* addition method for fraction class
*/
public Fraction add(Fraction a)
{
int newNumerator = 0;
int newDenominator = 0;
if(a.denominator == this. denominator)
{
newNumerator = a.numerator + this.numerator;
return simplify(newNumerator, a.denominator);
}
else
{
newNumerator = (a.numerator * this.denominator) + (this.numerator * a.denominator);
newDenominator = a.denominator * this.denominator;
return simplify(newNumerator, newDenominator);
}
}
/**
* subtraction method for fraction class
*/
public Fraction subtract(Fraction a)
{
int newNumerator = ((numerator*a.denominator) - (a.numerator*denominator));
int newDenominator = denominator*a.denominator;
Fraction x = new Fraction (newNumerator, newDenominator);
return simplify(newNumerator, newDenominator);
}
/**
* multiply method for fraction class
*/
public Fraction multiply(Fraction a)
{
int newNumerator = this.numerator*a.numerator;
int newDenominator = this.denominator*a.denominator;
Fraction x = new Fraction (newNumerator, newDenominator);
return simplify(newNumerator, newDenominator);
}
/**
* division method for fraction class
*/
public Fraction divide(Fraction a)
{
int newNumerator = numerator*a.denominator;
int newDenominator = denominator*a.numerator;
Fraction x = new Fraction (newNumerator, newDenominator);
return simplify(newNumerator, newDenominator);
}
/**
* compareTo method for fraction class that compares old num and den to new num and den.
*/
public int compareTo(Fraction a)
{
int result = 0;
double frac1 = this.numerator/this.denominator;
double frac2 = a.numerator/a.denominator;
if(frac1 < frac2)
{
result = 1;
}
else if(frac1 > frac2)
{
result = -1;
}
else
{
return 0;
}
return result;
}
/**
* toString method to display numerator and denominator after calculations
*/
public String toString()
{
return this.numerator + "/" + this.denominator;
}
}
driver:
import java.util.*;
import java.io.*;
public class Driver
{
public static void main(String[] args)
{
// local variables
int num;
int dem;
int num2;
int dem2;
// scanner object
Scanner keyboard = new Scanner(System.in);
// stores first num
System.out.println("Enter the first numerator: ");
num = keyboard.nextInt();
// stores first den
System.out.println("Enter the first denominator: ");
dem = keyboard.nextInt();
// stores second num
System.out.println("Enter the second numerator: ");
num2 = keyboard.nextInt();
// stores second dem
System.out.println("Enter the second denominator: ");
dem2 = keyboard.nextInt();
//created fraction object to store all data
Fraction a = new Fraction(num, dem);
Fraction b = new Fraction(num2, dem2);
// using add, subtract, multiply, and divide methods from fraction class to calcuate answers.
System.out.println("Addition: " + a.add(b));
System.out.println("Subtraction: " + a.subtract(b));
System.out.println("Multiplication: " + a.multiply(b));
System.out.println("Division: " + a.divide(b));
System.out.println("CompareTo: " + a.compareTo(b));
}
}//end of main
Explanation / Answer
//u need to add below method to class
public static void addFractionTest(Fraction fr1, Fraction fr2, Fraction expectedSumFr)
{
int newNumerator = 0;
int newDenominator = 0;
if(fr1.denominator == fr2.denominator)
{
newNumerator = fr1.numerator+fr2.numerator;
System.out.printf("%d ",newNumerator);
System.out.printf("%d ",fr1.denominator);
expectedSumFr = simplify(newNumerator, fr1.denominator);
}
else
{
newNumerator = fr1.numerator * fr2.numerator+ fr2.numerator*fr1.numerator;
System.out.printf("%d ",newNumerator);
newDenominator = fr1.denominator * fr2.denominator;
System.out.printf("%d ",fr1.denominator);
expectedSumFr = simplify(newNumerator, newDenominator);
}
System.out.printf("%d ",expectedSumFr.numerator);
System.out.printf("%d ",expectedSumFr.denominator);
return ;
}
then call this function in main and print fraction using to_string fnction
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.