ParcoAuto.java
Created with JBuilder
class ParcoAuto {
  // Attributi
  private Automezzo[] elemento;
  private int         numeroAutomezzi;
  private int         posizioneCorrente;

  // Costruttori
  public ParcoAuto(int numeroMaxAutomezzi)
  {
    elemento = new Automezzo[numeroMaxAutomezzi];
    numeroAutomezzi = 0;
    posizioneCorrente = 0;
  }

  // Metodo per l'aggiunta di un automezzo
  // Ritorna false se non è possibile aggiungere
  // l'automezzo e ritorna true altrimenti
  public boolean aggiungi(Automezzo automezzo)
  {
    if (numeroAutomezzi < elemento.length) {
      elemento[numeroAutomezzi] = automezzo;
      ++numeroAutomezzi;
      return true;
    } else {
      return false;
    }
  }

  // Metodo per la dismissione di un automezzo
  // Ritorna false se l'automezzo non è presente
  // nell'elenco e ritorna true altrimenti
  public boolean elimina(String targa)
  {
    int posizione =
        cercaPerTargaInterno(targa);
    if (posizione >= 0) {
      elemento[posizione] = elemento[numeroAutomezzi - 1];
      elemento[numeroAutomezzi - 1] = null;
      return true;
    } else {
      return false;
    }
  }

  // Metodo per la ricerca di un automezzo per targa
  // Ritorna null se l'automezzo non è presente
  // nell'elenco; altrimenti ritorna l'automezzo trovato
  public Automezzo cercaPerTarga(String targa)
  {
    int posizione =
        cercaPerTargaInterno(targa);
    if (posizione >= 0) {
      return elemento[posizione];
    } else {
      return null;
    }
  }

  // Metodo per la ricerca di veicoli soggetti a revisione
  public ParcoAuto cercaAutomezziDaRevisionare(
      int annoCorrente)
  {
    ParcoAuto daRevisionare = new ParcoAuto(numeroAutomezzi);
    for (int i = 0; i < numeroAutomezzi; ++i) {
      int annoImmatricolazione =
          elemento[i].restituisciAnnoImmatricolazione();
      int annoRevisione =
          elemento[i].restituisciAnnoRevisione();
      if ((annoImmatricolazione == annoRevisione) &&
          ((annoImmatricolazione + 4) == annoCorrente)) {
        daRevisionare.aggiungi(elemento[i]);
      } else if ((annoRevisione + 2) == annoCorrente) {
        daRevisionare.aggiungi(elemento[i]);
      }
    }
    return daRevisionare;
  }

  // Metodi per la scansione del parco auto
  public void iniziaScansione()
  {
    posizioneCorrente = 0;
  }
  public Automezzo prossimoAutomezzo()
  {
    if (posizioneCorrente < elemento.length) {
      Automezzo auto = elemento[posizioneCorrente];
      ++posizioneCorrente;
      return auto;
    } else {
      return null;
    }
  }
  public int restituisciNumeroAutomezzi()
  {
    return numeroAutomezzi;
  }

  // Metodo interno per la ricerca di automezzi
  // Ritorna -1 se l'automezzo non è presente nell'elenco
  // e la sua posizione in elenco altrimenti
  private int cercaPerTargaInterno(String targaCercata)
  {
    for (int i = 0; i < numeroAutomezzi; ++i) {
      String targaTrovata = elemento[i].restituisciTarga();
      if (targaTrovata.equals(targaCercata)) {
        return i;
      }
    }
    return -1;
  }
}

ParcoAuto.java
Created with JBuilder