Metodologie di Programmazione Esercizi sulla semantica di Java.

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.
Costruttori e Distruttori
Informatica Recupero debito quarto anno Terzo incontro.
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.
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.
Overriding.
Soluzione Esercizio - Classe Vettore
Approfondimento delle classi
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.
Java base IV: Java e la programmazione O.O.
Le funzioni a tempo di esecuzione
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
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: ________________________________________________________________________________.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
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.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Astrazione di dati Dati Astratti: cosa e perchè Dati Astratti: due meccanismi differenti Dati Astratti: due meccanismi differenti Astrazione e incapsulamento.
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.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
estensione (con piccole varianti) di quella in
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
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.
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)
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.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
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 Laurea Ingegneria Informatica Fondamenti di Informatica
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.
Ese 2 (del 31 Marzo 2004).
Esercizio 2.
Transcript della presentazione:

Metodologie di Programmazione Esercizi sulla semantica di Java

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: public class Up extends Object { public static int x; public int y; public static void set (int i) {x=i;} public Up metodo (Up o) {Up w = new Up(); w.y=y+o.y; return w;} {y=x+1;} } public class Down extends Up { public int z; public Up metodo (Up o) {y=o.y; z=x+z; return o;} {z=3;} } public class Princ extends Object { public static void main() { Up p1 = new Up(); Up p2 = p1.metodo(p1); Up p3 = new Down(); Down.set(5); Down p4 = new Down(); p3 = (Down) p4.metodo(p3); }

Ambiente delle classi  0 Object Up Down Princ Variabili e metodi non staticVariabili e metodi staticClasse ereditataNome classe Object Up Object main--- 0x Descr set set Descr met1 metodo Descr Up Up 0y 11 22 11 22 0z 0y Descr met2 metodo Descr Dow Down Descr Up Up 33 33

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

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 Up();  com  Creazione di un oggetto: l1l1 '' Up Copia del frame e dell'ambiente dei metodi di istanza da Up. 1y Valutazione del costruttore (come metodo di istanza) : {y=x+1;}

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

Seconda Istruzione del main: Up p2 = p1.metodo(p1);  com Valutazione dell’espressione p1.metodo(p1). Il metodo funzionale e’ simile ai metodi void, ritorna un valore. Dichiarazione: il valore e’ associato alla variabile p2 nel frame al top della pila dei frames nel record di attivazione corrente

Valutazione dell’espressione: Ricerca del metodo a partire da l 1 (risultato della valutazione del path)  fmet   '(metodo)   ' (metodo) = C 1 = {Up w = new Up(); w.y=y+o.y; return w;}  com /// Princ l1l1 l1l1 o   ' p1.metodo(p1) Push del Record di attivazione

Valutazione del corpo del metodo: C 1 = {Up w = new Up(); w.y=y+o.y; return w;} /// Princ l1l1 l1l1 o l2l2 w '' w.y = y + o.y l2l2 this (l 1 ) parametro (l 1 ) 11 l2l2   '' Up 2y l1l1 '' 1y 

Dichiarazione  com  l2l2   '' Up 2y l1l1 '' 1y Princ l1l1 p1p1  l2l2 p2p2 Istanziato per l 2 :   '' = instantiate (  ,l 2 ) !

Terza Istruzione del main: Up p3 = new Down();  com Istanziato per l 3 :   ' = instantiate (  ,l 3 ) !  l2l2   '' Up 2y l1l1 '' 1y l3l3 '' Down 1y 3z Creazione nuovo oggetto.  Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3

Quarta Istruzione del main: Down.set(5);  com Object Up Down Princ Object Up Object ---main 0x Descr set set Descr met1 metodo Descr Up Up 0y 11 22 11 22 0z 0y Descr met2 metodo Descr met1 Down Descr Up Up 33 33 00 Modifica ambiente delle classi:

Quarta Istruzione del main: Down.set(5);  com Object Up Down Princ Object Up Object ---main 5x Descr set set Descr met1 metodo Descr Up Up 0y 11 22 11 22 0z 0y Descr met2 metodo Descr met1 Down Descr Up Up 33 33 11 Modifica ambiente delle classi:

Quinta Istruzione del main: Down p4 = new Down();  com Istanziato per l 4 :   '' = instantiate (  ,l 4 ) !  Creazione nuovo oggetto. ////// l2l2 l1l1 l4l4   '' Down 6y 3z ////// l3l3 {y = x + 1;} (in  1 x vale 5) !  Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3 l4l4 p4p4

Sesta Istruzione del main: p3 = (Down) p4.metodo(p3);  com Valutazione del metodo funzionale:  fmet   '' (metodo) La ricerca parte da l 4 !   '' (metodo) = C 2 = {y = o.y; z = x + z; return o;} Modifica solo la heap, perche’ il metodo ritorna l3 !!!

Valutazione del corpo del metodo  com /// Princ l4l4 l3l3 o   ' Push del Record di attivazione La valutazione di {y = o.y; z = x + z; return o;} modifica l'oggetto in l 4 e ritorna o (l 3 ) non modificato! this (l 4 ) parametro (l 3 )

 Object Invariato l1l1 p1p1 l2l2 p2p2 l3l3 p3p3 l4l4 p4p4  Modifica di l4 ////// l2l2 l1l1 l4l4   '' Down 1y 8z ////// l3l3 {y = o.y; z=x+z;} (in  1 x vale 5) !