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 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Carnielli Efrem: Programmazione a componenti<br />
Def<strong>in</strong>izione ed uso <strong>di</strong> classi, oggetti ed <strong>in</strong>terfacce<br />
Tale classe sfrutta le funzionalità delle superclassi B e C ere<strong>di</strong>tando i meto<strong>di</strong> f(),<br />
g(),l(), mentre sovrascrive il metodo h.<br />
Anche l’object composition, pur essendo un metodo <strong>di</strong>fferente, ha come scopo il<br />
riutilizzo delle funzionalità. Gli oggetti <strong>in</strong>fatti sono composti per riottenere<br />
funzionalità più complesse. Questo approccio richiede che gli oggetti abbiano<br />
<strong>in</strong>terfacce ben def<strong>in</strong>ite essendo l’<strong>in</strong>terno degli oggetti sconosciuto. Siccome gli<br />
oggetti sono trattati solo come delle "black boxe," tale tipo <strong>di</strong> riuso è chiamato blackbox<br />
reuse.<br />
h<br />
l<br />
B C<br />
f c.g()<br />
g<br />
Figura 7.20. Object composition: la classe D ere<strong>di</strong>ta da B ed è composta da C<br />
In questo caso abbiamo che D ere<strong>di</strong>tà h() e l(), è composta da C ma sovrascrive g().<br />
Pren<strong>di</strong>amo un oggetto c (c:C) che chiama g(), tale funzione sarà quella dell’oggetto<br />
c, e non quella def<strong>in</strong>ita <strong>in</strong> D.<br />
Un oggetto d:D può qu<strong>in</strong><strong>di</strong> accedere alla g() <strong>di</strong> D tramite d.g() e può altresì<br />
accedere alla g <strong>di</strong> C tramite il proprio metodo f, qu<strong>in</strong><strong>di</strong> con d.f().<br />
Abbiamo qu<strong>in</strong><strong>di</strong> un oggetto <strong>in</strong>terno (<strong>in</strong>ner object) c ed un oggetto esterno (outer<br />
object) d.<br />
La composizione nasce da un’idea semplice: se un oggetto non ha modo <strong>di</strong><br />
eseguire qualche task personalmente, può <strong>in</strong>viare messaggi ad altri oggetti ,<br />
D<br />
f<br />
g<br />
182