import static java.lang.System.*; 	// Inclusion statique ... à partir de la version Java 5.0

/** Classe 'deuxRef' :  classe publique pour tester la classe 'DATE': deuxReferencesPourUneDate
  * @author   (c) ~/2A env.  H. Nguyen-Phu
  * @version  1.1   2007.10.03
  * @since     1.0   2006.08.26
  * @see         DATE
  *@see          date_t
  *@see          datesEgales
   *@see         objSansRef
   *@see          es
   */
public class deuxRef  {
	/** Méthode principale publique  de classe 'main(...)'.
	  * Elle utilise la classe 'es' pour accéder aux méthodes de classe:
	  *    attente() - affichage de l'heure de fin d'exécution,
	  * @param args Tableau de chaînes pour ligne de commande éventuelle
	  */	
	 public static void main(String [] args)  {	

		DATE  d1, d2;
		boolean estBis, apres, idem;

		out.println("\ndeuxRef : Deux r\u00e9f\u00e9rences pour une m\u00eame instance DATE !");
		out.println("(c)~/2A env. - MAJ: 2007.10.03 18h44\n");

		d1 = new DATE(3, 10, 2007);   // premier objet créé
		out.println("refDATE  d1 = "+ d1 + " <=> premier objet !");
		d2 = new DATE(4, 10, 2007);   // second objet créé
		out.println("refDATE  d2 = "+ d2 + " <=> 2nde instance !\n");

		idem = d1.estEgal(d2); out.println("idem = "+ idem);
		estBis = d1.estBissextile(); out.println("estBis = "+ estBis);
		apres= d2.suit(d1); out.println("apres = "+ apres);

		out.println();
		d2 = d1; // les deux réf. pointent sur le même objet "6/9/2006"
		System.gc(); 
		// activation (forcée) du 'gc' pour nettoyer l'objet 'd2' initial qui n'est plus référencé
	    	// On  temporise  0.0010 seconde pour que le 'garbage collector' GC puisse travailler
		try {
		       Thread.sleep(1);
		    } catch(Exception e) { }
		out.println();

		out.println("refDATE  d1 = "+ d1 + " <=> pointe toujours sur le 1er  objet !");
		out.println("refDATE  d2 = "+ d2 + " <=> pointe sur le premier objet aussi !\n");

		idem = d1.estEgal(d2);
		out.println("Les refDATE  d1 et d2 " + ( idem ? " sont " : " ne sont pas ") + " \u00e9gales (<=> COPIE DE SURFACE ici) !!\n");

		d2.modifAnnee(2008);
		out.println("refDATE  d2 = "+ d2 + " <=> date 'd2' est modifi\u00e9e !");
		out.println("refDATE  d1 = "+ d1 + " <=> premier objet modifi\u00e9 aussi !");
		out.println("C'est DONC toujours une copie superficielle (de surface)  !!\n");

		es.attente();
	}

}  // fin de la classe 'deuxRef'
