Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Carnielli Efrem: Programmazione a componenti<br />
Def<strong>in</strong>izione ed uso <strong>di</strong> classi, oggetti ed <strong>in</strong>terfacce<br />
chiedendo il loro supporto.<br />
In questo modo, tramite la composizione <strong>di</strong> oggetti si può ottenere le stesse<br />
potenzialità fornite dall’ere<strong>di</strong>tarietà multipla d’<strong>in</strong>terfaccia anche laddove questa<br />
non è concessa per i problemi esplicitati precedentemente (<strong>di</strong>amond <strong>in</strong>heritance<br />
problem).<br />
Sebbene l’ object composition sia molto utile, una possibile domanda da porsi è se<br />
questa possa essere così potente, per il riuso <strong>di</strong> co<strong>di</strong>ce e funzionalità, quanto<br />
l’ere<strong>di</strong>tarietà. Specificatamente, usando l’<strong>in</strong>heritance, un metodo ere<strong>di</strong>tato può<br />
sempre riferirsi all’oggetto ricevente, ad esempio <strong>in</strong> C++ usando il this. Per questo<br />
devo <strong>in</strong>trodurre il concetto <strong>di</strong> delegation. Tramite delegation, l’oggetto ricevente<br />
delega operazioni ad un delegate (uno degli oggetti <strong>di</strong> cui è composto). Lo stesso<br />
effetto (riferendoci all’effetto ottenuto col this) è ottenuto avendo il ricevente che<br />
passa un riferimento a se stesso (cioè un autoriferimento) al delegate (cioè a uno<br />
degli oggetti <strong>di</strong> cui è composto). Usando la delegation, un metodo può sempre far<br />
riferimento al ricevitore orig<strong>in</strong>ale dei messaggi, senza curarsi del numero <strong>di</strong><br />
deviazioni dovuto alla object composition.<br />
Delegation permette alla object composition <strong>di</strong> essere potente tanto quanto<br />
l’ere<strong>di</strong>tarietà nel riuso <strong>di</strong> co<strong>di</strong>ce .<br />
Partiamo da un l<strong>in</strong>guaggio che mi permette l’ere<strong>di</strong>tarietà come <strong>in</strong> figura sotto.<br />
183