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; } }