1. Write a class called Fraction; this class will be designed to handle fractions. The Fraction class has only two instance variables:
u An integer numerator
u An integer denominator
The two instance variables can be publicly accessible (at this stage). The Fraction class should never store a value of 0 for the denominator. Supply an output method for the Fraction class; this method will be used by the client to print out a fraction (as two separate integers) to the screen.
An output fraction would be in the form: numerator / denominator An example: the fraction for a half would be input as 1 for the numerator and 2 for the denominator. The output should be printed out as 1 / 2. Once this is done, write a client class program called TestFraction; this class is to be used to test your Fraction class.
Note that the client program should use the Fraction class methods or instance variables (via the dot notation) to get the inputs and display the fractions. The client class should use a loop for getting fractions from the user and displaying them to the screen. For this exercise, stop when a negative value entered by the user for the numerator.
Write the pseudocode first before coding the class and the client program in Java.
2. This exercise requires you to ensure that the input values representing fractions are stored with denominators that are positive integers. You cannot require the user to only enter a positive denominator value; the user should not be inconvenienced by such a restriction. For example, whilst values of 1 / -2 are acceptable inputs for a fraction, the output representation should be -1 / 2. Your solution should check the denominator input; if it is negative, swap the sign of both numerator and denominator instance variables. Test this functionality with your TestFraction class.
3. Now change your Fraction class so that its instance variables (numerator and denominator) are hidden (i.e. private). Check that your client class (after this change) will now not compile. Why does it now not compile?
Provide the changes to the Fraction class and the TestFraction class such that the program can work with the private instance variables by implementing appropriate accessor and mutator methods.