LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)

Slides:



Advertisements
Presentazioni simili
Java base V: La gestione delle Eccezioni
Advertisements

Universita di Camerino
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
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.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
1 Le gerarchie di tipi: implementazioni multiple e principio di sostituzione.
PolyFun. Dare implementazione,funzione di astrazione, invarianti della rappresentazione. Provare che i metodi apply e bind preservano gli invarianti.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Eccezioni Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Fisica computazionale I - 21 OPERATORI. Fisica computazionale I - 22 OGGETTI Gli oggetti sono strutture di dati che possono essere create, attraverso.
AA 2005/06 Informatica Programmazione M.A. Alberti-L. Capra 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
AA2003/04 © M.A. Alberti Programmazione Eccezioni 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
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.
Eccezioni.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
Astrazione procedurale ed eccezioni
1 Un esempio con iteratore: le liste ordinate di interi.
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
1 Astrazione sul controllo: gli iteratori. 2 Perché vogliamo iterarare “in modo astratto” 4 problema: iterare su tipi di dato arbitrari  esempio: procedura.
Liste di Interi Esercitazione. Una variante Liste concatenate di Integers Non modificabile Costruttori per creare la lista vuota o un nodo Metodi d’istanza.
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.
Liste Concatenate 11 Aprile E’ una delle strutture dati fondamentali in tutti i linguaggi di programmazione di alto livello Una Lista Concatenata.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
Esercitazione Object, Vettori, Liste. Ereditarieta’ Abbiamo visto come tramite l’ereditarieta’ e’ possibile estendere classi esistenti -arricchendo lo.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
LIP: 9 Maggio Esercizi Riprendiamo un esercizio proposto Definire un tipo di dato Persona che definisce oggetti che rappresentano le informazioni.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
1 Astrazione procedurale ed Eccezioni. 2 Procedure stand alone 4 indipendenti da specifici oggetti 4 come si realizzano in Java –metodi statici definiti.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
1 Un esempio: le liste ordinate di interi. 2 Liste ordinate  OrderedIntList 4 lista ordinata di interi –modificabile.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
1 Astrazione sul controllo: gli iteratori. 2 Perché vogliamo iterarare “in modo astratto” 4 problema: iterare su tipi di dato arbitrari  esempio: procedura.
LIP: 8 Marzo 2005 Vettori. Abbiamo visto L’uso di Vector come alternativa all’uso di arrays Rivediamo l’esercizio dell’altra volta.
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 31 Marzo 2004). Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare.
1 Le s-espressioni. 2  Sexpr 4 alberi binari (possibilmente “vuoti”) che hanno sulle foglie atomi (stringhe) 4 sono la struttura dati base del linguaggio.
Esercizio 3. Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare i commenti.
PolyFun. Dare implementazione,funzione di astrazione, invarianti della rappresentazione. Provare che i metodi apply e bind preservano gli invarianti.
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.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Esercitazione. Problema Vogliamo definire in modo gerachico un tipo di dato che definisce Tabelle multi-dimensionali con un numero di righe variabili.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
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.
Alcune Classi Standard Object, Vettori. Ereditarieta’ Abbiamo visto come tramite l’ereditarieta’ e’ possibile estendere classi esistenti -arricchendo.
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.
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Liste Concatenate 28 Marzo Avviso Martedi’ 4 Aprile: Verifica di LIP Per iscriversi (obbligatorio) inviare un e- mail entro venerdi’ 31 Marzo a.
1 Un esempio con iteratore: le liste ordinate di interi.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
LIP: 18 Aprile 2008 Interfacce. Rappresentazione Lista val next vuota Lista vuota: any true Lista non vuota: any true 154 false 24 false.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Ese 3 (del 3 Aprile 2003).
Transcript della presentazione:

LIP: 22 Marzo 2005 Eccezioni

Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)

Le eccezioni in Java i tipi di eccezione sono particolari classi che –contengono solo il costruttore ci possono essere più costruttori overloaded le eccezioni sono oggetti –creati eseguendo new di un exception type e quindi eseguendo il relativo costruttore esiste una gerarchia “predefinita” di tipi relativi alle eccezioni –nuovi tipi di eccezioni sono collocati nella gerarchia con l’usuale extends

La gerarchia di tipi per le eccezioni Throwable Exception Error RuntimeException se un nuovo tipo di eccezione estende la classe Exception –l’eccezione è checked se un nuovo tipo di eccezione estende la classe RuntimeException –l’eccezione è unchecked

