Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Interfacce Java.
Oggetti Java.
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 7 Programmazione con metodi e classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004.
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.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
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.
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
II ESONERO Modelli di Sistemi Biologici II 11/06/2009h11 A.40 TEMA 1 1.Si consideri il modello minimo del glucosio (6) rappresentato dalle seguenti equazioni:
Soluzione Esercizio - Classe Vettore
Selezione (=scelta) con “if-else”
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Diagramma di flusso del problema del Supermercato.
void binario(int n); …………………
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
1 Simulated multiple inheritance Sandro Pedrazzini Approfondimento Simulated multiple inheritance in Java.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Conversione da base 10 a base X (Utilizzo della pila)
Collection & Generics in Java
Esercizi.
Stack Già visto l’altra volta senza gestione eccezioni, le prime tre slide servono solo come ripasso, dalla quarta argomento nuovo class Stack { int data[];
15/11/2004Laboratorio di Programmazione - Luca Tesei1 Costrutto condizionale Scelte, blocchi.
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
1 Implementazione di (ambiente e) memoria nel linguaggio imperativo.
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.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
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
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
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.
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.
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 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
10. Programmazione Ricorsiva Ing. Simona Colucci
Ricorsione 16/01/2019 package.
Ese 2 (del 31 Marzo 2004).
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; public Up metodo (int i) { set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; \\ (2) return p1;} {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 Object Up Down Princ Variabili e metodi non staticVariabili e metodi staticClasse ereditataNome classe Object Up Object main--- 0z Descr set set Descr met1 metodo Descr Up Up 0y x 0y Descr met2 metodo Descr Dow Down Descr Up Up 3 3

Descr set = Descr met1 = Descr Up = Ambiente delle classi 0 Descr met2 = <i, { set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1 }, Down> 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. 0y Valutazione del costruttore (come metodo di istanza) : {y=z;} (3)

Il valore ritornato e assegnato alla variabile p1 nel frame al top della pila nel record di attivazione corrente l1l1 Princ l1l1 p1p1 ' Up 0y Istanziato per l 1 : ' = instantiate (,l 1 ) ! Oggetto creato

Seconda Istruzione del main: Up p2 = p1.metodo(2) fmet '(metodo) ' (metodo) = /// Princ l1l1 2i ' Push del Record di attivazione per valutare C 1 com

Stato nel punto (1): C 1 = { set(i); Up p1=new Up(); p1.y=y+i+1; p1.z=z;return p1 ;} /// Princ l1l1 2i l2l2 p1 ' l2l2 '' Up 3y l1l1 ' 0y set(i) modifica lambiente delle classi (vedi dopo) in l2 y ha valore 3 allinizio (y=z) lassegnamento modifica y di l2 non si modifica oltre la var. statica z

Valutazione di set(i): z=i+1 Object Up Down Princ Object Up Object ---main 3z Descr set set Descr met1 metodo Descr Up Up 0y x 0y Descr met2 metodo Descr met1 Down Descr Up Up 3 3 1

Stato nel punto (4) com l2l2 '' Up 3y l1l1 ' 0y 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 3y l1l1 ' 0y l3l3 ' Down 3y 2x Costruttore y=z e x=2 Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3 (5)

Quarta Istruzione del main: Up p4 = p3.metodo(5) com fmet ' (metodo) '' (metodo) = C 2 = { set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1 ;} /// Princ l3l3 5i ' Push del Record di attivazione per valutare C 2

Valutazione di set(i): z=i+1 Object Up Down Princ Object Up Object ---main 6z Descr set set Descr met1 metodo Descr Up Up 0y x 0y Descr met2 metodo Descr met1 Down Descr Up Up 3 3 2

Stato nel punto (2): C 2 = { set(i); Down p1=new Down(); p1.y=y+i; p1.x=z+y; return p1 ;} ////// l2l2 l1l1 l4l4 '' Down y 9x ////// l3l3 p1.y=y+i; p1.x=z+y (y di this (l3) vale 3!) 8 /// Princ l3 5i l4l4 p1 '

Stato finale (6) Object Dichiarazione. l1l1 p1p1 l2l2 p2p2 l3l3 p3p3 l4l4 p4p4 instantiate ////// l2l2 l1l1 l4l4 '' Down y 9x ////// l3l3 8