Esercizio 2.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Oggetti Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
Si consideri il seguente programma: class Up extends Object { public static int x; public int y; public static void metodo(Up o) {Up w=o.metodo1(x); o.y=w.y+6;}
Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
PRIMO ESERCIZIO (del ) Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
Overriding.
Soluzione Esercizio - Classe Vettore
Approfondimento delle classi
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
Selezione (=scelta) con “if-else”
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
void binario(int n); …………………
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Programmazione concorrente
Problema dei Contratti Telefonici
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Timer Animazioni.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
estensione (con piccole varianti) di quella in
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in FONDAMENTI DI PROGRAMMAZIONE.
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Metodologie di Programmazione Esercizi sulla semantica di Java.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
Esercizio 2. Si mostri l’evoluzione dello stato (ambiente di classi, heap, pila) durante la valutazione delle seguenti dichiarazioni di classe nei punti.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
1 Invocazione di metodi Com := Path Id (Expr_list) 4 path trattati come nelle variabili  path p’ 4 Risoluzione del nome: Ide * (Ide | Loc) * Cenv * Heap.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Espressioni 4 dato che non abbiamo previsto inizializzazioni per le variabili (statiche e di istanza) all’interno delle classi, le espressioni possono.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Esercizi.
10. Programmazione Ricorsiva Ing. Simona Colucci
LE CLASSI ASTRATTE.
Oggetti Java.
Composizioni di classi
Ricorsione 16/01/2019 package.
Java Costruttore di copia e GetStatus.
Ese 2 (del 31 Marzo 2004).
Ese 1 (del 31 Marzo 2004).
Ese 3 (del 3 Aprile 2003).
Transcript della presentazione:

Esercizio 2

Si mostri l’evoluzione dello stato (ambiente di classi, heap, pila) durante la valutazione delle seguenti dichiarazioni di classe nei punti (1)-(6) durante l’esecuzione del metodo main. public class Up extends Object { public static int x; public int y; public Up met1() { int y=0; y=this.y+3; this.y=x+2; return this; (5) } public void met2() {x=y+y; y=this.y+1;} {x=2;y=x+1;} } public class Down extends Up { public int z; public Up met1() {int y=0; met2(); (6) this.y=y+1; z=y + this.y; return this; } {z=y-1;} } public class Princ extends Object { public static void main() { Up p1 = new Down(); (1) Up p2=p1.met1(); (2) Up p3=new Up(); (3) p1=p3.met1(); (4) } }

Ambiente delle classi 0 Nome classe Classe ereditata Variabili e metodi statici Variabili e metodi non statici Princ Object main --- Down y Up DescrUp z Down DescrDow Up 3 met1 Descrmet1 met2 Descrmet2 m2 Up y Up DescrUp x met1 Descrmet1 Object 2 1 met2 Descrmet2 m1 Object

Ambiente delle classi 0 Descrmet1 = < -, {int y=0; y=this.y+3; this.y=x+2; return this;},Up> Descrmet2 = <-, {x=y+y; y=this.y+1;}, Up> DescrUp = <-, {x=2;y=x+1}, Up> Descrmet1 = <-, {int y=0; met2(); this.y=y+1; z=y + this.y; return this;}, Down> Overriding del metodo met1 DescrDown = <-, {x=2;y=x+1; z=y-1}, Down> Ereditarieta' sul costruttore

Stato iniziale: <0 , s0 , x0 > r0 : Ambiente delle classi x0 : Heap vuota s0 : Contiene il record di attivazione di main Princ Pila dei Frames vuota

Prima Istruzione del main: Up p1 = new Down() (1) < Up p1 = new Down();,0 , s0 , x0 > com < 1 , s1 , x1 > Down 3 y l1 m2' 2 z x1 Creazione di un oggetto: Copia del frame e dell'ambiente dei metodi di istanza da Down. Valutazione del costruttore (come metodo di istanza) : {x=2;y=x+1;z=y-1;}

Princ m2' m2' = instantiate (m2,l1) ! Il valore ritornato e’ assegnato alla variabile p1 nel frame al top della pila nel record di attivazione corrente Princ Down 3 y l1 p1 l1 m2' 2 z x1 s1 Istanziato per l1: m2' = instantiate (m2,l1) ! 1 2 x

Seconda Istruzione del main: Up p2 = p1.met1() (2) < Up p2 = p1.met1(); , 1 , s1 , x1 > com < 2, s2 , x2 > < met1, l1, 1 , s1 , x1 > fmetm2'(met1) Stato nel punto (6): l1 y Down 2 6 x 4 y Princ l1 m2' p1 l1 2 z x1 ' s1 '

Stato nel punto (2): < 2 , s2, x2 > 6 x Down Princ p1 l1 1 y p2 l1 m2' 1 z x2 s2

Terza Istruzione del main: Up p3 = new Up() (3) < Up p3 = new Up(); , 2 , s2 , x2 > com < 3 , s3 , x3 > l1 x3 1 y Down Princ m2' 1 z l2 l1 p1 p2 l2 p3 3 2 x Up 3 y m2'' s3

Quarta Istruzione del main: Up p1 = p3.met1() (4) < Up p1 = p3.met1(), 3 , s3 , x3 > com < 3, s4 , x4 > < met1, l2, 3 , s3 , x3 > fmet m2'' (met1) Stato nel punto (5): l2 l1 x4 1 y Down y 6 3 2 x m2' 1 z Princ l2 Up /// 4 y m2'' s3 '

Princ m2' m2'' Stato nel punto (4) l1 x4 1 y Down 1 z l2 3 2 x Up 4 y