Chiarissimo, allora così HA senso. La classe "base" è quindi Vagone.
La classe Treno quindi potrà avere, detto in generale, un elenco di oggetti visti come tipo Vagone. Potrebbe essere un array o meglio ancora una collezione (una lista ha senso).
Qualcosa tipo:
codice:public class Treno { private List<Vagone> vagoni; // ......altro }
All'interno della classe ci potranno essere metodi es. public void aggiungiVagone(Vagone v)
Notare che la lista è parametrizzata Vagone e anche il parametro di aggiungiVagone l'ho messo Vagone. Per effetto della ereditarietà/polimorfismo, posso passare ad aggiungiVagone qualunque oggetto che è-un Vagone, ad esempio un VagonePasseggeri. La gerarchia di classi con Vagone alla "base" serve proprio per essere sfruttata in questo modo!
Treno deve "sapere" delle sottoclassi di Vagone? Di base, di per sé NO, potrebbe anche essere codificata solo in funzione del tipo Vagone (un getVagone(int indice) restituisce un Vagone, ecc...).
Se ci sono necessità particolari e diverse, allora VANNO ben specificate, motivate e chiarite.![]()


Rispondi quotando