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.

..<br />

..<br />

b:B; b:B; // // creo creo un un oggetto oggetto <strong>di</strong> <strong>di</strong> tipo tipo B<br />

B<br />

f(b); f(b); //chiamo //chiamo //chiamo la la la funz funzione funz ione f passando ‘b’ <strong>in</strong> <strong>in</strong>put<br />

Carnielli Efrem: Programmazione a componenti<br />

Def<strong>in</strong>izione ed uso <strong>di</strong> classi, oggetti ed <strong>in</strong>terfacce<br />

Le due chiamate alla funzione f nel listato precedente (passando prima un oggetto<br />

<strong>di</strong> tipo A e poi uno <strong>di</strong> tipo B) sono entrambe valide perché i gli oggetti <strong>di</strong> tipo A o B<br />

implementano l’<strong>in</strong>terfaccia I1. La possibilità <strong>di</strong> usare ‘a’ o ‘b’ <strong>in</strong><strong>di</strong>st<strong>in</strong>tamente<br />

prende il nome <strong>di</strong> sostituibilità.<br />

7.6 Sostituibilità<br />

Per spiegare cosa <strong>in</strong>ten<strong>di</strong>amo per sostituibilità partiamo da una funzione f (a:I1),<br />

che accetta <strong>in</strong> <strong>in</strong>put un’<strong>in</strong>terfaccia I1={op1,op2} implementata da A e B.<br />

Consideriamo una seconda <strong>in</strong>terfaccia I2={op1,op2,op3} implementata da C. È<br />

possibile passare alla funzione f un’<strong>in</strong>terfaccia <strong>di</strong> tipo I2 perché I2 è un<br />

sopra<strong>in</strong>sieme <strong>di</strong> I1 <strong>in</strong> quanto contiene tutte le sue operazioni più altre che <strong>in</strong> questo<br />

caso non verranno utilizzate.<br />

7.7 Tipi e semantica debole<br />

Per andare a def<strong>in</strong>ire i tipi partiamo dall’<strong>in</strong>terfaccia, e ripren<strong>di</strong>amo un esempio<br />

precedente.<br />

174

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

Saved successfully!

Ooh no, something went wrong!