L'ereditarietà
Il termine ereditarietà indica un principio della programmazione
ad oggetti che permette di definire nuove tipologie di oggetti
riutilizzando le tipologie già
definite ed aggiungendo solo le caratteristiche e le funzionalità
specifiche di queste nuove
entità.
Utilizzando i concetti precedentemente introdotti, possiamo affermare che l'ereditarietà è un
meccanismo che consente di derivare nuove
classi a partire da classi esistenti, definendo solo
gli attributi ed i metodi specifici di queste nuove classi.
Le classi da cui si deriva prendono il nome di classi base o
padre o superclasse, le classi che
derivano vengono anche dette
derivate o figlia o sottoclasse.
L'ereditarietà può essere letta in due direzioni:
- dalla classe padre verso la classe figlia è detta specializzazione, in quanto si specializza la classe base aggiungendo nuove caratteristiche e funzionalità
- dalla classe figlia verso la classe padre è detta generalizzazione, in quanto si generalizza ignorando caratteristiche e funzionalità non proprie della classe padre
Graficamente possiamo sintetizzare con le figure seguenti:
L'ereditarietà può inoltre essere:
-
semplice, quando la classe figlia deriva al più da una classe
padre
-
multipla, quando la classe figlia deriva da più classi
padre
L'ereditarietà multipla presenta diverse complicazioni per cui, come approfondiremo più avanti, non tutti i linguaggi di programmazione ad oggetti la supportano.
Un esempio riepilogativo dei concetti esposti potrebbe essere il seguente.
Immaginiamo di voler rappresentare una generica persona attraverso una classe Persona con delle caratteristiche quali il nome ed il cognome e funzionalità quali camminare e dormire.
Da questa classe possiamo derivare due sottoclassi:
- Lavoratore, che rappresenta una persona impiegata in una specifica azienda, con una caratteristica aggiuntiva relativa all'azienda in cui lavora ed una funzionalità specifica per lavorare
- Studente, che rappresenta una persona iscritta ad un corso di studi, con una caratteristica aggiuntiva relativa alla scuola frequentata ed una funzionalità specifica per studiare
Graficamente potremmo rappresentare la realtà descritta nell'esempio come mostrato nella figura seguente:
