/*
I professori di una Facoltà possono essere a tempo pieno e a tempo parziale.
Quelli a tempo pieno ricevono uno stipendio fisso più una indennità proporzionale alle ore di lezione.
Quelli a tempo parziale ricevono solo lo stipendio fisso (eguale a quello dei colleghi a tempo pieno).
Generato a caso un array di 100 professori tra tempo pieno e tempo parziale,
e stabilite a caso le ore di lezione insegnate dai professori a tempo pieno si vuole
conoscere quanto spende la università in un mese per tutti i professori.
*/
public class Uni {
//creo Array di Docenti
private static Docente[] docenti = new Docente[100];
//Il programma inizia con una chiamata al metodo main().
public static void main(String args[]) {
//creo i docenti
for (int c=0; c<docenti.length; c++)
if (Math.random()>.5) docenti[c] = new Fulltime((int)(Math.random()*20+1));
else docenti[c] = new Parttime();
//calcola spesa Facoltà
float spesa=0.0F;
for (int c=0; c<docenti.length; c++) {
spesa += docenti[c].getStipendio();
System.out.println(docenti[c]);
}
System.out.println("\nSpesa totale: " + spesa);
}
}
interface costanti {
public final float STIPENDIO = 1000.0F;
public final float COSTO_ORA = 15.0F;
int[] costi = {1,2,3};
}
abstract class Docente implements costanti {
public abstract float getStipendio();
}
class Fulltime extends Docente {
private int ore;
//costruttore
public Fulltime(int ore) {
this.ore = ore;
}
//metodo pubblico
public float getStipendio() {
return STIPENDIO + ((float)ore * COSTO_ORA);
}
public String toString() {return "Docente a tempo pieno con "+ore+" ore";}
}
class Parttime extends Docente {
//metodo pubblico
public float getStipendio() {
return STIPENDIO;
}
public String toString() {return "Docente a tempo parziale";}
}