Ese 1 (del 31 Marzo 2004).

Slides:



Advertisements
Presentazioni simili
Oggetti Java.
Advertisements

Costruttori e Distruttori
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
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.
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;}
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 Programmazione ad oggetti in Java E.Mumolo, DEEI
Derivazione tra classi
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.
Subtype Polymorphism. Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Java Contardi Carlo A.S. 2008/09.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Programmazione concorrente
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Astrazione procedurale ed eccezioni
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Timer Animazioni.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
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
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.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Metodologie di Programmazione Esercizi sulla semantica di Java.
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)
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
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.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella.
Programmazione in Java Parte II Lezione 5 Dott. Marco Faella.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Sistemi e Applicazioni per l’Amministrazione Digitale
ODMG.
Esercizi.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Programmazione a oggetti
Unità didattica 1: Introduzione al linguaggio Java
FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a. a
Oggetti Java.
Copia di oggetti il costruttore di copia ha le stesse particolarità della signature di un costruttore ordinario; il primo parametro è una reference ad.
Il passaggio dei parametri Metodi statici Il riferimento this
Ricorsione 16/01/2019 package.
Esercitazione guidata 1
Unità 1 Programmi base.
Ese 2 (del 31 Marzo 2004).
Esercizio 2.
Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.
Ese 3 (del 3 Aprile 2003).
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

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 sul flusso di controllo Fa solo una analisi statica (oltre a tradurre) Sapendo come e dove sono dichiarati variabili e metodi, esamina separatamente ogni istruzione controllando solo se e’ corretta rispetto: alle regole di visibilita’ dei nomi e al tipo Usa il tipo apparente, quello effettivo dipende dal valore (non si conosce e a causa dei sottotipi puo’ essere diverso)

Approssimazione L’analisi e’ approssimata (per forza), puo’ rilevare errori che non si verificherebbero (perche’ non fa assunzioni sul flusso di controllo) Viceversa e’ safe, se non trova errori, non ci saranno (a parte gli errori di tipo run-time dovuti ai cast) Perche’ si fa l’analisi statica? Per evitare il piu’ possibile i controlli run-time (esecuzione inefficiente) Ci sono linguaggi in cui non si fa il controllo dei tipi (e’ una scelta di progettazione)

Regole di scoping delle dichiarazioni Viste a lezione Implementate nella semantica (da fmet e naming)

Variabili + metodi statici Da una classe sono direttamente visibili nell’ordine i propri nomi statici e quelli delle superclassi I metodi statici hanno la visibilita’ della classe di appartenenza (quella in cui sono dichiarati), oltre ai nomi locali Non vediamo i nomi d’istanza, infatti sono indipendenti dagli oggetti (stand-alone)

Variabili + metodi d’istanza Da un oggetto sono direttamente visibili nell’ordine i propri nomi d’istanza (inclusi quelli ereditati) e la classe, tramite questa le variabili statiche sue e delle superclassi Le variabili statiche sono infatti condivise tra tutti gli oggetti della classe o sottoclassi I metodi d’istanza (inclusi i costruttori) hanno la visibilita’ dell’oggetto su cui sono eseguiti, oltre alle variabili locali

w e' dichiarata con tipo Sotto, mentre c con tipo Sopra Identificare gli errori che verrebbero segnalati dal compilatore per le seguenti dichiarazioni di classe: public class Sopra { public static int a; public int [] c; public static void metodo1(int i) { a=i; return;} public Sopra metodo2(int i) { Sopra w=new Sopra(); metodo1(3); w.c[i]=a; c[i]=a;return w;} {a=12; c=new int[6];} } public class Sotto extends Sopra { public int b; Sopra c=new Sotto(); c.metodo1(i); Sotto w= new Sotto(); w=c; w.b=w.a; Sotto d=(Sopra) new Sopra(); return c;} {b=101;} Due errori: w e' dichiarata con tipo Sotto, mentre c con tipo Sopra d e' dichiarata con tipo Sotto, mentre il cast e’ verso Sopra