Esercizio 2. Si mostri l’evoluzione dello stato (ambiente di classi, heap, pila) durante la valutazione delle seguenti dichiarazioni di classe nei punti.

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.
Costruttori e Distruttori
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
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.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
Semantica Operazionale di un frammento di Java: lo stato
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.
Java base IV: Java e la programmazione O.O.
Le funzioni a tempo di esecuzione
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A /02/2008 Alessandra Toninelli
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.
Lo sviluppo top down Le funzioni
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
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.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Classi: class Foo { public int x; public int y; public void swap (boolean z) { if (z) {int temp = x; x = y; y = temp;}; }; } Ambienti per le classi: Cenv.
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 Progettazione dettagliata di un Tipo di Dato Astratto: l’ambiente di metodi.
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,
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.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
FUNZIONI: IL MODELLO A RUN-TIME 1) creazione di una nuova attivazione (istanza) del servitore 2) allocazione di memoria per i parametri e per le variabili.
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:
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Introduzione a Java. Java Linguaggio Object-Oriented La maggior parte dei dati manipolati dai programmi e’ contenuta in oggetti La principale forma di.
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.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Ese 2 (del 31 Marzo 2004).
Esercizio 2.
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 Object Up Down Princ Variabili e metodi non staticiVariabili e metodi staticiClasse ereditataNome classe Object Up Object main--- 0x 11 0z 0y Descr met1 met1 Descr Dow Down Descr Up Up 33 22 0y Descr met2 met2 Descr met1 met1 Descr Up Up 22 11 Descr met2 met2

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

Stato iniziale:  : Ambiente delle classi  : Heap vuota  : Contiene il record di attivazione di main Princ Pila dei Frames vuota

Prima Istruzione del main: Up p1 = new Down() (1)  com  Creazione di un oggetto: l1l1 '' Down Copia del frame e dell'ambiente dei metodi di istanza da Down. 3y Valutazione del costruttore (come metodo di istanza) : {x=2;y=x+1;z=y-1;} 2z

Il valore ritornato e’ assegnato alla variabile p1 nel frame al top della pila nel record di attivazione corrente Princ l1l1 p1p1  Istanziato per l 1 :   ' = instantiate (  ,l 1 ) !  l1l1 '' Down 3y 2z 11 2x

Seconda Istruzione del main: Up p2 = p1.met1() (2)  fmet   '(met1) Princ l1l1   '  com 0y  ' ' l1l1 '' Down 4y 2z l1l1 p1p1 22 6x Stato nel punto (6):

Stato nel punto (2): Princ   l1l1 '' Down 1y 1z l1l1 p1p1 22 6x l1l1 p2p2

Terza Istruzione del main: Up p3 = new Up() (3)  com  l2l2   '' Up 3y l1l1  Princ l1l1 p1p1 l1l1 p2p2 l2l2 p3p3 '' Down 1y 1z 33 2x

Quarta Istruzione del main: Up p1 = p3.met1() (4)  com  fmet   '' (met1) /// Princ l2l2   ' 6y 33 2x Stato nel punto (5):  l2l2   '' Up 4y l1l1 '' Down 1y 1z

Stato nel punto (4)  l2l2   '' Up 4y l1l1  Princ l2l2 p1p1 l1l1 p2p2 l2l2 p3p3 '' Down 1y 1z 33 2x