Originariamente inviato da 20Marty20
vi posto le classi che ho relaizzato
Alcune note e consigli generali:

1) Se una classe modella 1 sola entità generalmente è meglio metterlo al singolare: Vettura non Vetture (nulla di grave ... solo una questione sui nomi)

2) Queste classi che alla fin fine sono poi solamente dei "bean" (hanno delle proprietà) che "modellano" delle entità, non dovrebbero avere alcun metodo per l'I/O!! Insomma, non è appropriato/pulito che tu metta metodi tipo inserisci()/stampa(). Questa gestione dell'I/O andrebbe fatta altrove.

3) Per costruttori e metodi in generale metti i nomi dei parametri uguali ai nomi dei campi (cosa che tra l'altro ti evita di "inventare" altri nomi!). Questo sarebbe un caso di "shadowing" ma è generalmente tipico e accettato:

codice:
    public void setTarga(String targa){
    	this.targa = targa;
    }
4) Certi campi li hai messi 'protected'. Certo ... è una possibilità. Ma a meno che ci siano altri requisiti/necessità particolari (e nel tuo caso non ce ne sono), meglio tenerli 'private', che tanto hai comunque i "getter" per leggerli.

5) class Optional extends Automobile
Questo no, concettualmente. Un Optional non è-una automobile!!! (come una stanza non è una casa!).
Una automibile semmai ha degli optional (come una casa ha delle stanze).

Quindi togli questa estensione. E se vuoi che una automobile abbia degli optional, in Automobile farai in modo che contenga una "collezione" di Optional.