Composizione:
Ereditarietà: è uno dei meccanismi fondamentali della programmazione ad oggetti
Occorre fare attenzione ad inizializzare oggetti componenti di una classe:
La relazione di ereditarietà equivale alla relazione di inclusione tra gli insiemi
Dire che una classe $B$ eredita un’altra $A$ equivale a dire che $B$ ha sicuramente tutti gli attributi ed i metodi di $A$
Ereditando $A$ possiamo estendere la sua definizione completando $B$
Si usa la composizione quando una classe deve fornire la funzionalità realizzate in altre classi già esistenti
Si usa l’ereditarietà quando la nuova classe deve presentare un’estensione dell’interfaccia della vecchia classe
Esiste però anche un altro motivo, di ordine pratico, per cui conviene usare l’ereditarietà, oltre quello di descrivere un sistema secondo un modello gerarchico; questo secondo motivo è legato esclusivamente al concetto di riuso del software
In alcuni casi si ha a disposizione una classe che non corrisponde esattamente alle proprie esigenze; anzichè scartare del tutto il codice e riscriverlo, si può seguire con l’ereditarietà un approccio diverso, costruendo una nuova classe che eredita il comportamento di quella esistente, salvo che per i cambiamenti che si ritiene necessario apportare