/**
 *  La classe astratta <code>Contatto</code> rappresenta 
 *  un contatto  per una rubrica telefonica.  
 *<BR>
 *  Un'istanza della classe  <code>Contatto</code>  ha la  forma
 *   <em>(persona, telefono)</em>. Il telefono va rappresentato
 * come stringa in quanto un numero telefonico pu&ograve; iniziare con lo zero.
 *<BR>
 *  La classe &egrave;   <em>astratta</em>, quindi non &egrave; possibile
 *    costruire istanze. Istruzioni del tipo
 *    <pre> 
 *     Contatto cont = new Contatto("Mario", "Bianchi", "02556976"); 
 *    </pre>
 *   danno errore in compilazione. 
 *<BR>
 *   Per generare istanze occorre definire sottoclassi concrete della classe <code>Contatto</code>.
 *     I costruttori della classe 
 * <code>Contatto</code> sono   utilizzabili nelle sue sottoclassi.
 *   <BR><BR>
  * Dati due contatti  <em>c1 =(persona1,telefono1)</em>  e 
 *   <em>c2=(persona2,telefono2)</em>  diciamo che:
 * 
 *   <ul>
 *  <li> 
 *   <em>c1</em> &egrave  <em>uguale</em> a <em>c2</em>
 *  se e solo se
 *  <em>persona1</em> &egrave uguale a  <em>persona2</em>  e
 * <em>telefono1</em> &egrave uguale a  <em>telefono2</em>.
 * <BR>
 *  Ad esempio, dati i contatti
 *  <pre>
 *    c1=(Mario, Bianchi, 12345)        c2=(Mario, Bianchi, 12345)         c3=(Mario, Bianchi, 97653)
 * </pre>
 *  <code>c1</code>   &egrave; uguale a  <code>c2</code>, mentre 
 *  <code>c1</code>   &egrave; diverso  da  <code>c3</code>.
 *  </li>
 *   <li> 
 *   <em>c1</em>   <em>precede</em>  <em>c2</em>  
 * (<em>c1</em> < <em>c2</em>)
 *  se e solo se   <em>persona1</em> precede <em>persona2</em>
 * oppure   <em>persona1</em> &egrave; uguale  a <em>persona2</em>
 * e  <em>telefono1</em> precede  <em>telefono2</em>
 * nell'ordinamento lessicografico.
*<BR>  
 *Ad esempio, dati i contatti
 *<pre>
 *   c1=(Mario, Bianchi, 12345)    c2=(Alberto, Rossi,353987)   c3=(Mario, Bianchi, 02698765)   
 *</pre>
 *vale:
 *<pre>
 *      c1 < c2           c3 < c1 
 *</pre> 
*  Nel secondo esempio  i contatti si riferiscono alla stessa persona e  nell'ordinamento lessicografico
 *  <code>02698765</code> precede  <code>12345</code>.
* </li>
*  </ul>
  *<BR>
* La classe implementa l'interfaccia 
*  <code>Comparable&lt;Contatto&gt;</code>, quindi deve definire un metodo
*<pre>
*    public int compareTo(Contatto cont)
*</pre>
* per confrontare il contatto che esegue il metodo con l'argomento;
*  l'ordinamento va fatto  in base alle definizioni date sopra.
*<BR>
 *Per confrontare due stringhe in base all'ordinamento lessicografico   
 * si pu&ograve; usare  il metodo <code>compareTo</code> della classe <code>String</code>.
*
*/

public abstract class Contatto implements Comparable<Contatto>  {

  // CAMPI
    private Persona persona; 
    private String telefono; // il numero di telefono va rappresentato come stringa, non come intero
                               


  // COSTRUTTORI
  

  /**
   *     Costruisce un nuovo contatto in cui la persona
   *     e il numero di telefono sono specificati dagli argomenti.
  */

    public Contatto (Persona persona,  String tel) {
	// ...
  }




/** 
*     Costruisce un nuovo contatto in cui nome e cognome della persona
*     e il numero di telefono sono specificati dagli argomenti.
*/


// usare il costruttore precedente

  public Contatto (String nome, String cognome, String tel) {
      //..  chiamare costruttore precedente
  }





  // METODI
  
  /**
   *     Restituisce la persona nel contatto che esegue il metodo.
  */


 public Persona getPersona() {
     return null;
  }


 /**
  *     Restituisce il nome della persona  nel contatto che esegue il metodo.
  */


 public String getNome() {
     return null;
  }


 /**
  *     Restituisce il cognome della persona  nel contatto che esegue il metodo.
  */

  public String getCognome() {
      return null;
  }
  
 

  
  /**
   *     Restituisce il numero di telefono nel contatto che esegue il metodo.
  */

  public String getTelefono() {
      return null;
  }

  /**
   *  Restituisce una stringa che descrive il contatto che esegue il metodo.
   */

  // riscrive il metodo toString della classe Object


  //la stringa contiene la persona e il telefono separati da uno spazio
 
 public String toString(){
     return "";
  } 
  

 /**
 *    Restituisce <code>true</code> se e solo se il contatto che esegue il metodo &egrave;
*  uguale al contatto specificato dall'argomento rispetto alla definizione data sopra.
*/
 
      public boolean equals(Contatto cont) { 
	  return false;
   }


  

  /**   Confronta il contatto che esegue il metodo con il contatto 
   *    specificato dall'argomento in base alle definizioni date sopra.
   *
   * @return Un numero negativo  se il contatto che esegue il metodo precede il contato 
   *  <code>cont</code> specificato dall'argomento,  
   * 0 se i due contatti sono uguali,
   *  un numero positivo se <code>cont</code> precede il contatto che esegue il metodo. 
   *
 *
*/



      // implementa il metodo compareTo dell'interfaccia comparable<Contatto>

      // usare i metodi compareTo della classe Persona e della classe String

    public int compareTo(Contatto cont){
	return 0;
    }


   

}// end class
	

