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(); } }