L'ereditarietà
Il concetto di ereditarietà è già stato introdotto parlando dei principi della programmazione
O.O.
L’ereditarietà, infatti, è uno dei principi fondamentali della
programmazione orientata agli
oggetti (OOP), che
consente di creare nuove classi a partire da classi esistenti,
permettendo, alle nuove
classi, di ereditare attributi e metodi già definiti.
Abbiamo anche detto, affrontando le associazioni tra classi UML, che si configura ogni volta che
tra due classi UML si individua una
associazione di specializzazione/generalizzazione, ossia una associazione di tipo IS-A.
Abbiamo, inoltre, aggiunto che la classe da cui si eredita si chiama classe base o padre o
superclasse e la classe che eredita (specializza) si chiama classe derivata o figlia o
sottoclasse.
Sulla base di quanto premesso, aggiungiamo che si può ricorrere all'ereditarietà per diverse
ragioni, riconducibili principalmente alle due situazioni che seguono:
- abbiamo una classe già definita e dobbiamo realizzare una nuova classe i cui oggetti possono essere considerati, a tutti gli effetti, oggetti della prima classe, con caratteristiche e funzionalità aggiuntive
- siamo in fase di progettazione iniziale di una applicazione ed individuiamo che alcune tipologie di oggetti presentano caratteristiche e funzionalità comuni, per cui può essere utile implementare le parti comuni in una classe (base) e derivare da essa le altre classi con le sole caratteristiche e funzionalità specifiche (derivate).
- Riutilizzo del codice: evita la duplicazione di codice, permettendo di sfruttare caratteristiche e funzionalità già implementate
- Maggiore manutenibilità: le modifiche apportate alla superclasse si riflettono automaticamente nelle sottoclassi
- Estendibilità: consente di specializzare, ossia di aggiungere caratteristiche e funzionalità senza modificare il codice esistente e funzionante
- Chiarezza logica e concettuale: aiuta a rappresentare in modo naturale gerarchie e relazioni tra oggetti del mondo reale
