Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013"

Transcript

1 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013

2 Sommario Gestione degli errori Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Lanciare nuove eccezioni - Comando throw Definire nuove eccezioni Esercizi 2

3 Gestione degli errori Generalmente i programmi contengono istruzioni critiche, che possono causare errori che portano alla terminazione improvvisa del programma. Questa anomalia può dipendere sia dal codice scritto (es. quando tentiamo di eseguire una divisione per 0, attribuiamo all indice di un array un valore al di fuori dell intervallo consentito, ecc.) sia dall ambiente hardware (es. disco pieno, connessione di rete non disponibile ) Con altri linguaggi di programmazione per evitare questa eventualità (errori e conseguente terminazione anomala dei programmi) si cerca di prevedere e gestire in modo appropriato (inserendo opportuni controlli if then con conseguente appesantimento del codice) tutte le situazioni che possono produrre errori. 3

4 Gestione degli errori Una tipica istruzione critica (che può causare la terminazione improvvisa del programma) è la lettura di dati da input. Si ricorda che in Java, il dispositivo standard di input è rappresentato dalla variabile (statica) System.in, appartenente alla classe InputStream che fornisce solo il metodo read() (che permette di leggere singoli byte), pertanto per leggere le stringhe si usa la classe BufferedReader, che fornisce il metodo apposito readline() 4

5 Ottengo il programma dove sono evidenziati gli errori Corso di Fondamenti di Informatica1 5

6 Ottengo il programma dove sono evidenziati gli errori Il compilatore ci segnala che potenzialmente nel metodo main sarà generata una eccezione! Corso di Fondamenti di Informatica1 6

7 Ottengo il programma dove sono evidenziati gli errori Corso di Fondamenti di Informatica1 7

8 Ottengo il programma dove sono evidenziati gli errori L istruzione readline() in caso di errore in fase di input solleva una IOException Corso di Fondamenti di Informatica1 8

9 Ottengo il programma dove sono evidenziati gli errori Corso di Fondamenti di Informatica1 9

10 Ottengo il programma dove sono evidenziati gli errori Come suggerito dal compilatore abbiamo aggiunto nella signature del metodo la c throws dello stesso tipo di eccezione lanciata. Tramite questa clasusola si demanda al chiamante la gestione dell eccezione. Corso di Fondamenti di Informatica1 10

11 Istruzione di lettura..se devo leggere un dato numerico è necessario: InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); int numero; System.out.print("Immettere un numero : "); numero=integer.parseint(tastiera.readline()); System.out.println("numero inserito: " + numero); 11

12 Istruzione di lettura..se devo leggere un dato numerico è necessario: InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); se la stringa restituita da readline() non corrisponde alla sintassi di un int numero; numero intero Integer.parseInt() solleva una NumberFormatException System.out.print("Immettere un numero : "); numero=integer.parseint(tastiera.readline()); System.out.println("numero inserito: " + numero); 12

13 Il compilatore ci segnala che potenzialmente nel metodo sarà generata anche una ecc formato del dato. 13

14 Il concetto di eccezione Java per ovviare ai possibili errori a cui può andare incontro un programma durante la sua normale esecuzione, adotta un approccio innovativo, introducendo il concetto di eccezione. Una eccezione è un evento anomalo e indesiderato che non consente la normale prosecuzione del programma. Esempi: divisione per 0: java.lang.arithmeticexception indice di un array al di fuori dell intervallo consentito -java.lang.arrayindexoutofboundsexception formato numerico errato java.lang.numberformatexception 14

15 Le eccezioni Una eccezione Java è un oggetto, istanza della classe Throwable o di una sua sottoclasse. Le sottoclassi della classe Throwable sono due: -Exception -Error Object Throwable Error Exception 15

16 Le eccezioni Gli errori sono degli eventi anomali che non dipendono dalla nostra applicazione (es.: memoria insufficiente, problemi alla JVM, problemi con un dispositivo esterno, ecc.) e pertanto non possono essere gestiti; infatti, potenzialmente, qualunque codice del programma potrebbe lanciare questi errori che sarebbero completamente fuori dal controllo del programmatore. Object Throwable Le eccezioni, invece, sono l'opposto degli errori, ovvero, tutti quegli eventi che dipendono dal programma e che possono essere controllati e quindi gestiti. Error Exception 16

17 Categorie di eccezioni Il compilatore Java suddivide le Exception in due categorie: checked (verificate) e unchecked (non verificate). Considera checked (eccezioni verificate), le istanze della classe Exception mentre unchecked (non verificate) le istanze della classe RuntimeException Object Throwable Error Exception RuntimeException Checked exception unchecked exceptions 17

18 Categorie di eccezioni La distinzione tra le eccezioni verificate ( checked exception ) e non verificate (unchecked exception ) è importante in quanto il compilatore Java, per le eccezioni verificate, richiede il requisito dichiara (tramite la clausola throws) o intercetta ( try catch). Tutte le eccezioni che sono sottoclassi dirette o indirette di RunTimeException sono non verificate (es. ArrayIndexOutOfBounds, ArithmeticException). Tutte le classi che ereditano da Exception ma non da RuntimeException sono invece considerate eccezioni verificate. Il compilatore Java controlla ogni chiamata e dichiarazione di metodo per verificare se il metodo può lanciare eccezioni verificate. In caso positivo si assicura che sia soddisfatto Object il requisito dichiara (tramite la clausola throws) o intercetta ( try catch). Le eccezioni verificate devono obbligatoriamente Throwable essere dichiarte (tramite la clausola throws) o intercettate ( try catch)altrimenti non avviene la compilazione, come visto prima. Exception RuntimeException Checked exception unchecked exceptions 18

19 Categorie di eccezioni Le checked, exception rappresentano situazioni anomale in cui il programma puo' incappare, ma facilmente recuperabili. Object Throwable Error Exception RuntimeException Checked exception unchecked exceptions 19

20 Categorie di eccezioni Le unchecked exception possono potenzialmente capitare in qualsiasi programma e in qualsiasi momento dell'esecuzione (puntatori nulli, divisioni per zero, ecc). Sono solitamente imputabili a errori di progettazione o a mancati controlli sull'input dell'utente. Non devono obbligatoriamente essere gestite. Object Throwable Error Exception RuntimeException Checked exception unchecked exceptions 20

21 Alcune tra le più importanti eccezioni Java: NullPointerException extends RunTimeException extends Exception : eccezione che viene lanciata quando si utilizza un puntatore nullo (Addio caro vecchio Segmentation Fault!!!). ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException extends RunTimeException extends Exception : eccezione che viene lanciata quando si legge un array (Vettore o Lista) con indice non corretto (Ancora: addio caro vecchio Segmentation Fault!!!). NumberFormatException extends IllegalArgumentException extends RunTimeException extends Exception : eccezione lanciata dalle Classi Wrapper quando si cerca di convertire in un Numero una stringa non correttamente Formattata. IOException extends exception : eccezione lanciata dalla virtual machine quando una operazione di Input/Output non va a buon fine FileNotFoundException extends IOException extends Exception : eccezione lanciata quando un file non viene trovato.

22 Alcune tra le più importanti eccezioni Java:

23 Categorie di eccezioni Le eccezioni checked vengono controllate dal compilatore (per questo si chiamano così), pertanto il compilatore si aspetta che nel metodo che potenzialmente le genera, ci siano gli appositi costrutti per il controllo e la gestione (corpo del metodo con costrutto try/catch o che, nella signature del metodo, ci sia una clausola throws dello stesso tipo di eccezione lanciata o di una sua superclasse - Se ciò non avviene si incorre in un errore di compilazione! ) Le eccezioni unchecked sono libere da costrizioni programmative: esse possono essere lanciate ovunque e, se non gestite, si propagano nello stack delle chiamate fino a causare la terminazione del programma. Questo approccio rende i programmi Java più robusti e affidabili. 23

24 Gestione delle eccezioni Una eccezione è un oggetto Java e può essere: 1. Propagata verso il metodo chiamante che si occuperà di gestire l eccezione tramite la clausola throws (dichiarazione di propagazione nel metodo) 2. Catturata e gestita tramite il costrutto try/catch 3. Generata da un metodo tramite throw 24

25 Il costrutto try - catch Il blocco try contiene un insieme di istruzioni che potrebbero generare eccezioni, se durante l'esecuzione una delle istruzioni genera un'eccezione, il flusso di esecuzione si interrompe, e la gestione passa al blocco catch incaricato di gestire l'eccezione sollevata. Il blocco catch specifica quale eccezione si desidera gestire e quali istruzioni eseguire. E' possibile rinserire più blocchi catch, in modo da permettere una gestione differenziata delle eccezioni generate dal blocco try. Nell esempio riportato il compilatore prova (try) ad eseguire il blocco di istruzioni dopo la parola chiave try e se incontra un input non corretto lancia l eccezione e si ferma! 25

26 Il costrutto try - catch Un blocco try deve avere almeno un catch o finally; Se sono possibili più tipi di errore ci saranno più blocchi catch. Il corpo del blocco try viene eseguito fino al momento in cui viene sollevata un eccezione da un istruzione; a quel punto viene esaminata ogni clausola catch per vedere se il tipo dell eccezione sollevata coincide con quella trattata dal blocco catch; se esiste il catch corrispondente, viene inizializzato l identificatore (il parametro enamexxx) e vengono eseguite le istruzioni; nessuna altra catch verrà eseguita se non viene trovata nessuna catch adatta, l eccezione è propagata al di fuori del try, ad altri try più esterni se presenti. Se è presente una finally, le sue istruzioni sono eseguite comunque, anche in assenza di eccezioni; la finally è solitamente usata per attuare e garantire la coerenza dello stato degli oggetti (ad esempio, chiudere file)

