Estratto del documento

2020

Appunti esame orale

Programmazione 2 - Java

Eccezioni : un’eccezione è un oggetto che segnala l’accadere di un evento anomalo durante l’esecuzione

di un programma. Il processo di creazione di questo oggetto è chiamato lancio di un’eccezione. Il codice

che rileva e che si occupa si dice che gestisce l’eccezione.

Gestire le eccezioni:

Le istruzioni try e catch, utilizzate insieme, sono il meccanismo di base per gestire le eccezioni.

try {

codice_da_provare;

eventuale_generazione_eccezione;

altro_codice;

} catch (nome_della_classe_eccezione parametro_del_blocco_catch) {

gestione_della_eccezione_di_tipo_nome_della_classe_eccezione;

}

Se all’interno del blocco try viene generata un’eccezione, la parte rimanente del blocco try viene ignorata e

l’esecuzione prosegue con il primo blocco catch che corrisponde al tipo dell’eccezione generata. Dopo

l’esecuzione del blocco catch che corrisponde al tipo dell’eccezione generata. Dopo l’esecuzione del blocco

catch, il programma prosegue con il codice che segue l’ultimo blocco catch definito.

Se nel blocco try non viene generata alcuna eccezione, dopo che ha completato l’esecuzione delle istruzioni

del blocco, l’esecuzione del programma prosegue con il codice che segue l’ultimo blocco catch definito. In

altre parole, se non viene generata alcuna eccezione, i blocchi catch vengono ignorati.

Per ogni blocco try è possibile definire più blocchi catch, ma ogni blocco catch può gestire un solo tipo di

eccezione. L’identificativo parametro_del_blocco_catch serve come segnaposto per un’eccezione che

potrebbe essere lanciata. Quando nel blocco try precedente viene generata un’eccezione della classe

nome_della_classe_eccezione, questa eccezione viene assegnata a parametro_del_blocco_catch. Il codice

nel blocco catch può utilizzare parametro_del_blocco_catch per gestire l’eccezione. Una scelta ampiamente

diffusa per l’identificativo di parametro_del_blocco_catch è e; è possibile utilizzare ogni altro identificativo

valido.

Il metodo getMessage:

Ogni oggetto eccezione ha una variabile di istanza di tipo String che contiene un messaggio. Tale messaggio

solitamente identifica la ragione per cui è stata generata l’eccezione. Per esempio, se l’eccezione è lanciata

dalla seguente istruzione: throw new Exception(argomento_di_tipo_stringa);

Il valore della variabile di istanza di tipo String è argomento di tipo string. Se l’oggetto eccezione viene

chiamato e, l’invocazione di e.getMessage() restituisce questa stringa.

Classi di eccezione definite dal programmatore:

Vi è la possibilità di definire nuove classi di eccezioni, a patto di derivarle da una classe di eccezione

esistente, sia essa predefinita o definita dal programmatore.

Linee Guida; 1

- Si utilizzi Exception come base, se non vi è una particolare esigenza che porta a scegliere come

classe base un’altra classe.

- Si definiscano almeno due costruttori che includono un costruttore di default e uno con un solo

parametro di tipo String.

- Si dovrebbe iniziare ogni definizione di costruttore con una chiamata al costruttore della classe

base, utilizzando super. Nel costruttore di default, la chiamata a super deve avere un argomento di

tipo stringa che indichi il tipo di eccezione rappresentata. Per esempio: super(“Eccezione

ClienteNotFoundException lanciata”);

- La classe di eccezione eredita il metodo getMessage, che non dovrebbe essere ridefinito.

Throw vs Throws:

La parola chiave throw è utilizzata per lanciare un’eccezione, mentre throws è utilizzata nell’intestazione

del metodo per dichiarare un’eccezione. Quini, un’istruzione throw lancia un’eccezione e una clausola

throws ne dichiara una.

Tipologie di eccezioni:

Ogni eccezione è discendente della classe Exception. RunTimeException è una classe derivata da Exception

e le classi a loro volta derivate da RunTimeException o dalle sue discendenti rappresentanto eccezioni non

controllate. Tali eccezioni non richiedono di essere dichiarate in una clasuola throws nell’intestazione di un

metodo. Tutte le altre eccezioni sono controllate e devono essere dichiarate in una clausola throws.

Checked exception: sono dovute a circostanze esterne che il programmatore non può prevenire e il

compilatore verifica che il il programma le gestisca. Esempi tipici si verificano con le operazioni di input e

output.

Un-checked exception: sottoclassi di RunTimeException che derivano da problemi di programmazione.

2

Ereditarietà : L’ereditarietà è uno dei concetti base della programmazione object oriented. Permette di

definire una classe base più generale e di definire in seguito classi specializzate che aggiungono nuovi

dettagli alla classe generale.

- Vantaggi: permette di risparmiare molto lavoro, e quindi tempo, perché la classe specializzata

eredita tutte le proprietà della classe generale e il programmatore deve solo realizzare le nuove

caratteristiche.

- Esempio: Si definirà una semplice classe chiamata Persona. La classe Persona non ha molta utilità di

per sé, ma sarà utilizzata per definire nuove classi. In Java, è possibile definire una classe chiamata

Persona che include la definizione di tutte quelle variabili di istanza che rappresentano le proprietà

comuni a tutte le sottoclassi di persone. La definizione

della classe può inoltre contenere tutti i metodi che Persona

gestiscono le variabili di istanza definite nella classe

Persona. Uno Studente è una persona e pertanto si

può definire la classe studente come una classe

derivata, o sottoclasse, della classe Persona. La classe Dipendente Studente

Persona è definita classe base, o superclasse.

La classe Studente e Dipendente ereditano le variabili di

istanza e i metodi pubblici della classe base che estende. Una classe derivata può inoltre aggiungere altre

variabili di istanza e nuovi metodi oltre quelli ereditati dalla sua classe base.

N.B. Date due classi se non sussiste la relazione is-a tra di esse, non si usa l’ereditarietà per derivare una

classe dall’altra. Una classe derivata include automaticamente tutte le variabili di istanza, le variabili

statiche e tutti i metodi pubblici della classe base. I membri ottenuti dalla classe base si dicono ereditati. In

una classe base è possibile modificare un metodo ereditato

- Overriding: Se una classe derivata definisce un metodo che ha lo stesso nome, gli stessi parametri e anche

lo stesso tipo di ritorno di un metodo della classe base, il metodo della classe derivata ridefinisce il metodo

presente nella classe base. Quando si ridefinisce un metodo ereditato dalla classe base, in generale non

Anteprima
Vedrai una selezione di 4 pagine su 13
Appunti esame orale Programmazione 2 - Java - Tortorella Pag. 1 Appunti esame orale Programmazione 2 - Java - Tortorella Pag. 2
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti esame orale Programmazione 2 - Java - Tortorella Pag. 6
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Appunti esame orale Programmazione 2 - Java - Tortorella Pag. 11
1 su 13
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher DID98 di informazioni apprese con la frequenza delle lezioni di Programmazione 2 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi del Sannio o del prof Tortorella Maria.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community