import type.lib.Fraction;

/**	This class demonstrates the difference between primative and
 *	object equality.
 *	
 *	@author Steven J. Castellucci
 *	@version 1.0 - (09/2008) 
 *	COPYRIGHT (C) 2008 All Rights Reserved.
 */    
public class EqualityExample
{
	public static void main(String[] args)
	{
		// Initialize variables
		int aInt = 8;
		int bInt = 8;
		Fraction aFrac = new Fraction(8, 1);
		Fraction bFrac = new Fraction(8, 1);
		System.out.println("\nVariables:");
		System.out.println("int aInt = " + aInt + ";");
		System.out.println("int bInt = " + bInt + ";");
		System.out.println("Fraction aFrac = " + aFrac + ";");
		System.out.println("Fraction bFrac = " + bFrac + ";");
		
		// Examples of primative equality
		System.out.println("\nPrimative Equality:");
		System.out.println("aInt == bInt: " + (aInt == bInt));
		int cInt = aInt;
		System.out.print("cInt = aInt; --> ");
		System.out.println("aInt = " + aInt + ", cInt = " + cInt);
		cInt += 2;
		System.out.print("cInt = cInt + 2; --> ");
		System.out.println("aInt = " + aInt + ", cInt = " + cInt);
		
		// Examples of object equality
		System.out.println("\nObject Equality:");
		System.out.println("aFrac == bFrac: " + (aFrac == bFrac));
		System.out.println("aFrac.equals(bFrac): " + (aFrac.equals(bFrac)));
		Fraction cFrac = aFrac;
		System.out.print("\ncFrac = aFrac; --> ");
		System.out.print("aFrac == cFrac: " + (aFrac == cFrac) + ", ");
		System.out.println("aFrac.equals(cFrac): " + (aFrac.equals(cFrac)));
		cFrac.add(bFrac);
		System.out.print("cFrac.add(bFrac); --> ");
		System.out.println("aFrac = " + aFrac + ", " + "cFrac = " + cFrac);
		Fraction dFrac = aFrac.cloneMe();
		System.out.print("\ndFrac = aFrac.cloneMe(); --> ");
		System.out.print("aFrac == dFrac: " + (aFrac == dFrac) + ", ");
		System.out.println("aFrac.equals(dFrac): " + (aFrac.equals(dFrac)));
		dFrac.add(bFrac);
		System.out.print("dFrac.add(bFrac); --> ");
		System.out.println("aFrac = " + aFrac + ", " + "dFrac = " + dFrac);

	}
}
