2. Paso 1 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 1.-Se crea en el área de Clases la clase “Pr” que contiene el método “main” a ejecutar . Area de Clases Pr
3. Paso 2 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 1.-Se crea en el área de Clases la clase “Pr” que contiene el método “main” a ejecutar . 2.-Se invoca el método principal, creando su registro de activación en el stack. Area de Clases Stack Pr Pr.main
4. Paso 3 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 1.-Se crea en el área de Clases la clase “Pr” que contiene el método “main” a ejecutar . 2.-Se invoca el método principal, creando su registro de activación en el stack. 3.-Se crea la variable g de referencia tipo Pr en el stack para el main Area de Clases Stack Pr Pr g:111 Pr.main
5. Paso 4 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 2.-Se invoca el método principal, creando su registro de activación en el stack. 3.-Se crea la variable g de referencia tipo Pr en el stack para el main 4.-Se resuelven las expresiones que se pasan como parámetros al constructor. Area de Clases Stack Pr Pr g:111 Pr.main
6. Paso 5 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 5.-La clase Pr inicia la construcción, creando un objeto, se le asigna el identificador 111 y se le graba su fabricante, que es Pr. Area de Clases Stack Heap Pr Pr g:111 111:Pr Pr.main
7. Paso 6 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 6.-Se añade la variable x al objeto 111 con el valor 0. Está declarada en la clase Pr. Area de Clases Stack Heap Pr Pr g:111 Int x : 0 111:Pr Pr.main
8. Paso 7 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 6.-Se añade la variable x al objeto 111 con el valor 0. Está declarada en la clase Pr. 7.-Se añade la variable String y al objeto 111 . Está declarada en la clase Pr. Area de Clases Stack Heap Pr Pr g:111 Int x : 0 String y 111:Pr Pr.main
9. Paso 8 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 6.-Se añade la variable x al objeto 111 con el valor 0. Está declarada en la clase Pr. 7.-Se añade la variable String y al objeto 111 . Está declarada en la clase Pr. 8.-Se invoca el constructor. Area de Clases Stack Heap Pr Pr g:111 sali Int x : 0 String y 111:Pr Pr.main Expreciones Pr(qw,2)
10. Paso 9 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 7.-Se añade la variable String y al objeto 111 . Está declarada en la clase Pr. 8.-Se invoca el constructor. 9.-Se crea el registro de activación y se realiza el paso de parámetros en el stack. Area de Clases Stack Heap Pr Pr g:111 sali Int x : 0 String y String a5: “qw” Int a2: 2 111:Pr Pr.main Pr Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2)
11. Paso 10 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 9.-Se crea el registro de activación y se realiza el paso de parámetrosen el stack. 10.-Se suma el valor de 3 al de “a5”. El resultado se deja en “y”. La variable a5 está en el registro de activación y “y” en el objeto apuntado por this. Area de Clases Stack Heap Pr Pr g:111 sali Int x : 0 String y : qw3 String a5: “qw” Int a2: 2 111:Pr Pr.main Pr Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2) y=a5+3qw+3qw3
12. Paso 11 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 11.-Se resta el valor de 1 al de “a2”. El resultado se deja en “x”. La variable a2 está en el registro de activación y “x” en el objeto apuntado por this. Area de Clases Stack Heap Pr Pr g:111 sali Int x : 1 String y : qw3 String a5: “qw” Int a2: 2 111:Pr Pr.main Pr Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2) y=a5+3qw+3qw3 X=a2-12-11
13. Paso 12 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 12.-Se termina la ejecución del constructor, se elimina su registro de activación y se regresa el valor de this, que es 111. Se regresa al registro de activación de main. Area de Clases Stack Heap Pr Pr g:111 Sali Regresa Int x : 1 String y : qw3 String a5: “qw” Int a2: 2 111:Pr Pr.main Pr Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2) y=a5+3qw+3qw3 X=a2-12-11
14. Paso 13 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 13.- El valor devuelto se asigna a la variable de referencia g. Area de Clases Stack Heap Pr Pr g:111 Sali Regresa Int x : 1 String y : qw3 111:Pr Pr.main Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2) y=a5+3qw+3qw3 X=a2-12-11
15. Paso 14 publicclass Pr { int x; String y; Pr(String a5, int a2) { y = a5 + 3; x = a2 - 1; } publicstaticvoidmain() { Pr g = new Pr("qw", 2); } } 14.- Termina la ejecución de main, se elimina el registro de activación y termina la ejecución del programa. Area de Clases Stack Heap Pr Pr g:111 Sali Regresa Int x : 1 String y : qw3 111:Pr Pr.main Expreciones Pr( qw , 2) ↓ ↓ Pr(String a5, int a2) y=a5+3qw+3qw3 X=a2-12-11