
Originariamente inviata da
andbin
Ho quotato nel codice solo le parti rilevanti. Il concetto che hai applicato per gestire l'insieme delle Persone per lo Spettacolo, è sensato e corretto!
Ci credo è corretto, è quello che ci ha dato il professore come esempio 

Originariamente inviata da
andbin
Tutto questo ti ripeto che l'hai fatto giusto. Se non si usano le "collezioni", questo è il modo basilare e minimale per gestire un insieme di oggetti che cresce con un limite fisico massimo (se volessi che sia espandibile a piacere in modo arbitrario, chiaramente serve altra logica in più ma sicuramente non è l'obiettivo degli esercizi che stai facendo).
La questione della classe Veicolo è diversa, principalmente a livello concettuale. Una classe Veicolo denota una singola entità, appunto 1 veicolo. Non ha senso che Veicolo contenga un array di N veicoli. Invece una classe es. Garage o Parcheggio ha senso che abbia N veicoli. E li puoi gestire esattamente come hai fatto per Spettacolo, che ti ribadisco, è appropriata come gestione.
La cosa che mi creava dubbi principalmente era che il professore non aveva minimamente accennato ad altre classi nel testo dell'esercizio
beh l'ho risolto, grazie al tuo consiglio che mi ha permesso di arrivare ad una soluzione più logica
per i posteri, ecco la soluzione con una classe Garage:
codice:
public class Garage {
private Veicolo[] garage;
private int postiOccupati = 0;
private static final int CAPIENZA =100;
public Garage(){
this.garage = new Veicolo[CAPIENZA];
}
public int postiDisponibili () {
return CAPIENZA - postiOccupati;
}
public boolean occupa(Veicolo postoLibero) {
if ( postiDisponibili () >0) {
garage[postiOccupati] = postoLibero;
postiOccupati++;
return true ;
}
else return false ;
}
//stampa l'elenco dei veicoli
public void stampaElencoVeicoli() {
System.out.println("Elenco delle targhe dei veicoli guasti:");
for (int i =0; i< postiOccupati; i ++) {
garage[i].stampaTarga();
}
}
}
codice:
public class UsaVeicoli {
public static void main ( String args []) {
Garage g = new Garage();
Veicolo v1 = new Veicolo(54627, "Fiat", "Panda", false);
Motociclo mot1 = new Motociclo(4853, "Audi", "smart", false, 150);
Veicolo veic2 = new Veicolo(7683, "Fiat", "panda", false);
Vettura vett1 = new Vettura(67894, "Volvo", "sportivo", true, "SUV");
boolean ok1 = g.occupa(v1);
boolean ok2 = g.occupa(mot1);
boolean ok3 = g.occupa(veic2);
boolean ok4 = g.occupa(vett1);
if (!ok1 || !ok2 || !ok3 ){
System.out.println("Ci sono dei problemi con i tuoi veicoli!");
}
g.stampaElencoVeicoli();
}
}
Ovviamente la classe Veicolo cambia di conseguenza, e al suo interno si tolgono tutte le porzioni di codice che servono a creare un array, che sono nel garage.
Grazie ancora della tua disponibilità e del tuo aiuto!