27 Si noti che l ordine delle catch è rilevante; Es. try { catch(nullpointerexception npe) { catch(ioexcetpion ioe) { catch(exception e) { Si noti che la gestione di IOException deve precedere quella di Exception, dato che IOException è una sottoclasse di Exception. Per la stessa ragione, la gestione di Exception deve per forza comparire in fondo all'elenco.

28 Il costrutto try - catch 28

29 Gestione delle eccezioni:esempio 1 29

30 Gestione delle eccezioni:esempio 30

31 Gestione delle eccezioni:esempio Se durante l'esecuzione diamo un input sbagliato (la stringa tre), viene lanciata dal metodo main un'eccezione che viene intercettata dalla JVM che manda un messaggio e interrompe l esecuzione del programma 31

32 Gestione delle eccezioni:esempio Il messaggio mostra : la stringa di input che ha causato l errore la linea di codice in cui è stata lanciata l eccezione (20) le chiamate dei metodi che hanno portato all eccezione 32

33 Gestione delle eccezioni:esempio Se si inserisce un dato numerico con formato errato viene lanciata l eccezione NumberFormatExceoption (unchecked) 33

34 Gestione delle eccezioni:esempio Il compilatore Java non verifica se un eccezione non verificata (unchecked) viene intercettata o dichiarata. Le eccezioni non verificate possono essere prevenute (evitate) con codice appropriato. 34

35 La gestione delle eccezioni è utile in fase di debugging in quanto Da informazioni sul verificarsi di anomalie Il messaggio mostra : la stringa di input che ha causato l errore la linea di codice in cui è stata lanciata l eccezione (20) le chiamate dei metodi che hanno portato all eccezione 35

36 Per evitare che il programma si interrompa possiamo provare a racchiudere il comando di input in un blocco try-catch: Il messaggio mostra : la stringa di input che ha causato l errore la linea di codice in cui è stata lanciata l eccezione (20) le chiamate dei metodi che hanno portato all eccezione 36

37 37

38 Anche in questo caso il programma si interrompe! Per evitare questo comportamento (il blocco dell esecuzione del programma) dobbiamo fare diversamente! Ad esempio possiamo racchiudere il try-catch in un blocco do while: 38

39 Gestione delle eccezioni:esempio 2 39

40 package provaeccezioni; import java.io.bufferedreader; import java.io.inputstreamreader; Altro esempio di gestione delle eccezioni Si distinguono i diversi tipi di eccezioni Si tenta il recupero di situazioni di errore public class prova6 { public static void main(string args[]) { InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); int d=0, a=0; do{ System.out.println("Inserire a <immettere un numero maggiore di 0>: "); try { a=integer.parseint(tastiera.readline()); catch(exception e1) {System.out.println("errore nell'inserimento di a " ); ; System.out.println("numero inserito: " + a); while (a<=0); boolean errore=false; do{ errore=false; System.out.println("Inserire d <immettere un numero maggiore di 0>: "); try { d=integer.parseint(tastiera.readline()); catch(exception e2) {System.out.println("errore nell'inserimento di d" );errore=true;; while (errore); System.out.println("numero inserito: " + d); try { a = 42 / d; System.out.println("valore calcolato :"+a); catch (ArithmeticException e) { System.out.println("Divisione per zero");; 40

41 package provaeccezioni; import java.io.bufferedreader; import java.io.inputstreamreader; public class prova6 { public static void main(string args[]) { InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); int d=0; a=0; do{ Importante : la clausola throws non è presente nel main in quanto è presente il costrutto try catch per la gestione delle eccezioni System.out.println("Inserire a <immettere un numero maggiore di 0>: "); try { a=integer.parseint(tastiera.readline()); catch(exception e1) {System.out.println("errore nell'inserimento di a " ); ; System.out.println("numero inserito: " + a); while (a<=0); booleanerrore=false; do{ errore=false; System.out.println("Inserire d <immettere un numero maggiore di 0>: "); try { d=integer.parseint(tastiera.readline()); catch(exception e2) {System.out.println("errore nell'inserimento di d" );errore=true;; while (errore); System.out.println("numero inserito: " + d); try { a = 42 / d; System.out.println("valore calcolato :"+a); catch (ArithmeticException e) { System.out.println("Divisione per zero");; 41

42 Costrutto try catch - finally Il costrutto generale per la gestione delle eccezioni ha la seguente forma: try { istruzione1(); istruzione2();... catch(exception1 e1) { // gestione dell'eventuale problema nato nel blocco try catch(exception2 e2) { // gestione dell'eventuale problema nato nel blocco try finally { // codice da eseguire comunque al termine del blocco try Parte normale!! Anche più di una!! Facoltativa!! La clausola finally contiene un blocco di istruzioni da eseguire comunque dopo il blocco try, sia nel caso esso sia terminato senza problemi, sia nel caso abbia sollevato qualche eccezione. 42

43 L istruzione throw Fino ad ora abbiamo visto (throws ) che permette di delegare al metodo chiamante la gestione delle eccezioni che potrebbero essere sollevate, oppure (try - catch ) che permette di gestire le eccezioni che potrebbero essere sollevate in un metodo all interno del metodo stesso Ora invece vedremo come si opera se si desidera generare un'eccezione in un metodo e in che modo sia possibile creare eccezioni personalizzate per gestire situazioni anomale nei propri programmi. Utilizzeremo come esempio un metodo statico che calcola il fattoriale. Il metodo crea una nuova eccezione nel caso che il parametro di input sia negativo! 43

44 L istruzione throw Le eccezioni possono essere generate con l istruzione throw Solitamente un istruzione throw è inclusa in un istruzione if che valuta una condizione per verificare se deve essere sollevata l eccezione 44

45 L istruzione throw 45

46 L istruzione throw package provaeccezioni; import java.io.*; public class prova7 { static int fattoriale(int n) throws Exception { if(n<0) throw new Exception("Il parametro deve essere int f = 1; for (int i=1;i<=n;i++) f = f * i; positivo"); return f; Importante non confondere: la clausola throws che dichiara che un metodo rilancia all esterno un eccezione l istruzione throw che solleva un eccezione 46

47 Altro esempio package provaeccezioni; import java.io.*; public class prova3 { public static void main(string[] args) throws Exception { InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); int x=0; do{ System.out.print("Immettere un numero maggiore di 0: "); try { x=integer.parseint(tastiera.readline()); catch(exception e) {System.out.println("errore " ); while (x<=0); System.out.println("numero inserito: " + x); if (x==5) throw new Exception("Impossibile usare il valore 5"); 47

48 Esempio Per generare un eccezione: prima si crea l oggetto eccezione da lanciare poi lo si lancia con l istruzione throw public int readinteger(string s) throws NumberFormatException, NumberTooBigException { int x = Integer.parseInt(s); if (x>100) throw new NumberTooBigException(); return x;

49 package provaeccezioni; import java.io.*; public class prova3 { public static void main(string[] args) throws Exception { InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); int x=0; do{ System.out.print("Immettere un numero maggiore di 0: "); try { x=integer.parseint(tastiera.readline()); catch(exception e) {System.out.println("errore " ); while (x<=0); System.out.println("numero inserito: " + x); if (x==5) throw new Exception("Impossibile usare il valore 5"); l istruzione throw genera un eccezione 49

50 Eccezioni definite dall utente Nonostante l enorme varietà di eccezioni già presenti in Java, il programmatore può facilmente crearne di proprie, qualora desideri segnalare condizioni di eccezione tipiche di un proprio programma. Per creare una nuova eccezione è sufficiente dichiarare una sottoclasse di Exception (o di una qualunque altra eccezione esistente), e ridefinire i costruttori. Exception(): Crea un'eccezione. Exception(String message): Crea un'eccezione specificando un messaggio diagnostico. Esempio di eccezione personalizzata: public class MiaEccezione extends Exception{ MiaEccezione (String messaggio) { super (messaggio); Questa classe si deve trovare in un file chiamato come la classe, ovvero MiaEccezione.java". 50

51 Come sollevare la nuova eccezione import java.io.*; public class UsaMiaEccezione { public static void main(string[] args) throws MiaEccezione, IOException { /* lista delle sottoclassi di Exception che possono essere lanciate dal metodo */ final int Min = 10, Max = 30; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduci un numero tra "+Min +" e " +Max+ " inclusi"); int valore = Integer.parseInt(br.readLine()); if (valore < Min valore > Max) throw new MiaEccezione ("il valore non è nell'intervallo"); System.out.println("Non è stata lanciata l'eccezione"); 51

52 Come sollevare la nuova eccezione import java.io.*; public class UsaMiaEccezione { public static void main(string[] args) throws MiaEccezione, IOException { /* lista delle sottoclassi di Exception che possono essere lanciate dal metodo */ final int Min = 10, Max = 30; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduci un numero tra "+Min +" e " +Max+ " inclusi"); int valore = Integer.parseInt(br.readLine()); if (valore < Min valore > Max) throw new MiaEccezione ("il valore non è nell'intervallo"); System.out.println("Non è stata lanciata l'eccezione"); Quindi con la clausola throws avviso il compilatore che questo metodo potrebbe lanciare questa tipologia di eccezione Nel codice verifico se è il caso o no di lanciare l eccezione in caso affermativo creo l oggetto eccezione da lanciare (new..) e con l'istruzione throw lo lancio. 52

53 Esercizio Data la classe Tempo di seguito riportata, modificarla in modo tale che se il metodo assegnatempo riceve parametri errati, generi un'eccezione. 53

54 Classe Tempo public class Tempo { protected int ore, minuti, secondi; static public char separatore = ':'; public Tempo () { // costruttore ore = minuti = secondi = 0; 54

55 Classe Tempo public Tempo (int ora, int minuto, int secondo) { // costruttore s(); assegnatempo (ora, minuto, secondo); public int assegnatempo (int ora, int minuto, int secondo){ if (ora >= 0 && ora < 24 && minuto >= 0 && minuto < 60 && secondo >= 0 && secondo < 60 ){ ore = ora; minuti = minuto; secondi = secondo; return 0; else return -1; public int leggiora () { return ore; 55

56 Classe Tempo public int leggiminuti () { return minuti; public int leggisecondi () { return secondi; public void aggiungiore (int numore) { ore = ore + numore; while (ore > 23) ore = ore - 24; public void visualizza (boolean ritornoacapo) { System.out.print("" + ore + separatore + minuti + separatore); 56

57 Classe Tempo /* La stringa vuota ("") come argomento di System.out.print serve per forzare l'interpretazione di + come operatore di concatenazione di stringhe */ if (ritornoacapo) System.out.println (secondi); else System.out.print (secondi); 57

58 Soluzione Estendiamo Tempo.java in modo che se il metodo assegnatempo riceve parametri errati, genera un'eccezione. public class TempoConEccezioni extends Tempo{ public TempoConEccezioni() { super(); public TempoConEccezioni (int ora, int minuto, int secondo) { super (ora, minuto, secondo); public int assegnatempo (int ora, int minuto, int secondo){ if (super.assegnatempo(ora,minuto,secondo) == 0) return 0; else throw new TempoException("Errore in assegnatempo"); 58

59 Soluzione Definiamo la classe di eccezioni TempoException: public class TempoException extends RuntimeException{ public TempoException(){ super(); public TempoException(String msg){ super(msg); 59

60 Soluzione Proviamo la nuova classe con un semplice programma: public class UsaTempoConEccezioni{ public static void main(string [] args) { try { Tempo t = new TempoConEccezioni (99,99,99); t.visualizza(true); catch (TempoException e) { System.out.println ("Errore:" + e); 60

61 Esercizio Modificare la classe Conto Corrente che nel caso l importo da prelevare superi il saldo lanci una eccezione di IllegalArgumentException abbinata al seguente messaggio: ("somma non disponibile"); senza bloccare l esecuzione del programma 61

62 Soluzione public class ContoCorrente{ public static double preleva(double somma,double disp){ if(somma>disp) { throw new IllegalArgumentException("somma non disponibile"); disp=disp-somma; return disp; public static void main(string[]args){ double disponibile = ; //denaro disponibile in CC Scanner sc= new Scanner(System.in); System.out.println("Somma disponibile in cc:" + disponibile); int termina = 1; 62

63 Soluzione while(termina!=0) {System.out.println("Quale somma vuoi prelevare?"); double sommadaprelevare= sc.nextdouble(); try {disponibile = preleva(sommadaprelevare, disponibile); catch(illegalargumentexception) {System.out.println("Problema: "+ e +"prelevamento massimo: " + disponibile); System.out.println("Somma disponibile in cc:" + disponibile); System.out.println("Digita 1 per continuare, 0 per uscire"); termina = sc.nextint(); 63

64 Esercizio Definire una classe cc che ha la funzione di una Calcolatrice che nel caso venga impostata una operazione non valida lanci una eccezione adeguata. Provare a gestire le eccezioni in modo che il programma non termini in modo anomalo 64

65 public class cc { public cc(){ public double dividi( double op1, double op2) throws Exception { if( op2 == 0) {throw new Exception("Impossibile dividere per 0."); return op1/op2; 65

66 public class Calcolatrice { public static void main(string[] args) { try { cc calc = new cc(); double op1 = 3.2; double op2 = 0.0; double ris_divisione = calc.dividi( op1, op2 ); System.out.println(op1+" diviso "+op2+" fa: "+ris_divisione); catch(exception e) { System.out.println("La calcolatrice ha riportato una operazione non valida."+e); 66

67 67

68 68

69 Cosa abbiamo imparato? Cosa sono le eccezioni:eventi anomali ed indesiderati che non permettono la normale prosecuzione del programma. Le categorie di eccezioni e la differenza tra eccezioni: checked: controllate dal compilatore, sono tutte le sottoclassi della classe Exception e la loro gestione è obbligatoria; unchecked: libere da costrizioni programmative, sono tutte le sottoclassi della classe RuntimeException e la loro gestione è opzionale. Possono essere generate ovunque. L eccezione può essere: Propagata verso il metodo chiamante tramite la 69

70 dichiarazione nel metodo throws; Catturata e gestita tramite il costrutto try/catch; Generata da un metodo tramite throw. Come si utilizza la clausola throws: delega la gestione delle eccezioni che potrebbero essere sollevate da un metodo al metodo chiamante. Che cos è il costrutto try/catch: gestisce le eccezioni che potrebbero essere sollevate in un metodo all interno del metodo stesso. - try contiene un insieme di istruzioni che possono generare un eccezione; - catch specifica quale eccezione si desidera gestire e quale istruzioni eseguire. E possibile ripetere più volte il blocco catch. 70

71 La clausola finally contiene un blocco di istruzioni da eseguire comunque dopo il blocco try. Come si genera un eccezione tramite l istruzione throw. 71

72 Questionario 1) Che cos è un eccezione? E un metodo particolare in Java; E un evento imprevisto, anomalo e indesiderato che non consente la normale prosecuzione del programma; E evento un previsto e desiderato che si utilizza in alcuni tipi di programmi; E una classe particolare in Java. 2)A cosa serve l istruzione throws? throws serve per gestire un eccezione unchecked; throws serve a dichiarare che in questo metodo potrebbero essere sollevate delle eccezioni di cui ne viene demandata la gestione al chiamante del metodo; throws serve a gestire le eccezioni che potrebbero essere sollevate in un metodo all interno del metodo stesso; throws serve a generare un eccezione. 72

73 3)Che cos è un eccezione in Java? Una classe; Un oggetto; Un metodo; Un package. 4)A cosa servono le istruzioni try/carch? try/catch servono per gestire un eccezione unchecked; try/catch servono a dichiarare che in questo metodo potrebbero essere sollevate delle eccezioni di cui ne viene demandata la gestione al chiamante del metodo; try/catch serve a gestire le eccezioni che potrebbero essere sollevate in un metodo all interno del metodo stesso; try/catch serve a generare un eccezione 5) ) Le eccezioni in Java, di quale istanza di classi fanno parte? delle classi java.lang.exception e sue sottoclassi e di java.lang.runtimeexception e sue sottoclassi; 73

74 delle classi java.io.exception e sue sottoclassi delle classi java.error.exceptione e sue sottoclassi e di java.error.runtimeexception e sue sottoclassi; delle classi java.io.exceptione e sue sottoclassi e di java.io.runtimeexception e sue sottoclassi 6) Cosa significano le parole checked e unchecked e a quale classe fanno riferimento? checked sono eccezioni controllate che sono istanze della classe java.lang.exception, mentre unchecked sono eccezioni non controllate e sono istanze della classe java.lang.runtimeexception; checked sono eccezioni non controllate che sono istanze della classe java.lang.exception, mentre unchecked sono eccezioni controllate e sono istanze della classe java.lang.runtimeexception; checked sono eccezioni controllate che sono istanze della classe java.lang.runtimeexception, mentre unchecked sono eccezioni non controllate e sono istanze della classe java.lang.exception;. 74

75 checked sono eccezioni non controllate che sono istanze della classe java.lang.runtimeexception, mentre unchecked sono eccezioni controllate e sono istanze della classe java.lang.exception 7)A cosa serve l istruzione finally dopo un blocco try? il blocco finally è obbligatorio e contiene istruzioni che vengono comunque eseguite sia che sia stata che non sia stata sollevata un eccezione; il blocco finally è facoltativo e contiene istruzioni che vengono comunque eseguite sia che sia stata che non sia stata sollevata un eccezione; il blocco finally è facoltativo e contiene istruzioni che vengono eseguite solo se sia stata sollevata un eccezione; il blocco finally è facoltativo e contiene istruzioni che vengono eseguite solo se non sia stata sollevata un eccezione. 75

76 8)Qual è la differenza tra le eccezioni checked e unchecked? Non c è nessuna differenza sono entrambe libere da costrizioni programmative; Non c è nessuna differenza sono entrambe controllate dal compilatore; Le eccezioni checked vengono controllate dal compilatore, mentre le eccezioni unchecked sono libere da costrizioni programmative; Le eccezioni checked sono libere da costrizioni programmative, mentre le eccezioni unchecked vengono controllate dal compilatore. 9)Quale dei seguenti costrutti per la gestione delle eccezioni è giusto? try{ istruzione1(); istruzione2();... catch(exception1 e1) { // gestione dell'eventuale problema nato nel blocco try catch(exception2 e2) { // gestione dell'eventuale problema nato nel blocco try; 76

77 finally{ // codice da eseguire comunque al termine del blocco try try{ istruzione1(); istruzione2();... catch(exception1 e1) { // gestione dell'eventuale problema nato nel blocco try catch(exception2 e2) { // gestione dell'eventuale problema nato nel blocco try; try{ istruzione1(); istruzione2();... try{ istruzione1(); istruzione2();... catch(exception1 e1) { // gestione dell'eventuale problema nato nel blocco try; 77

78 try{ istruzione1(); istruzione2();... try{ istruzione1(); istruzione2();... catch(exception1 e1) { // gestione dell'eventuale problema nato nel blocco try catch(exception2 e2) { // gestione dell'eventuale problema nato nel blocco try; 10)Quale dei seguenti non è un modo per gestire le eccezioni? Un eccezione può essere catturata e gestita all interno di un metodo tramite il costrutto try/catch; Un eccezione può essere generata all interno di un metodo tramite il costrutto throw; Un eccezione può essere generata all interno di un metodo tramite il costrutto throws; 78

79 Un eccezione può essere propagata verso il metodo chiamante che può catturare e gestire l eccezione o continuare la propagazione tramite la definizione del metodo throws. 11) Nel main, per gestire le eccezioni, quale tipo di costrutto viene utilizzato? try/catch; throws; throw; java.io.ioexception. 12)Quale classe si trova in cima alla gerarchia delle eccezioni? Throwable; Error; Exception; Runtime Exception. 79

80 13)Cosa succede se un eccezione non viene intercettata? Nulla, il programma viene eseguito ugualmente ; Si verifica un interruzione anomala del programma; Un eccezione viene sempre intercettata dalla JVM; Il programma viene eseguito ma in maniera errata. 14)Quali sono le due dirette sottoclassi di Throwable? Exception e RuntimeException; Error e Exception; Error e RuntimeException; checked e unchecked. 15)Quali dei seguenti modi non può generare un eccezione? Un eccezione può essere generata esplicitamente con l istruzione throws; Un eccezione può essere generata da un errore nella JVM; Un eccezione può essere generata da un errore nel programma; Un eccezione può essere generata esplicitamente con l istruzione throw. 80

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

ELEMENTI DI PROGETTAZIONE SOFTWARE

ELEMENTI DI PROGETTAZIONE SOFTWARE ELEMENTI DI PROGETTAZIONE SOFTWARE Massimiliano Redolfi Lezione 7: la fortezza Perché un sistema sia robusto ogni suo componente deve essere robusto. Una semplice metodo public class Main { public static

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica

Dettagli

Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/2013 1 SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE

Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/2013 1 SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE Università degli Studi di Bologna Scuola di Ingegneria e Architettura Eccezioni Corso di Laurea in Ingegneria Informatica Anno accademico 2012/2013 Prof. ENRICO DENTI Dipartimento di Informatica Scienza

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

Operazioni di scrittura e lettura con periferici in linguaggio Java Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println

Dettagli

Cifratura simmetrica

Cifratura simmetrica Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave

Dettagli

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Flussi, lettori e scrittori

Flussi, lettori e scrittori Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,

Dettagli

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; } Java è un linguaggio di programmazione c indipendente dalla piattaforma, ovvero un linguaggio di programmazione che permette di compilare i programmi una volta sola e di installarli su computer che usano

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Jav@Lab Il linguaggio Java I file sequenziali

Jav@Lab Il linguaggio Java I file sequenziali Jav@Lab Il linguaggio Java I file sequenziali Input e Output Secondo i canoni dei linguaggi di programmazione "procedurali" il concetto di input e output è strettamente legato al tipo di dispositivo esterno

Dettagli

Java Native Interface Appunti

Java Native Interface Appunti Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O

Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep

Dettagli

Linguaggi di programmazione II Silvio Imbòsilim@libero.it

Linguaggi di programmazione II Silvio Imbòsilim@libero.it Linguaggi di programmazione II Silvio Imbòsilim@libero.it Obiettivo del corso Divulgare la conoscenza di aspetti piùevoluti di programmazione in linguaggio Java, di metodologie di programmazione ad oggetti

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal

Dettagli

13. Chain of Responsibility

13. Chain of Responsibility Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire

Dettagli

Laboratorio di Informatica Lezione 4

Laboratorio di Informatica Lezione 4 Laboratorio di Informatica Lezione 4 Cristian Consonni 28 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 4 1 / 42 Outline 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la

Dettagli

Esercizi classi e array

Esercizi classi e array Esercizi classi e array Raffaella Brighi, a.a. 2006/07 Corso di Algoritmi e programmazione. A.A. 2006-07 CdL Operatore Informatico Giuridico. Progetto DataSet Realizzare una classe DataSet per la gestione

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

La gestione di file e flussi in Java: note introduttive

La gestione di file e flussi in Java: note introduttive Università degli Studi di Palermo Facoltà di Ingegneria La gestione di file e flussi in Java: note introduttive Edoardo Ardizzone & Riccardo Rizzo Appunti per il corso di Fondamenti di Informatica A.A.

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

Dettagli

introduzione alla programmazione in Java classi, oggetti ed altro

introduzione alla programmazione in Java classi, oggetti ed altro introduzione alla programmazione in Java classi, oggetti ed altro nomi file ed estensioni file.java: sorgenti Java creati con editor javac.exe: compilatore Java es.: per compilare il sorgente in pippo.java

Dettagli

789:;<:' .&+/"0&12%34%5&66+,("%3787%% %"+&%88$77%9%8:$:7%% ;<'&12%8%=,+>"%3787 % % % %"+&%88$77%9%8:$:7%

789:;<:' .&+/0&12%34%5&66+,(%3787%% %+&%88$77%9%8:$:7%% ;<'&12%8%=,+>%3787 % % % %+&%88$77%9%8:$:7% !"#$"%&'()')*+'!"#$%!&'()%*&++,+&-%%!"#$%&'"(()("*+,#$'"&$-. 789:;"%3787 % % % %"+&%88$77%9%8:$:7%?("'(%)"'"%'&0% 0,6"+,@"+("%1(%A'5"+=,B/,%C+,'1&$%

Dettagli

Input e Output in Java

Input e Output in Java Input e Output in Java Stream Redirecting Scomposizione dell input Uso di file Set di caratteri 1 Inserimento dati e test Riconsideriamo la versione iniziale della classe DataSet usata per illustrare le

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012 Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1 Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double

Dettagli

Un flusso (stream) è una astrazione che produce e/o consuma informazioni.

Un flusso (stream) è una astrazione che produce e/o consuma informazioni. I programmi Java eseguono l I/O mediante i flussi. Un flusso (stream) è una astrazione che produce e/o consuma informazioni. Ogni flusso è collegato ad un dispositivo fisico dal sistema di I/O di java.

Dettagli

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002. INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Corso di Reti di Calcolatori. java.net.url

Corso di Reti di Calcolatori. java.net.url Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (2 a parte) paolo.trunfio@deis.unical.it 1 java.net.url URL (String spec) crea un oggetto URL

Dettagli

Applicazioni TCP/IP. Maurizio Cozzetto. Brescia 20 agosto 2014

Applicazioni TCP/IP. Maurizio Cozzetto. Brescia 20 agosto 2014 Applicazioni TCP/IP Maurizio Cozzetto Brescia 20 agosto 2014 Un po' di teoria Ricordiamo che un'applicazione distribuita e un'applicazione composta da piu programmi (almeno 2) posti in esecuzione su macchine

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP D /LQH&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: i inviano al server pacchetti (vuoti) che vengono interpretati dal server come richiesta

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Programmare con le Socket TCP in java. 2: Application Layer 1

Programmare con le Socket TCP in java. 2: Application Layer 1 Programmare con le Socket TCP in java 2: Application Layer 1 Il Client contatta il server Il Server: Il processo server è sempre attivo in attesa di connessioni (demone) Crea una socket per accettare la

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Introduzione a Java. Jacopo Torrini. Dipartimento di Sistemi e Informatica Laboratorio di Tecnologie del Software. torrini@dsi.unifi.

Introduzione a Java. Jacopo Torrini. Dipartimento di Sistemi e Informatica Laboratorio di Tecnologie del Software. torrini@dsi.unifi. Introduzione a Java Jacopo Torrini Dipartimento di Sistemi e Informatica Laboratorio di Tecnologie del Software torrini@dsi.unifi.it Introduzione Il linguaggio Java è un linguaggio di alto livello con

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Sviluppo Web Autore: Alessio Bernardo Revisione: 1 Data: 23/05/13 Titolo: Sviluppo piattaforma e-learning e sviluppo siti web File: Documentazione tecnica Sito:

Dettagli

Programmazione Java (Applicazioni e Applet )

Programmazione Java (Applicazioni e Applet ) Programmazione Java (Applicazioni e Applet ) Prof. Flavio Cerini Dopo aver installato il JDK 1.4.1_01 e inserito il percorso della cartella \bin nel PATH si possono provare i seguenti programmi funzionanti.

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete Compito in classe proposto Realizzare un applicazione C/S per trasferire al Client il contenuto

Dettagli

File, flussi e pacchetto java.io

File, flussi e pacchetto java.io File, flussi e pacchetto java.io Formato binario e formato di testo I dati sono memorizzati nei files in due formati: testo (successione di caratteri) binario (successione di bytes) Ad es. numero 12345

Dettagli

Sviluppo Applicazioni Mobile Lezione 13. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 13. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 13 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Introduzione all'uso di JAVA. Come si scrive, compila, esegue una applicazione Java con uso di IDE JCreator?

Introduzione all'uso di JAVA. Come si scrive, compila, esegue una applicazione Java con uso di IDE JCreator? Introduzione all'uso di JAVA Che cosa è Java? 1. Un architettura interpiattaforma ed un linguaggio di programmazione OO con cambio di paradigma rispetto alla tradizionale impostazione procedurale. 2. Funziona

Dettagli

Sistemi Web per il turismo - lezione 3 -

Sistemi Web per il turismo - lezione 3 - Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa

Dettagli

Esercizi e soluzioni

Esercizi e soluzioni Esercizi e soluzioni Esercizi e soluzioni Esercizi modulo 1 Esercizio 1.a) HelloWorld Digitare, salvare, compilare ed eseguire il programma HelloWorld. Consigliamo al lettore di eseguire questo esercizio

Dettagli

Il linguaggio C# Eventi ed eccezioni

Il linguaggio C# Eventi ed eccezioni Tecniche di Programmazione avanzata Corso di Laurea Specialistica in Ingegneria Telematica Università Kore Enna A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it

Dettagli

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Input/Output in Java

Input/Output in Java Corso Java Input/Output in Java Docente: Dott. Marco Bianchi Slide realizzate da Ing. A.Bei, Dott. M.Bianchi, Dott. F.Lombardi Input/Output in Java Per effettuare operazioni di I/O in Java è possibile

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione

Dettagli

Laboratorio di Programmazione di Rete Corso A

Laboratorio di Programmazione di Rete Corso A Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

DATI IDENTIFICATIVI DEL PROGETTO

DATI IDENTIFICATIVI DEL PROGETTO DATI IDENTIFICATIVI DEL PROGETTO N. VERSIONE 1.0 ITEM Integrazione con Java DATA DI USCITA PREVISTA DESCRIZIONE Creazione di DLL per integrazioni con Java Pag. 1 di 9 Descrizione dei requisiti Sezione

Dettagli