![]() ![]() |
|
Vediamo come usando l'ereditarietà si possono
fattorizzare informazioni comuni a più classi.
Supponiamo di aver definito le classi Studente
e Professore (ad esempio, sviluppando un'applicazione per
la Segreteria della Facoltà):
C'è ridondanza nel codice: variabili di istanza e metodi ripetuti nelle due classi (con lo stesso significato). |
![]() ![]() |
|
Con l'ereditarietà possiamo fattorizzare
le parti comuni in una nuova classe, da cui Studente e Professore ereditano.
Per ovvi motivi, un nome "naturale" per questa classe è Persona.
Vediamo come usando l'ereditarietà si possono fattorizzare informazioni comuni a più classi. |
![]() ![]() |
|
Nella nuova definizione delle due sottoclassi si noti
la maggior compattezza e l'assenza di ridondanza:
|
![]() ![]() |
|
Le classi astratte consentono di usare
questo meccanismo di "fattorizzazione" delle informazioni comuni, anche
quando la superclasse risultante non sarebbe "ben definita".
Supponiamo di avere le classi Sfera
e Cubo:
|
![]() ![]() |
|
Anche qui troviamo ridondanza. Definiamo una classe
Solido
che fattorizza le informazioni comuni. Solido dovrebbe
contenere:
SOLUZIONE: Definire superficie()
e volume() come metodi
astratti, aventi solo l'intestazione ma non l'implementazione. Di conseguenza
Solido
è una classe astratta.
|
![]() ![]() |
|
Alcune cose importanti da ricordare:
|
![]() ![]() |
|
![]() ![]() |