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 |