Ese 2 (del 31 Marzo 2004).

Slides:



Advertisements
Presentazioni simili
Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Advertisements

Oggetti Java.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in 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.
Le gerarchie di tipi.
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.
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Overriding.
Soluzione Esercizio - Classe Vettore
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
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
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.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
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.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
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:
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.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
10. Programmazione Ricorsiva Ing. Simona Colucci
LE CLASSI ASTRATTE.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Oggetti Java.
Composizioni di classi
Ricorsione 16/01/2019 package.
Java Costruttore di copia e GetStatus.
Esercizio 2.
Ese 1 (del 31 Marzo 2004).
Ese 3 (del 3 Aprile 2003).
Transcript della presentazione:

Ese 2 (del 31 Marzo 2004)

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 z; public int y; public static void set (int i) {z=i+1;} public Up metodo (int i) { set(i); Up p1=new Up(); p1.y=y+i+1; p1.z=z; \\ (1) return p1;} {y=z;} public class Down extends Up { public int x; { set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; \\ (2) {x = 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) }}

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

Ambiente delle classi 0 Descrset = < i, {z=i +1;}, Up> Descrmet1 = <i, {set(i); Up p1=new Up(); p1.y=y+i+1; p1.z=z;return p1;}, Up> DescrUp = <-, {y=z;}, Up> Descrmet2 = <i, {set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1}, Down> Overriding del metodo metodo DescrDown = <-, {y=z; x=2}, Up> 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 Up() < Up p1 = new Up();,0 , s0 , x0 > com < 0 , s1 , x1 > (3) Creazione di un oggetto: l1 m2' Up Copia del frame e dell'ambiente dei metodi di istanza da Up. y Valutazione del costruttore (come metodo di istanza) : {y=z;} x1

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 x1 l1 Princ p1 s1 m2' Up y Istanziato per l1: m2' = instantiate (m2,l1) ! Oggetto creato

Seconda Istruzione del main: Up p2 = p1.metodo(2) < Up p2 = p1.metodo(2); , 0 , s1 , x1 > com < 1 , s2 , x2 > < metodo, l1, 0 , s1 , x1 > fmetm2'(metodo) m2' (metodo) = < i, C1, l1 > /// Princ l1 2 i s1 ' Push del Record di attivazione per valutare C1

Stato nel punto (1): < 1 , s2', x2 > C1 = {set(i); Up p1=new Up(); p1.y=y+i+1; p1.z=z;return p1;} l2 m2'' Up 3 y l1 m2' x2 /// Princ l1 2 i l2 p1 s2' set(i) modifica l’ambiente delle classi (vedi dopo) in l2 y ha valore 3 all’inizio (y=z) l’assegnamento modifica y di l2 non si modifica oltre la var. statica z

Valutazione di set(i): z=i+1 Object Up Down Princ --- main 3 z Descrset set Descrmet1 metodo DescrUp y 1 2 m1 m2 x Descrmet2 3 m3 1

Stato nel punto (4) < 1 , s2 , x2 > < Up p2 = p1.metodo(2); , 0 , s1 , x1 > com < 1 , s2 , x2 > x2 l2 m2'' Up 3 y l1 m2' Princ l1 p1 s2 l2 p2 Istanziato per l2: m2'' = instantiate (m2,l2) !

Terza Istruzione del main: Up p3 = new Down() < Up p3 = new Down(); , 1 , s2 , x2 > com < 1 , s3 , x3 > (5) Istanziato per l3: m3' = instantiate (m3,l3) ! x3 l2 m2'' Up 3 y l1 m2' l3 m3' Down 2 x Costruttore y=z e x=2 s3 Object Dichiarazione. l1 p1 l2 p2 l3 p3

Quarta Istruzione del main: Up p4 = p3.metodo(5) < Up p4 = p3.metodo(5) , 1 , s3 , x3 > com < 2 , s4 , x4 > < metodo, l3, 1 , s3 , x3 > fmet m3' (metodo) m3'' (metodo) = < i, C2, l3 > C2 = {set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1;} /// Princ l3 5 i s3 ' Push del Record di attivazione per valutare C2

Valutazione di set(i): z=i+1 Object Up Down Princ --- main 6 z Descrset set Descrmet1 metodo DescrUp y 1 2 m1 m2 x Descrmet2 3 m3 2

Stato nel punto (2): < 2 , s4', x4> C2 = {set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1;} x4 ////// l2 l1 l4 m3'' Down y 9 x l3 /// Princ l3 5 i l4 p1 s4' 8 p1.y=y+i; p1.x=z+y (y di this (l3) vale 3!)

Object m3'' < 2 , s4 , x4 > Stato finale (6) x4 ////// l2 l1 l4 Down y 9 x l3 s4 Object Dichiarazione. l1 p1 l2 p2 l3 p3 l4 p4 8 instantiate