//******************************************************************** // Staff.java // Rappresenta l'archivio del personale di una specifica istituzione. // Inizializza un array di elementi della classe Personale. // Esempio di chiamata di metodo polimorfo in un ciclo. //******************************************************************** class Staff { Personale[] lista; //----------------------------------------------------------------- // Crea la lista dei membri del personale. //----------------------------------------------------------------- public Staff () { lista = new Personale[6]; lista[0] = new Dipendente ("Carlo Rossi", "Via dei Gracchi 0", "555-0469", "CRLRSS53B12F205T", 1923.07); lista[1] = new Dipendente ("Amintore Fanfani", "Piazza del Gesu' 15", "555-0101", "MNRFNF11C13G243F", 846.15); lista[2] = new Impiegato ("Palmiro Togliatti", "Via Botteghe Oscure 1", "555-0000", "PLRTGT17F05F205A", 769.23); (lista[2]).gratifica (50.00); lista[3] = new Giornaliero ("Pierino Porcospino", "Via Anfiteatro 4", "555-0690", "PRNPRP65C10F205R", 18.55); ((Giornaliero)lista[3]).giorni (40); lista[4] = new Volontario ("San Camillo", "4 Ciclo", "555-8374"); lista[5] = new Volontario ("San Callisto", "5 Ciclo","555-7282"); } //----------------------------------------------------------------- // Pagamenti per tutti i membri del personale. //----------------------------------------------------------------- public void giorno_di_paga () { double totale; System.out.println(); System.out.println("*** calcolo delle paghe del personale ***"); System.out.println(); for (int i=0; i < lista.length; i++) { System.out.println (lista[i]); totale = lista[i].paga(); // metodo polimorfo, è il tipo di lista[i] che determina // quale metodo paga() eseguire e ad ogni passo è diverso if (totale == 0.0) System.out.println ("Grazie per il vostro contributo!"); else System.out.println ("Pagamento totale dovuto: " + totale); System.out.println ("-----------------------------------"); } } }