Ci sono diverse questioni, sia concettuali che tecniche. Innanzitutto non è buona cosa usare le classi come delle semplici "strutture" da usare solo come deposito di dati ... un po' come le strutture del "C", tanto per dire. Sarebbe necessario realizzare una corretta "incapsulazione" dello stato nelle classi.
Le classi le hai pure dichiarate dentro la classe AreaFigure. Tecnicamente non è sbagliato, Java permette la dichiarazione di tipi dentro altri tipi. Ma se non ci sono motivi particolari, dichiarale tranquillamente come "top-level", cioè fuori da ogni classe.
Poi è vero che Figura è la classe base di Quadrato e Rettangolo ma questo non vuol dire che deve avere una proprietà "lato" soltanto perché ti fa comodo poterla "ereditare" nelle due sottoclassi che in effetti necessitano di un "lato". E se ti faccio una sottoclasse Cerchio???
Bisognerebbe pensare meglio a cosa rappresentano le classi e quindi strutturare la gerarchia di classi in modo da suddividere in modo corretto il compito tra le varie classi.
Ad esempio: ha senso poter creare una istanza di Figura?? Credo proprio di no. In questo senso una figura non è una cosa concreta ... è un termine generico. In tal caso la classe Figura sarebbe anche più appropriato marcarla come 'abstract'.
Nel tuo codice vedo che fai una chiamata ricorsiva a Riconosci(). Non è proprio un errore ma normalmente una cosa del genere non ha senso e non serve, se devi solo far ripetere un blocco di codice. È più appropriato sfruttare i cicli, ad esempio un do-while.

Rispondi quotando