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:

Classe padre e figlia
Superclasse e sottoclasse
Classe base e derivata

L'ereditarietà può inoltre essere:

  • semplice, quando la classe figlia deriva al più da una classe padre

    Classe padre e figlia


  • multipla, quando la classe figlia deriva da più classi padre

    Classe padre e figlia


    L'ereditarietà multipla presenta diverse complicazioni per cui, come approfondiremo più avanti, non tutti i linguaggi di programmazione ad oggetti la supportano.

Esempio - Persona, lavoratore, studente
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:


Classe padre e figlia