package lezione08; class StudenteSlide19 { String nome; String cognome; int eta; String matricola; EsameSlide14[] carriera; int next; static int counter = 0; StudenteSlide19(String nome, String cognome, int e) { this.nome = nome; this.cognome = cognome; this.eta = e; this.next = 0; this.matricola = StudenteSlide19.generaMatricola(); this.carriera = new EsameSlide14[30]; } static String generaMatricola() { String matricola = String.valueOf(StudenteSlide19.counter); // equivalente a 'return StudenteSlide16.counter + ""' ma piu' elegante =) StudenteSlide19.counter++; return matricola; // NOTA: NON 'this.matricola' } double calcolaMedia(){ double somma = this.sommaVoti(this.carriera); return somma / this.next; } double sommaVoti(EsameSlide14[] carriera) { double somma = 0; for (int i = 0; i < next; i++) { somma += carriera[i].voto; } return somma; } void registraVoto(String materia, int voto) { EsameSlide14 esame = new EsameSlide14(); esame.materia = materia; esame.voto = voto; this.carriera[this.next] = esame; this.next++; } double registraECalcolaMedia(EsameSlide14 esame) { this.registraVoto(esame.materia, esame.voto); return this.calcolaMedia(); } public static void main(String[] args) { StudenteSlide19 s1 = new StudenteSlide19("Stefano", "Mariani", 30); System.out.println("Nome: " + s1.nome); System.out.println("Cognome: " + s1.cognome); System.out.println("Eta': " + s1.eta); s1.registraVoto("Fondamenti di Informatica", 30); System.out.println("Materia: " + s1.carriera[0].materia + " Voto: " + s1.carriera[0].voto); System.out.println("Media: " + s1.calcolaMedia()); EsameSlide14 esame = new EsameSlide14(); esame.materia = "Fisica Tecnica"; esame.voto = 18; s1.registraECalcolaMedia(esame); System.out.println("Materia: " + s1.carriera[1].materia + " Voto: " + s1.carriera[1].voto); System.out.println("Media aggiornata: " + s1.calcolaMedia()); } }