Sto leggendo un libro su concetti generali orientati agli oggetti per cercare di acquisire una solida comprensione di tutto. Una cosa che mi sta buttando fuori è la differenza tra ereditarietà e composizione. So che in termini di ereditarietà, è "is-a" con la sottoclasse. Come una classe Employee eredita dalla classe Person, perché un dipendente è "una persona". La sottoclasse di Composition è "ha-a". Ad esempio, una classe Car eredita dalla classe del Volante perché l'auto "ha-un" volante.
Fantastico, finora. Ma ... questa non è ancora eredità? Comprendo la differenza tra "is-a" e "has-a". Capisco anche che Composition sta fondamentalmente combinando più classi per creare un'altra classe che contiene tutti quegli oggetti. Ho due domande:
- La composizione non è ancora una forma di ereditarietà in qualche modo?
- Scrivendo questo, forse ho risposto alla mia stessa domanda. In Objective-C, utilizziamo i protocolli per specificare ciò che deve essere ereditato e ciò che è facoltativo. Sta semplicemente lanciando un protocollo nell'intestazione che cosa distingue l'ereditarietà e la sottoclasse? Usiamo i protocolli sia nell'ereditarietà che nella composizione?
Comprendo abbastanza bene la differenza, e so come utilizzare ciascuno attraverso i miei programmi. Immagino che sia solo una questione di semantica, se la composizione è davvero una forma di ereditarietà o meno.