Aereo.java
Created with JBuilder
class Aereo {
  public static final int NUMERO_VOLI_INIZIALE = 100;

  private String codice;
  private String modello;
  private int    messaInServizio;
  private int    ultimaRevisione;
  private Volo[] elencoVoli;
  private int    numeroVoli;
  private int    oreVolate;

  public Aereo( String c, String m, int s ) {
    codice = c;
    modello = m;
    messaInServizio = ultimaRevisione = s;
    elencoVoli = new Volo[NUMERO_VOLI_INIZIALE];
    numeroVoli = 0;
    oreVolate = 0;
  }

  public String restituisciCodice() {
    return codice;
  }
  public String restituisciModello() {
    return modello;
  }
  public int restituisciMessaInServizio() {
    return messaInServizio;
  }
  public int restituisciUltimaRevisione() {
    return ultimaRevisione;
  }
  public void impostaUltimaRevisione(int anno) {
    ultimaRevisione = anno;
  }

  public void aggiungiVolo( Volo v ) {
    if (numeroVoli == elencoVoli.length) {
      int nuovaDimensione = elencoVoli.length * 2;
      Volo[] nuovoElencoVoli = new Volo[nuovaDimensione];
      for (int i = 0; i < elencoVoli.length; ++i) {
        nuovoElencoVoli[i] = elencoVoli[i];
      }
      elencoVoli = nuovoElencoVoli;
    }
    elencoVoli[numeroVoli] = v;
    ++numeroVoli;
    oreVolate += v.restituisciDurata();
  }

  public void eliminaVoli() {
    for (int i =0; i < numeroVoli; ++i) {
      elencoVoli[i] = null;
    }
    numeroVoli = 0;
    oreVolate = 0;
  }

  // 1 per il primo volo, 2 per il secondo, ...
  public Volo ricercaProgressivo(int i) {
    if ((i <= numeroVoli) && (i >0)) {
      return elencoVoli[i -1];
    } else {
      return null;
    }
  }

  public Volo[] ricercaVoliConDurataMaggioreDi(int ore) {
    Volo[] risultato = new Volo[numeroVoli];
    int posizione = 0;
    for (int i = 0; i < numeroVoli; ++i) {
      if (elencoVoli[i].restituisciDurata() > ore) {
        risultato[posizione] = elencoVoli[i];
        ++posizione;
      }
    }
    return risultato;
  }

  public int calcolaVoliConDurataMaggioreDi(int ore) {
    int risultato = 0;
    for (int i = 0; i < numeroVoli; ++i) {
      if (elencoVoli[i].restituisciDurata() > ore) {
        ++risultato;
      }
    }
    return risultato;
  }

  public Volo[] ricercaVoliDiTipo(int tipologia) {
    Volo[] risultato = new Volo[numeroVoli];
    int posizione = 0;
    for (int i = 0; i < numeroVoli; ++i) {
      if (elencoVoli[i].restituisciTipologia() == tipologia) {
        risultato[posizione] = elencoVoli[i];
        ++posizione;
      }
    }
    return risultato;
  }

  public int calcolaVoliDiTipo(int tipologia) {
    int risultato = 0;
    for (int i = 0; i < numeroVoli; ++i) {
      if (elencoVoli[i].restituisciTipologia() == tipologia) {
        ++risultato;
      }
    }
    return risultato;
  }

  public int calcolaOreVolate() {
    return oreVolate;
  }

}

Aereo.java
Created with JBuilder