// codice con la superclasse Persona e la sottoclasse Studente
public class Persona {
private String nome, cognome;
public void setNome(String n, String c) {
nome = n;
cognome = c;
}
public void printAll() {
System.out.println("Nome: "+ nome+" "+cognome);
}
}
import java.util.HashMap;
public class Studente extends Persona {
private HashMap< String, Integer > tab = new HashMap< >(); // tabella che contiene esami e voti
public void nuovoEsame(String e, int v) {
tab.put(e, v); // inserisce una nuova coppia chiave valore in tabella
}
public float getMedia() {
if (tab.size() == 0) return 0;
float sum = 0;
for (int voto : tab.values()) // voto e' l'i-mo valore della tabella
sum += voto;
return sum / tab.size();
}
@Override
public void printAll() {
super.printAll();
for (String esame : tab.keySet()) // esame e' l'i-ma chiave della tabella
System.out.println("esame: " + esame + " voto: " + tab.get(esame));
System.out.println("media = " + getMedia());
}
}
public class MainEsami {
public static void main(String[] args) {
Studente s = new Studente(); // s e' di tipo Studente
s.setNome("Mario", "Tanaka"); // metodo della superclasse di s
s.nuovoEsame("Italiano", 6); // metodo della classe di s
s.nuovoEsame("Fisica", 8);
s.printAll(); // metodo della classe di s
Persona p = s; // p e' dichiarato di tipo Persona
p.printAll(); // a runtime p punta all'istanza s
}
}