La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.

Presentazioni simili


Presentazione sul tema: "Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe."— Transcript della presentazione:

1 Esercizio 2

2 Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe e l'esecuzione del metodo main (nei punti (1)--(6) public class Up extends Object { public static int x; public int y; public static void set (int i) {x=i+1;} public Up metodo (int i) { set(i); Up p1=new Up(); p1.y=y+i; p1.x=x; \\ (1) return p1;} {y=x;} public class Down extends Up { public int z; public Up metodo (int i) { set(i); Down p1=new Down(); p1.y=y-i; p1.z=x+y; \\ (2) return p1;} {z = 2;} } public class Princ extends Object { public static void main () { Up p1 = new Up (); \\ (3) Up p2 = p1.metodo(2); \\ (4) Up p3= new Down(); \\ (5) Up p4= p3.metodo(5); \\ (6)}

3 Ambiente delle classi 0 Object Up Down Princ Variabili e metodi non staticVariabili e metodi staticClasse ereditataNome classe Object Up Object main--- 0x Descr set set Descr met1 metodo Descr Up Up 0y z 0y Descr met2 metodo Descr Dow Down Descr Up Up 3 3

4 Descr set = Descr met1 = Descr Up = Ambiente delle classi 0 Descr met2 = Descr Down = Ereditarieta' sul costruttore Overriding del metodo metodo

5 Stato iniziale: : Ambiente delle classi : Heap vuota : Contiene il record di attivazione di main Princ Pila dei Frames vuota

6 Prima Istruzione del main: Up p1 = new Up() (3) com Creazione di un oggetto: l1l1 ' Up Copia del frame e dell'ambiente dei metodi di istanza da Up. 0y Valutazione del costruttore (come metodo di istanza) : {y=x;}

7 Il valore ritornato e assegnato alla variabile p1 nel frame al top della pila nel record di attivazione corrente l1l1 Princ l1l1 p1p1 ' Up 0y Istanziato per l 1 : ' = instantiate (,l 1 ) !

8 Seconda Istruzione del main: Up p2 = p1.metodo(2) fmet '(metodo) ' (metodo) = /// Princ l1l1 2i ' Push del Record di attivazione com

9 Stato nel punto (1): C 1 = { set(i); Up p1=new Up(); p1.y=y+i+1; p1.x=x;return p1 ;} /// Princ l1l1 2i l2l2 p1 ' l2l2 '' Up 2y l1l1 ' 0y

10 Valutazione di set(i) Object Up Down Princ Object Up Object ---main 3x Descr set set Descr met1 metodo Descr Up Up 0y z 0y Descr met2 metodo Descr met1 Down Descr Up Up 3 3 1

11 Stato nel punto (4) com l2l2 '' Up 2y l1l1 ' 0y Princ l1l1 p1p1 l2l2 p2p2 Istanziato per l 2 : '' = instantiate (,l 2 ) !

12 Terza Istruzione del main: Up p3 = new Down() (5) com Istanziato per l 3 : ' = instantiate (,l 3 ) ! l2l2 '' Up 2y l1l1 ' 0y l3l3 ' Down 3y 2z Creazione nuovo oggetto. Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3

13 Quarta Istruzione del main: Up p4 = p3.metodo(5) com fmet ' (metodo) '' (metodo) = C 2 = { set(i); Down p1=new Down(); p1.y=y-i; p1.z=x+y; return p1 ;}

14 Valutazione di set(i) Object Up Down Princ Object Up Object ---main 6x Descr set set Descr met1 metodo Descr Up Up 0y z 0y Descr met2 metodo Descr met1 Down Descr Up Up 3 3 2

15 Stato nel punto (2): C 2 = { set(i); Down p1=new Down(); p1.y=y-i; p1.z=x+y; return p1 ;} /// Princ l3l3 5i ' ////// l2l2 l1l1 l4l4 '' Down y 9z ////// l3l3 -2 instantiate…

16 Stato finale (6) ////// l2l2 l1l1 l4l4 '' Down y 9z ////// l3l3 -2 Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3 l4l4 p4p4 instantiate


Scaricare ppt "Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe."

Presentazioni simili


Annunci Google