GestioneVeicoli.java
Created with JBuilder
class GestioneVeicoli {
  // Numeri iniziali per le dimensioni degli elenchi
  public static final int NUMERO_INIZIALE_VEICOLI = 1;
  public static final int NUMERO_INIZIALE_MESSAGGI = 1;

  // Attributi
  private Veicolo[] elencoVeicoli;
  private int numeroVeicoli;
  private Messaggio[] elencoMessaggi;
  private int numeroMessaggi;

  // Costruttore
  public GestioneVeicoli() {
    elencoVeicoli = new Veicolo[NUMERO_INIZIALE_VEICOLI];
    elencoMessaggi = new Messaggio[NUMERO_INIZIALE_MESSAGGI];
    numeroVeicoli = numeroMessaggi = 0;
  }

  // Inserimento di un veicolo
  public void aggiungiVeicolo( Veicolo v ) {
    if (numeroVeicoli == elencoVeicoli.length) {
      Veicolo[] tmp = new Veicolo[numeroVeicoli * 2];
      for (int i = 0; i < numeroVeicoli; ++i) {
        tmp[i] = elencoVeicoli[i];
      }
      elencoVeicoli = tmp;
    }
    elencoVeicoli[numeroVeicoli++] = v;
  }

  // Rimozione di un veicolo (ricerca per codice numerico)
  public boolean rimuoviVeicolo( Veicolo v ) {
    int codice = v.restituisciCodice();
    for (int i = 0; i < numeroVeicoli; ++i) {
      if (elencoVeicoli[i].restituisciCodice() == codice) {
        elencoVeicoli[i] = elencoVeicoli[numeroVeicoli - 1];
        --numeroVeicoli;
        return true;
      }
    }
    return false;
  }

  // Ricerca di un messaggio nell'archivio storico dato il giorno
  public Messaggio[] cercaMessaggio(int giorno) {
    Messaggio[] risultato = new Messaggio[numeroMessaggi];
    int j = 0;
    for (int i = 0; i < numeroMessaggi; ++i) {
      if (elencoMessaggi[i].restituisciGiorno() == giorno) {
        risultato[j++] = elencoMessaggi[i];
      }
    }
    return risultato;
  }

  // Azzeramento di tutti gli elenchi messaggi e trasferimento nello storico
  public void resetMessaggi() {
    for (int i = 0; i < numeroVeicoli; ++i) {
      int num = elencoVeicoli[i].restituisciNumeroMessaggi();
      for (int j = 0; j < num; ++j) {
        if (elencoMessaggi.length == numeroMessaggi) {
          Messaggio[] tmp = new Messaggio[numeroMessaggi * 2];
          for (int k = 0; k < numeroMessaggi; ++k) {
            tmp[k] = elencoMessaggi[k];
          }
          elencoMessaggi = tmp;
        }
        elencoMessaggi[++numeroMessaggi] =
            elencoVeicoli[i].restituisciMessaggio(j);
      }
      elencoVeicoli[i].eliminaMessaggi();
    }
  }

  // Calcolo del numero di messaggi divisi per tipologie e con grado di
  // severità dato
  public int[] messaggiConSeverità( int severità ) {
    int[] risultato = new int[Messaggio.NUMERO_TIPOLOGIE];
    for (int i = 0; i < numeroVeicoli; ++i) {
      int[] tmp = elencoVeicoli[i].messaggiConSeverità(severità);
      for (int j = 0; j < Messaggio.NUMERO_TIPOLOGIE; ++j) {
        risultato[j] += tmp[j];
      }
    }
    return risultato;
  }

  // Elenco di tutti i veicoli che hanno generato messaggi con severità
  // superiore ad una data
  public Veicolo[] veicoliConSeveritàSuperioreA( int severità ) {
    Veicolo[] risultato = new Veicolo[numeroVeicoli];
    int j = 0;
    for (int i = 0; i < numeroVeicoli; ++i) {
      if (elencoVeicoli[i].messaggiConSeveritàMaggioreDi(severità) > 0){
        risultato[j++] = elencoVeicoli[i];
      }
    }
    return risultato;
  }

  // Elenco di tutti i veicoli che presentano almeno un dispositivo in
  // condizioni critiche
  public Veicolo[] veicoliConDispositivoCritico() {
    Veicolo[] risultato = new Veicolo[numeroVeicoli];
    int j = 0;
    for (int i = 0; i < numeroVeicoli; ++i) {
      if (elencoVeicoli[i].dispositiviInCondizioneCritica() > 0) {
          risultato[j++] = elencoVeicoli[i];
      }
    }
    return risultato;
  }

}

GestioneVeicoli.java
Created with JBuilder