Java example: methods with parameters

Vogliamo definire una classe che rappresenta un esame universitario. Nella nostra classe, che è solo una semplificazione della realtà, un esame ha i seguenti attributi:

  • un codice insegnamento (alfanumerico)
  • un nome
  • un anno di corso (numerico, di solito da 1 a 5)
  • l’obbligatorietà (che può valere true o false)
  • voto (numerico, da 18 a 31, 31 significa 30 e lode)

Nella classe vanno dichiarati i seguenti metodi:

  1. un metodo chiamato “inizializza” che prende come parametri codice, nome, anno e obbligatorietà dell’esame e assegna i valori di questi 4 parametri ai corrispondenti 4 attributi della classe
    • il metodo, prima di assegnare i valori dei 4 parametri ai 4 attributi svolge le seguenti operazioni:
      • controlla se il parametro anno è minore di 1 o maggiore di 5, se lo è assegna all’attributo non il valore del parametro ma il valore più vicino tra 1 e 5 (ad esempio, se si il parametro vale zero il metodo assegnerà all’attributo il valore 1, se il parametro vale 10 il metodo assegnerà all’attributo il valore 5)
    • lo stesso metodo assegna di default all’attributo “voto” il valore -1 (questo punteggio significa che l’esame non è stato ancora superato)
  2. un metodo chiamato “superaEsame” che prende come parametro il voto conseguito nel momento del superamento dell’esame e che assegna il valore di questo parametro al corrispondente attributo della classe
    • il metodo, prima di assegnare il valore fornito come parametro all’attributo voto, controlla se il valore fornito come parametro è compreso tra 18 e 31, e se non lo è:
      1. segnala questo errore con un messaggio sulla console di output
      2. non assegna il valore del parametro all’attributo
  3. (facoltativo) in una classe separata definire un metodo main in cui:
    1. si definisce un array di esami della classe definita precedentemente
    2. si inizializza l’array in modo che possa contenere 10 oggetti
    3. si esegue il metodo “inizializza” su ciascuno dei 10 oggetti contenuti nell’array fornendo al metodo sempre i seguenti valori dei parametri:
      • il codice 000000
      • il nome default
      • l’anno 1
      • l’obbligatorietà false
    4. si visualizzano sulla console di output i dati di tutti e 10 gli esami contenuti nell’array
public class Esame{
	  public String codice;
	  public String nome;
	  public int anno;
	  public boolean obbl;
	  public byte voto;
	  public void inizializza(String p_codice, String p_nome, int p_anno, boolean p_obbl){
	    codice=p_codice;
	    nome=p_nome;
	    obbl=p_obbl;
	    anno=p_anno;
	    if(anno>5)
	      anno=5;
	    if(anno<1) anno=1; voto=-1; } public void superaEsame(byte p_voto){ if((p_voto>17)&&(p_voto<32))
	      voto=p_voto;
	    else
	      System.out.println("errore, il voto inserito non è corretto");
	  }
	}
public class mainEsame {

	public static void main(String[] args) {
		Esame[] arrayEsami;
		arrayEsami = new Esame[10];
		int c;
		c = 0;
		while (c < 10) {
			arrayEsami = new Esame();
			arrayEsami.inizializza("000000", "default", 1, false);
			c = c + 1;
		}
		c = 0;
		while (c < 10) {
			System.out.println("Esame " + c + ": " + arrayEsami.codice + " - " + arrayEsami.nome + ", anno "
					+ arrayEsami.anno + ", obbligatorio: " + arrayEsami.obbl + ", voto: " + arrayEsami.voto);
			c = c + 1;
		}
	}
}