Interfaces

Defining an interface is written in some detail here (Sun Tutorial): http://java.sun.com/docs/books/tutorial/java/interpack/createinterface.html

This is another example. It is comprised of these files:

Rational Interface
public interface Rational
{
boolean equals (Rational r);
int numerator ();
int denominator ();
void setnumer (int n);
void setdenom (int n);
double decimal ();
}
FractRational DecRational
public class FractRational implements Rational
{
private int n = 1;
private int d = 1;

public FractRational ()
{
}

public FractRational (int nu, int de)
{
n = nu;
d = de;
}

public FractRational (double de)
{
de = de * 100;
n = (int) de;
d = 100;
}

public boolean equals (Rational r)
{
if (r.decimal () == decimal())
return true;
else
return false;
}

public int numerator ()
{
return n;
}

public int denominator ()
{
return d;
}

public void setnumer (int n)
{
(this).n = n;
}

public void setdenom (int n)
{
(this).n = n;
}

public double decimal ()
{
return (double) n / (double) d;
}

}

public class DecRational implements Rational
{
private double dec = 0.1;
public DecRational ()
{
}

public DecRational (int nu, int de)
{
dec = (double) nu / (double) de;
}

public DecRational (double de)
{
dec = de;
}

public boolean equals (Rational r)
{
if (r.decimal () == dec)
return true;
else
return false;
}

public int numerator ()
{

int n = (int) (dec * 100);
return n;
}

public int denominator ()
{
return 100;
}

public void setnumer (int n)
{
dec = (double) n / 100;
}

public void setdenom (int n)
{
int nu = (int) dec * 100;
dec = (double) nu / (double) n;
}

public double decimal ()
{
return dec;
}
}

Running the class:

public class RunRational
   {
   public static void main (String args [])
   {
   //Create a FractRational
   FractRational half = new FractRational (1, 2);
   FractRational quarter = new FractRational (0.25);
   System.out.println (half.decimal ());
   System.out.println (quarter.decimal ());
   
   //Create a DecRational 
   DecRational alsoHalf = new DecRational(0.5);
   System.out.println(alsoHalf.numerator());
   System.out.println(alsoHalf.denominator());
   
   //We can test if a DecRational and FractRational are equal
   // because both are implementing the Rational interface
   System.out.println(half.equals(alsoHalf));
   }
   }