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