Esempio Definizione di una nuova eccezione checked public class NotFoundException extends Exception { //costruttore public NotFoundException(string s) {super(s);} } la stringa contenuta nell’eccezione permette all’utente di identificare la procedura che la ha sollevata può comparire nel messaggio di errore che si stampa subito prima di forzare la terminazione dell’esecuzione si puo’ anche mettere un costruttore senza argomenti

Lanciare eccezioni Una eccezione si lancia tramite il costrutto throw throw new NotFoundException(“nome metodo corrente”); Il metodo corrente si sospende e passa il controllo al chiamante

Alternativa: Gestione Esplicita Il chiamante puo’ –gestione di default, mediante propagazione dell’eccezione alla procedura chiamante possibile solo per eccezioni non checked o per eccezioni checked elencate nell’header della procedura che riceve l’eccezione –gestione esplicita (mediante try and catch), cattura e gestisce l’eccezione

Catturare una Eccezione Il codice che potrebbe sollevare l’eccezione e’ racchiuso all’interno di uno statement try Il codice per gestire l’eccezione e’ racchiuso all’interno di uno statement catch In realta’ possono esserci vari statements catch per catturare diverse eccezioni e gestirle in modo specifico (vedi documentazione Java)

Esercizio: Eccezioni –NullPointerException e’ una eccezione unchecked primitiva – DuplicateException e’ una eccezione checked (la dovete definire) –NotFoundException e’ una eccezione checked (la dovete definire)

Esercizio Proposto Definire una classe Frame che definisce oggetti che rappresentano funzioni parziali (a dominio finito) da String (dominio) ad Integer (Codominio) In sostanza sono delle tabelle (senza duplicati) Vogliamo le seguenti operazioni (al solito espresse da costruttori e metodi pubblici) Simili alle operazioni usate dei Frames della semantica operazionale

Costruttori e Metodi d’Istanza \\costruttore public Frame(){ \\EFFECTS\\EFFECTS: costruisce un nuovo Frame indefinito per tutti i valori } \\ metodi osservatori public boolean defined(String s) throws NullPointerException{ \\EFFECTS\\EFFECTS: se s e’ null solleva NullPointerException, se this e’ definita per s restituisce true, altrimenti restituisce false} NullPointer (unchecked) si potrebbe anche non mettere nell’header (per completezza della specifica puo’ essere conventiente metterla)

Metodid’Istanza \\ metodi osservatori public Integer apply(String s) throws NullPointerException, NotFoundException{ \\EFFECTS\\EFFECTS: se s e’ null solleva NullPointerException, se this e’ definita per s restituisce il valore associato, altrimenti solleva NotFoundException} public String toString(){ \\EFFECTS\\EFFECTS: restituisce una stringa che contiene le coppie di this, (x,y) dove y e’ l’elemento associato ad x} \\ metodi modificatori public void bind(String s, Integer x) throws NullPointerException, DuplicateException{ \\MODIFIES\\MODIFIES: this \\EFFECTS\\EFFECTS: se s o x e’ null solleva NullPointerException, se this e’ definita per s solleva DuplicateException, altrimenti modifica this aggiungendo l’associazione tra s ed x}

Come si puo’ implementare Frame? La scelta fondamentale (come per tutte le classi che definiscono oggetti) e’ quella delle variabili d’istanza Definiscono lo stato degli oggetti Vanno dichiarate nella classe Inizializzate dal costruttore

Come si scelgono? Devono permettere di memorizzare le informazioni che gli oggetti hanno Devono anche permettere di implementare i costruttori e metodi d’istanza richiesti (in modo possibilmente efficiente) Come si puo’ rappresentare un Frame?

Per esempio Dobbiamo di fatto memorizzare l’insieme delle coppie (valore dominio-codominio) Simile all’esercizio dell’Elenco che abbiamo visto Si puo’ usare un array (un Vector?) che contiene coppie (String,Integer) (va definito un tipo coppia ausiliario-tipo Abbonato) Si possono usare due arrays (Vector?) che memorizzano uno il dominio e l’altro il codominio, mantenendo nella stessa posizione gli elementi associati

Variabili d’istanza private Vector dom; \\ dominio private Vector cod; \\ codominio Per ogni posizione i cod.elementsAt(i) e’ il valore del codominio associato al valore del dominio dom.elementsAt(i) Di conseguenza i due Vectors hanno sempre la stessa lunghezza

Sviluppare (in parallelo) un Tester Prende dei valori da console (o metterceli direttamente) Costruire un Frame vuoto Prende dei valori da console (o metterceli direttamente) ed inserire delle associazioni (usando bind) Testare sul Frame i metodi apply e defined Bisogna testare anche le eccezioni che questi metodi possono sollevare (bind e apply)

Cosa vuol dire? Provare apply su un valore che non e’ definito (il metodo deve sollevare l’eccezione NotFoundexception) Provare bind su un valore che e’ gia’ definito (il metodo deve sollevare l’eccezione Duplicateexception) Catturare le Eccezioni e non fare fallire il main (mediante try e catch) Fare invece stampare il motivo dell’eccezione (con toString)

Tester (con eccezioni)