import java.util.*;
/**
* Visione semplificata di un'Anagrafe
*
* @author Antonio Terreno
* @created 23 maggio 2002
*/
public class Persona implements Comparabile {
/**
* Array di tutte le persone
*/
public static Persona[] arrayOfPersona;
private static int numerazionePersone;
private String nomePersona;
private String cognomePersona;
private int codiceFiscalePersona;
static {
arrayOfPersona = new Persona[99];
}
/**
*Costruttore dell'oggetto Persona
*
* @param nome Nome della persona
* @param cognome Cognome della persone
*/
public Persona(String nome, String cognome) {
nomePersona = nome;
cognomePersona = cognome;
arrayOfPersona[numerazionePersone] = this;
codiceFiscalePersona = nome.hashCode() + cognome.hashCode();
numerazionePersone += 1;
}
/**
* Restituisce l'attributo numerazionePersone della classe Persona
*
* @return Il valore di numerazionePersone
*/
public static int getNumerazionePersone() {
return numerazionePersone;
}
/**
* Restituisce l'indice dell'ultima persona inserita nell'array
*
* @return L'indice dell'ultima persona inserita nell'array
*/
public static int getIndiceUltimaPersona() {
return numerazionePersone - 1;
}
/**
* Restituisce l'attributo codiceFiscale dell'oggetto Persona
*
* @return Il valore di codiceFiscale
*/
public int getCodiceFiscale() {
return codiceFiscalePersona;
}
/**
* Restituisce l'attributo nome dell'oggetto Persona
*
* @return Il valore di nome
*/
public String getNome() {
return nomePersona;
}
/**
* Restituisce l'attributo cognonome dell'oggetto Persona
*
* @return Il valore di cognome
*/
public String getCognome() {
return cognomePersona;
}
/**
* Stampa dell'oggetto Persona
*
* @return Stampa dell'oggetto Persona
*/
public String toString() {
return
"\n____________________________________________________"
+ "\n Nome: " + this.getNome()
+ "\n Cognome: " + this.getCognome()
+ "\n Codice Fiscale: " + this.getCodiceFiscale()
+ "\n____________________________________________________";
}
/**
* Applica la stampa a tutti gli oggetti dell'array arrayOfPersona
*/
public static void stampaTutti() {
int i;
for (i = 0; i < numerazionePersone; i++) {
System.out.println(arrayOfPersona[i]);
}
}
/**
* Confronta oggetti di tipo Persona in base al loro codiceFiscale
*
* @param ob oggetto
* @return 1,-1,0 a seconda che un'oggetto sia <, > o = ad ob
* @exception ClassCastException Eccezione di tipo ClassCast
* @exception NullPointerException Description of the Exception
*/
public int compara(Comparabile ob) throws ClassCastException {
Persona altraPersona = (Persona) ob;
if (this.getCodiceFiscale() < altraPersona.getCodiceFiscale()) {
return -1;
}
if (this.getCodiceFiscale() > altraPersona.getCodiceFiscale()) {
return 1;
}
return 0;
}
/**
* @param args Eventuali argomenti
*/
public static void main(String args[]) {
Persona p1 = new Persona("Antonio", "Terreno");
Persona p2 = new Persona("Paolo", "Rossi");
Persona p3 = new Persona("Simona", "Deagostini");
Persona p4 = new Persona("Mario", "Rossi");
Persona.stampaTutti();
System.out.println("\nDopo l'ordinamento...");
try {
SortArray.sort(Persona.arrayOfPersona,getIndiceUltimaPersona());
} catch (ClassCastException cce) {
} catch (NullPointerException npe) {
}
Persona.stampaTutti();
}
}