GestioneFlotta.java
Created with JBuilder
class GestioneFlotta {
  private Aereo[] elencoAerei;
  private int     numeroAerei;

 public GestioneFlotta(int numeroMaxAerei) {
   elencoAerei = new Aereo[numeroMaxAerei];
   numeroAerei = 0;
 }

 public boolean aggiungiAereo(Aereo a) {
   if (numeroAerei < elencoAerei.length) {
     elencoAerei[numeroAerei] = a;
     ++numeroAerei;
     return true;
   } else {
     return false;
   }
 }

 public boolean dismettiAereo(Aereo a) {
   int i = this.ricercaPerCodiceInterno(a);
   if (i >= 0) {
     elencoAerei[i] = elencoAerei[numeroAerei - 1];
     --numeroAerei;
     return true;
   } else {
     return false;
   }
 }

 public boolean revisionaAereo(Aereo a, int anno) {
   int i = this.ricercaPerCodiceInterno(a);
   if (i >= 0) {
     elencoAerei[i].eliminaVoli();
     elencoAerei[i].impostaUltimaRevisione(anno);
     return true;
   } else {
     return false;
   }
 }

 public Aereo ricercaPerCodice(Aereo a) {
   int i = this.ricercaPerCodiceInterno(a);
   if (i >= 0) {
     return elencoAerei[i];
   } else {
     return null;
   }
 }

 public Aereo[] ricercaPerModello(String modello) {
   Aereo[] risultato = new Aereo[numeroAerei];
   int posizione = 0;
   for(int i = 0; i < numeroAerei; ++i) {
     if (modello.equals(elencoAerei[i].restituisciModello())) {
       risultato[posizione] = elencoAerei[i];
       ++posizione;
     }
   }
   return risultato;
 }

 public Aereo[] ricercaAereiDaRevisionare() {
   Aereo[] risultato = new Aereo[numeroAerei];
   int posizione = 0;
   for (int i = 0; i < numeroAerei; ++i) {
     boolean daRevisionare =
       (elencoAerei[i].calcolaVoliConDurataMaggioreDi(10) > 500) ||
       (elencoAerei[i].calcolaVoliDiTipo(Volo.INTERCONTINENTALE) > 200) ||
       (elencoAerei[i].calcolaOreVolate() > 5000);
     if (daRevisionare) {
       risultato[posizione] = elencoAerei[i];
       ++posizione;
     }
   }
   return risultato;
 }

 public Aereo[] ricercaAereiConRevisionePosterioreDi(int anni) {
   Aereo[] risultato = new Aereo[numeroAerei];
   int posizione = 0;
   for (int i = 0; i < numeroAerei; ++i) {
     if ((elencoAerei[i].restituisciMessaInServizio() + anni) <
         elencoAerei[i].restituisciUltimaRevisione()) {
       risultato[posizione] = elencoAerei[i];
       ++posizione;
     }
   }
   return risultato;
 }

 private int ricercaPerCodiceInterno(Aereo a) {
   String codice = a.restituisciCodice();
   for (int i = 0; i < numeroAerei; ++i) {
     if (codice.equals(elencoAerei[i].restituisciCodice())) {
       return i;
     }
   }
   return -1;
 }

}

GestioneFlotta.java
Created with JBuilder