// this // static vs. non-static, oggetto di invocazione, contesti static e non-static public class Esami { private int numEsamiSostenuti; // il numero di esami aggiunti private int[] voti; // memorizza i voti degli esami sostenuti. // Le posizioni da numEsamiSostenuti alla fine dell'array sono libere private double[] crediti; // memorizza i crediti degli esami sostenuti. // Le posizioni da numEsamiSostenuti alla fine dell'array sono libere public Esami() { this(30); // chiama il costruttore Esami(int) } public Esami(int num) { voti = new int[num]; crediti = new double[num]; numEsamiSostenuti = 0; } // sarebbe opportuno controllare che gli array non siano gia pieni. // Questa eventualita' si potrebbe segnalare restituendo un boolean public void aggiungiEsame(int voto, double crediti) { voti[numEsamiSostenuti] = voto; // this rappresenta un riferimento all'oggetto di invocazione this.crediti[numEsamiSostenuti] = crediti; numEsamiSostenuti++; } public int getNumEsami() { return numEsamiSostenuti; } public double getMediaPesata() { double sommaPesata = 0; double totCrediti = 0; for(int i=0; i 0) return sommaPesata/totCrediti; else return 0; } public double getTotCrediti() { double totCrediti = 0; for(int i=0; i max) max = voti[i]; } return max; } public int getVoto(int posiz) { return voti[posiz]; } public double getCrediti(int posiz) { return crediti[posiz]; } }