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.

Slides:



Advertisements
Presentazioni simili
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Advertisements

Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Esercitazione guidata 1
Paradigma Funzionale Paradigma Imperativo: Programma = transizione di stato Paradigma Funzionale: Programma = valutazione di unespressione La maggior parte.
Programmazione Ingegneria TLC
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
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.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Programmazione in Java (3)
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
Scomposizione di stringhe
Semantica denotazionale algebrica di LW Idea intuitiva: i valori che vogliamo denotare sono: gli statements sono funzioni di trasformazioni di stato (interno)
Semantica Operazionale Strutturata
Oggetti e dati primitivi
Selezione (=scelta) con “if-else”
Programmazione in Java Claudia Raibulet
Java Contardi Carlo A.S. 2008/09.
Diagramma di flusso del problema del Supermercato.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
void binario(int n); …………………
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Programmazione concorrente
Corso di Programmazione in Java – Esercizio n° 001
1 Applet ed HTML Fondamenti di Informatica Corso D.
Attività progettuale in Linguaggi e Modelli Computazionali M
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
1 Un esempio con iteratore: le liste ordinate di interi.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
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
Programmazione in Java
Struttura del programma Intestazione Lista di istruzioni Esempio: Hello { public class Hello { main (String [] args){ public static void main (String []
estensione (con piccole varianti) di quella in
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in FONDAMENTI DI PROGRAMMAZIONE.
Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 1 Liste Introduzione alle.
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
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,
Metodologie di Programmazione Esercizi sulla semantica di Java.
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
Elementi di semantica denotazionale ed operazionale
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.
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.
 classdecl  c  com ,   classdecl  c >  com  classdecl ,   classdecl (prog) Il programma.
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.
Elementi di semantica operazionale
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Dalla programmazione tradizionale al paradigma OO
Transcript della presentazione:

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 Cenv = {Ide  Menv x  x Menv} variabili di istanza: metodi: operazioni sugli oggetti  c = { , y->  },  m )> }  m ={ >

Oggetti: istanze di classe ogni oggetto una differente istanza: istanze differiscono per:: i valori nel frame i metodi non cambiamo Class Foo {....}; Foo obj1 = new Foo; Foo obj2 = new Foo;.... frame per obj1:  1 = {x-> , y->  } frame per obj2:  2 = {x-> , y->  } ({x-> , y->  },  m ) Heap per gli oggetti: Heap Heap = {Loc  Ide x  }

Valori, Classi e Oggetti: una vista grafica Class Foo {public int x; public int y; public void swap (boolean z){ if (z) {int temp = x; x = y; y = temp;}; }; } Class Fie { public int y;} } Foo oj1 = new Foo; Fiepp oj2 = new Fie; boolean b = true;.... L2 Il Nuovo Stato : Class_Env x  x Heap Foo cc Fie  fie x  x  y   foo L1 Foo  x  y  y  Fie altri frames dello stato  oj1 oj2 btt  

Sistema di transizioni per: Semantica dei Comandi S S com ={<  com, T com,  com }  com = { | C  Com,  ,  c   c  Cenv,   Heap }   >  { |  ,   Heap }  >  T com = { |  ,   Heap }  com = {(=),..., tutte le regole che vedremo }

Comandi (nuova semantica)  com >  com  com >  com  com  com >  com (Block) (StmL)  c, ,  >  exp v  (x)≠   c, ,   >  com (=)

 exp tt  cmd >  exp tt  cmd  com >  com  exp ff  cmd >  exp ff  cmd  com >  com (if-tt) (if-ff) Condizionale

 exp ff >  exp ff  com ,  >  com  exp tt  cmd >  exp tt >  cmd >  com  com >  com (W-ff) (W-tt) Iterazione (while)

La sintassi del nucleo Progr::=prog {ClassDeclList {StmtList}} ClassDecl_List::=ClassDecl | ClassDecl ClassDeclList ClassDecl::=class Ide {StatMetDecList InstVarDecList MetDecList} InstVarDecList::=InstVarDec | InstVarDec InstVarDecList InstVarDec::=public Type Ide StmtList::= Stmt | Stmt StmtList Stmt::= Com | Decl Decl::= Type Ide | Type Ide= Exp; | Type ide = new Ide(); Type::= int | boolean | char | Ide Block::= {StmtList} Exp::= Ide.Ide | Ide | NumExp | BoolExp | Ide.Ide m (Exp)

La sintassi del nucleo MetDecList::= MetDec MetDecList |  MetDec::=public void Ide(T Ide){StmtList} StatMetDecList::= StatMetDec StaticMetDecList |  StatMetDec::=public static TypeR Ide(Type Ide){StmtList} TypeR::=Type | void Com::= Ide= Exp; | Ide.Ide=Exp; | Ide = new Ide(); | Block |Ide.Ide m (Exp) | if (BoolExp) Com else Com; | while (BoolExp) Com;

Esempio prog{ class Foo { public int x; public int y;} class Fie { public int x;} {Foo oj1= new Foo(); Fie oj2= new Fie(); oj1.x=5; oj1.y=oj1.x+4; oj2.x=oj1.x+oj1.y;}} public class volume { public static class Foo { publicint x ; public int y;} public static class Fie { publicint x ;} public static void main (String [ ] args) { Foo oj1=new Foo(); Fie oj2=new Fie(); oj1.x=5; oj1.y=oj1.x+4; oj2.x=oj1.x+oj1.y; }} programma Java

 classdecl  c  com ,   classdecl  c >  com  classdecl ,   classdecl (prog) Semantica: il programma

  c ’   c ”   c ’   c ” <ClassDecl ClassDecList,  c   c ” <ClassDecl ClassDecList,  c   c ”  istdecl s  istdecl   mdl m  istdecl  s  istdecl   mdl  m / c]   c [ / c] Semantica: classi (classdecl) (classdeclList)

  s [ /m]   s [ /m]   s ’   s ”   s ’   s ” < MetDef MetDefList,  s   s ”  istdecl  [  /x]  istdecl  [  /x]   ”   ’   ”   ”   ” (instdecl) Semantica: istanza e metodi d’istanza (instdeclist) (MetDef) (MDL)

 c (c) = l = newloc (  )  c (c) = l = newloc (  ) >  /l ]> >   = .  ’ >   = .  ’  = .  ’ >  new (declnew) Semantica: dichiarazioni di oggetti (declnonew)

>   ’ =  [v/x] >  v  (o)= l  ( l )=  ’ =  [v/x] >   (o)=l  (l)=  (o)=l  (l)= >   ( x ) (com =new ) (com o.x= ) Semantica: assegnamento ed espressioni exp o.x

 c (c)=  m (m)=  >  v  (o)=l  (l)=  c (c)=  m (m)=  >  Semantica: metodi d’istanza invocazione (Ipotesi che le espressioni non modifichino lo stato) invoc