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

L’implementazione <strong>di</strong> co<strong>di</strong>ce <strong>di</strong> g chiamato da f è quella <strong>di</strong> B; la chiamata b.f()<br />

restituisce sempre 2.<br />

Supponiamo ora <strong>di</strong> avere un oggetto d istanza <strong>di</strong> una classe D, che ere<strong>di</strong>ta da B, e<br />

che sovrascrive g come nella figura sotto.<br />

f<br />

g<br />

B<br />

Figura 7.23. la classe D ere<strong>di</strong>ta da B e sovrascrive il metodo g<br />

La funzione g() è così implementata:<br />

g(){<br />

g(){<br />

return return 3<br />

3<br />

}<br />

Se effettuo d.f(), la f che chiamo <strong>in</strong> d è quella <strong>di</strong> B, mentre la g (chiamata nel corpo<br />

<strong>di</strong> f) è quella <strong>di</strong> D.<br />

Il collegamento è ritardato perchè conosciuto solo all’ultimo momento, cioè a run<br />

time, per questo motivo il collegamento viene def<strong>in</strong>ito ritardato.<br />

Il Late b<strong>in</strong>d<strong>in</strong>g potente nella programmazione a oggetti è pericoloso <strong>in</strong><br />

programmazione a componenti, perchè parlo <strong>di</strong> oggetti istanziati chissà dove. I<br />

componenti, <strong>in</strong>fatti, vengono collegati a run time sod<strong>di</strong>sfacendo l’<strong>in</strong>terfaccia;<br />

questo è pericoloso perchè come abbiamo visto l’<strong>in</strong>terfaccia è debole poiché non ho<br />

g<br />

D<br />

187

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

Saved successfully!

Ooh no, something went wrong!