geeno97 ha scritto:
Questa è la classe animale...puoi dirmi perche devo farla astratta?
Le classi Animale/Cane/Gatto in generale vanno bene e sono strutturalmente corrette (campi private ok, costruttori ok, metodi getter/setter public ok).
C'è qualche piccolo errorino di scrittura. In due punti Sring invece che String e in Gatto hai il costruttore che si chiama Cane. Questi errori li scopriresti comunque quando tenti di compilare.
Concettualmente si potrebbe discutere. razza è solo in Cane ma anche per i gatti ci sono razze diverse. Cosa similare per il colore.
Comunque una classe si marca
abstract quando non ha senso che venga istanziata, perché magari (tipicamente) rappresenta un concetto molto generalizzato ed appunto astratto. Scenario simile: una classe Solido con sotto-classi Cubo, Sfera, ecc... Ha senso poter fare: new Solido() ? Solido de chè?? In tal caso no, non ha molto senso, Solido andrebbe abstract.
Nel tuo caso, ha senso poter creare un oggetto proprio Animale? Beh .. dipende. Per il momento lasciala pure così, come classe "concreta".
geeno97 ha scritto:
Il mio dubbio è su come gestire senza classe di collaudo i metodi per aggiungere o rimuovere un animale dall'insime
Per "classe di collaudo" intendi una classe di "unit test" (con es. JUnit) o una classe con un banale main() di prova ?
Cosa hai scritto per la classe Negozio?