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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A A s;<br />

s;<br />

s=new s=new A();<br />

A();<br />

Carnielli Efrem: Programmazione a componenti<br />

Pr<strong>in</strong>cipi <strong>di</strong> progettazione<br />

L'immag<strong>in</strong>e sottostante (figura 3.1) vuole mettere <strong>in</strong> evidenza che l'oggetto non<br />

<strong>in</strong>corpora le implementazioni delle funzioni, ma solo un riferimento al code<br />

segment. Questi code segment potrebbero trovarsi non solo fuori dalla cache ma<br />

anche dalla ram, e l'esecuzione delle funzioni potrebbe provocare una<br />

commutazione <strong>di</strong> contesto. Questo non significa che non dobbiamo utilizzare<br />

funzioni, ma bensì che devono essere utilizzate <strong>in</strong> maniera adeguata.<br />

Se si tratta <strong>di</strong> Java l'oggetto viene sempre istanziato <strong>in</strong> memoria heap.<br />

a<br />

b<br />

c<br />

f() {...}<br />

g() {...}<br />

A<br />

Creazione<br />

dell’oggetto<br />

Figura 3.1. Classi, funzioni e code segment<br />

3.1.2 Record e stack <strong>di</strong> attivazione<br />

Ora consideriamo il seguente frammento <strong>di</strong> co<strong>di</strong>ce:<br />

...<br />

A A s s = = new new A(); A();<br />

A();<br />

...<br />

z=s.f(2);<br />

z=s.f(2);<br />

...<br />

a<br />

b<br />

c<br />

f()<br />

g()<br />

s<br />

Code segment<br />

Code segment<br />

Qui vado a creare un'istanza della classe A, poi vado a richiamare la funzione f <strong>di</strong><br />

49

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

Saved successfully!

Ooh no, something went wrong!