import java.io.*;

/**
  * 'chaine'  Classe publique  nécessaire pour 'swap3.java'
  * @author   H. Nguyen-Phu   (c) ~/2a  env.
  * @version  1.1  2005.10.03
  * @since    1.0  18.12.2003
  * @see      swap3
  */

public class chaine   {
		/**
		  * 'data':  ce champ privé  d'instance est  unique ici !
		  */
	private  String  data;

		/**
		 * Constructeur public pour e^tre accessible dans un autre package
		 */	
                public chaine() { 
			data = new String("UHP-ESSTIN");  
                }   // constructeur  sans arguments  <>  constructeur par défaut géré par  JDK 

		/**
		 * Second constr. public à un arg.
		 * @param data  Pour éviter la confusion, l'emploi de 'this' est nécessaire ici !
		 */
                 public chaine(String  data)   {  
			this.data = new String(data); 
                 }  
		/**
		 * Troisième constr. public à un arg.  par clonage
		 * @param   nouvelleChaine   de type 'chaine'
		 */
                public chaine(chaine  nouvelleChaine)   {  
			data = new String(nouvelleChaine.getData() ); 
                }  			
	
		/**
		 * 'getData()'  Premier accesseur
		 * @return 	Retourne un 'String'  i.e. type utilisé pour le champ 'data'
		 */
                  public  String  getData()  { 
			return data; 
                  } // accesseur au champ prive'
		/**
		 * 'toString()' Second accesseur <==>  Surcharge de la même méthode de 'Object'
		 * @return	Retourne  'data'  i.e. une chaîne 'String'
		 */			
                  public String toString()  {	
			return  data; 
                  }
		/**
		 * Procédure 'adresse()': 3 ième accesseur 
		 * Pas de paramètre retournée - Affiche seulement l'adresse de l'objet courant en hexa.
		 */
                  public void adresse()  	{
			System.out.println("Adresse = "+this);		
                  }

		/**
		 * 'estCopiéPar(...)': Procédure modificatrice unique ici !
		 * @param x  Le contenu effectif de x sera BIEN copié dans l'objet courant 'this'
		 */
                  public  void   estCopiéPar(chaine  x)   { 
			data = new String(x.getData( )); 
                  } //   pour  copie profonde
}

		
