public class Up extends Object { public static int w; public int x;

10
PRIMO ESERCIZIO (del 26-5-2004) Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public static int w; public int x; public void met1() {w=x+4; x=x+1;} {x=3;} } public class Down extends Up { public Up y; public void met2() {y=new Down(); y.x=x+1; y.met1();} public void met1() {x=x+w; w=0;} {x=w;} } public class Princ extends Object { public static void main() { Up p1 = new Up(); p1.w = p1.x + 1; p1.met1(); Down p2 = new Down(); p2.met2(); } }

description

PRIMO ESERCIZIO (del 26-5-2004) Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main:. public class Up extends Object { public static int w; public int x; public void met1() {w=x+4; x=x+1;} {x=3;} } - PowerPoint PPT Presentation

Transcript of public class Up extends Object { public static int w; public int x;

Page 1: public class Up extends Object {   public static int w;   public int x;

PRIMO ESERCIZIO (del 26-5-2004) Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main:

public class Up extends Object {

public static int w;

public int x;

public void met1() {w=x+4; x=x+1;}

{x=3;} }

public class Down extends Up {

public Up y;

public void met2() {y=new Down(); y.x=x+1; y.met1();}

public void met1() {x=x+w; w=0;}

{x=w;} }

public class Princ extends Object {

public static void main() {

Up p1 = new Up();

p1.w = p1.x + 1;

p1.met1();

Down p2 = new Down();

p2.met2(); } }

Page 2: public class Up extends Object {   public static int w;   public int x;

Ambiente delle classi 0

Object

Up

Down

Princ

non static staticClasse ereditataNome classe

Object

Up

Object

main ---

1 2

1

32

w 0 x 0 Up DescrUp

met1 Descrmet1

x 0

y

Up DescrUp

Down DescrDown

met2 Descrmet1

met1 Descr'met1

Page 3: public class Up extends Object {   public static int w;   public int x;

Descrmet1 = <-, {w=x+4; x=x+1; , Up>

DescrUp = <-, {x=3;}, Up>

Descrmet2 = <-, {y=new Down(); y.x=x+1; y.met1();}, Down>

Descr'met1 = <-, {x=x+w; w=0;}, Down>

DescrDown = <-, {x=3;x=w;}, Down>

Ambiente delle classi 0

Page 4: public class Up extends Object {   public static int w;   public int x;

Stato iniziale: <0 , , >

: Ambiente delle classi : Heap vuota : Contiene il record di attivazione di main

PrincPila dei Frames vuota!

Page 5: public class Up extends Object {   public static int w;   public int x;

Prima Istruzione del main: Up p1 = new Up();

< Up p1 = new Up();,0 , , > com < 0 , , >

l1

Princ

l1p1

'

Up

x 3

Page 6: public class Up extends Object {   public static int w;   public int x;

Seconda Istruzione del main: p1.w = p1.x + 1;

< p1.w = p1.x+1; , 0 , , > com < 1 , , >

Modifica solo l'ambiente delle classi. Frame delle variabili statiche di UP:

1 w 0 1' w 4

Page 7: public class Up extends Object {   public static int w;   public int x;

Terza Istruzione del main: p1.met1();

< p1.met1(); , 1 , , > com < 2 , , >

Modifica l'ambiente delle classi e l'heap.

' (met1) = < -, {w=x+4; x=x+1}, l1 >

l1 '

Up1' w 4 1'' w 7

x 4

Page 8: public class Up extends Object {   public static int w;   public int x;

Quarta Istruzione del main: Down p2 = new Down();

< Down p2 = new Down(); , 2 , , > com < 2 , , >

l2

'

Down

l1

'

Up

Princ

l1p1

l2p2

x 7

y

x 4

x=3; x=w;

Page 9: public class Up extends Object {   public static int w;   public int x;

Quinta Istruzione del main: p2.met2();

< p2.met2(); , 2 , , > com < 3 , , >

' (met2) = < -, {y = new Down(); y.x=x+1; y.met1()} , l2 >

'

'

Down

///

x 7

y l3

l3''

Down

x 8

y

y.x = x+1;

In l2 x vale 7

l2

l1

l3

Page 10: public class Up extends Object {   public static int w;   public int x;

Quinta Istruzione del main: p2.met2();

< p2.met2(); , 2 , , > com < 3 , , >

' (met2) = < -, {y = new Down(); y.x=x+1; y.met1()} , l2 >

l2 '

Down

///l1

x 7

y l3

l3

''

Down

x 15

y

'' (met1) = < -, {x=x+w; w=0}, l3 >

x = x + w;

8 7

1'' w 7 1''' w 0

Infine viene modificato l'ambientedelle classi: