slide
Transcript
slide
Fondamenti di Informatica T-1 Eccezioni Situazioni critiche ● ● ● Nei sistemi vi sono situazioni critiche che, prevedibilmente, potrebbero generare errori (ad esempio, l'apertura di un file, una connessione in rete, o il tentativo di convertire in numero una stringa). Java introduce il concetto di eccezione, come strumento per gestire operazioni critiche: ● Si tenta di eseguire l'azione, in un "blocco" controllato ● In caso di errore, si "lancia" un'eccezione ● L'eccezione viene "catturata" da un gestore che prende le contromisure Può essere comodo sfruttare le eccezioni come strumento per rappresentare nuovi "tipi di errore" e lanciare un allarme personalizzato in presenza di situazioni anomale nella logica del programma. Fondamenti di Informatica T-1 Francesco Casimiro Lancio di eccezioni ● Nel momento in cui viene individuata la situazione critica, l'oggetto che sta operando deve "lanciare" l'eccezione: ● Si crea un oggetto di tipo Exception, indicando una descrizione del problema Exception e = new Exception("Si è verificato un errore"); ● Si lancia fuori l'eccezione con l'istruzione throw throw e; ● Se all'interno di un metodo viene lanciata un'eccezione, deve avvertire chi lo invoca: public void metodo1() throws Exception {...} Fondamenti di Informatica T-1 Francesco Casimiro Intercettare le eccezioni ● Per intercettare le eccezioni, le operazioni critiche (= i metodi che possono lanciare eccezioni) devono essere eseguite in un blocco try/catch: try{ metodo1(); ... } catch(Exception e){ System.out.println(e.getmessage()); } ● Un metodo che usa a sua volta un metodo che lancia un'eccezione, può gestirla direttamente (try/catch) o lasciare che se ne occupi chi lo invoca (rilancio dell'eccezione), avvisandolo con la clausola throws. È essenziale che nessuna eccezione raggiunga il main. ● Fondamenti di Informatica T-1 Francesco Casimiro Esercizio 1 Si scriva un programma Java che definisca opportuni classi, costruttori e metodi per un servizio meteorologico. I dati gestiti dal programma sono relativi a: ● Località, costituite dalle informazioni: nome, provincia e tipo (città, località balneare, località sciistica). ● Previsioni, caratterizzate dalle informazioni: codice, località, data (stringa del formato gg/mm/aaaa), tempo (una stringa che indica la situazione meteo), temperatura. Il codice viene generato automaticamente dal sistema nel formato P-<#progressivo>. ● Alcune previsioni includono dati specifici per località balneari e sciistiche. Le prime, includono le condizioni del mare (calmo, mosso, molto mosso). Le seconde, l'altezza del manto nevoso e il numero di impianti di risalita aperti. Si lancino opportune eccezioni nel caso si tenti di creare previsioni specifiche per località non valide. ● Si supponga che tali informazioni siano contenute in una classe ServizioMeteo, nei vettori: ● luoghi, contenente i dati relativi alle località (al massimo 10000 elementi) ● previsioni, contenente i dati relativi alle previsioni Fondamenti di Informatica T-1 ● Francesco Casimiro Esercizio 1 Si definiscano i seguenti metodi: 1. metodo pericoloValanghe, che restituisce al chiamante il possibile rischio di valanga (se la temperatura rilevata è maggiore di 15 gradi e la quantità di neve non inferiore a 2 m) 2. metodo divietoDiBalneazione, che restituisce al chiamante l'indicazione se in una località le condizioni del mare sono sfavorevoli 3. metodo meteTuristicheConsigliate, che, data una data, crei un vettore di località, contenente le località balneari in cui, nella data specificata, è consentita la balneazione, e le località sciistiche in cui ci sono impianti aperti e non è presente il rischio di valanghe. 4. metodo inserisciLuogo che, data una località, la inserisca nel vettore luoghi. Se il vettore è pieno, il metodo deve lanciare un'eccezione per segnalare al chiamante che la località non è stata inserita 5. metodo inserisciPrevisione che, data una previsione, la inserisca nel vettore previsioni (raddoppiandone le dimensioni qualora fosse pieno) ● Infine, il programma principale deve: a. Inizializzare le strutture dati, creando e inserendo nei vettori istanze di Localita e Previsioni b. Chiedere all'utente una data e, invocando il metodo del punto 3, Fondamenti di Informatica T-1 mostrare le mete turistiche consigliate. Francesco Casimiro ● Esercizio 2 ● ● ● Si scriva un programma Java che definisca opportuni classi, costruttori e metodi per un negozio virtuale di articoli multimediali. I dati gestiti dal programma sono relativi a: ● Articoli, caratterizzati da un identificativo univoco, un nome e un prezzo ● Utenti, caratterizzati da un nome e una lista di download già effettuati (un array già pieno). Gli articoli si dividono in app, con voto (poor, nice, awesome) e id uguale a "A-"+<#progressivo>, brani musicali, con genere e artista e id uguale a "B-"+<#progressivo>, e ebook, con autore e id uguale a "E-"+<#progressivo> Si supponga che gli articoli siano raccolti in una classe Store, in un vettore di massimo 10000 elementi. Fondamenti di Informatica T-1 Francesco Casimiro Esercizio 2 Si definiscano i seguenti metodi: 1. metodo genereUltimoBranoScaricato, che restituisce al chiamante la stringa contenente il genere dell'ultimo brano scaricato da un utente, lanciando un'eccezione se non è stato scaricato alcun brano 2. metodo inserisciArticolo, che dato un articolo lo inserisce nel vettore, lanciando un'eccezione se il vettore è pieno. 3. metodo cercaArticolo, che, dato il nome di un articolo, restituisca l'istanza dell'articolo richiesto, lanciando un'eccezione se non è stato trovato. 4. metodo articoliConsigliati che, dato un utente, restituisca una lista di articoli contenente i brani dello stesso genere dell'ultimo brano scaricato, solo se l'utente ha già scaricato brani musicali, le app con voto "awesome" e i libri gratuiti. ● Il programma principale deve: a. Creare un'istanza di Store, utilizzando il metodo del punto 2 per popolare il vettore di articoli, e una di Utente. b. Invocare il metodo del punto 4 e mostrare a video i risultati. ● Fondamenti di Informatica T-1 Francesco Casimiro