15.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!