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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O Giordano Tamburrelli [email protected] hhp://giordano.webfac<onal.com 1

2 Richiamo di teoria: An excep%on is an event, which occurs during the execu<on of a program, that disrupts the normal flow of the program's instruc<ons. 2

3 Tipi di eccezioni Checked: devono essere ges<te» O catchate» O rilanciate esplicitamente Unchecked: Error rappresentano situazioni eccezionali esterne all applicazione, che è difficile prevedere e risolvere. Sono sohoclassi di Error Non devono essere ges<te necessariamente Run<me Excep<ons rappresentano situazioni eccezionali, interne all applicazione, che difficilmente si possono prevedere o risolvere Sono sohoclassi di Run<meExcep<on Non devono essere necessariamente ges<te 3

4 Esercizio: Cosa stampa? public static void f() throws Exception{ System.out.println("Throw new Exception in f()"); throw new Exception("Generated in f()"); public static void g() throws Exception{ try { f(); catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); throw ex; public static void main(string[] args){ try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); Stampa: Throw new Excep<on in f() Excep<on catched in g(). Rethrow Excep<on catched in main(). Just stay Generated in f() 4

5 Esercizio: Cosa stampa? public static void f() throws Exception { System.out.println("Throw new Exception in f()"); throw new Exception("Generated in f()"); public static void g() throws Exception { try { f(); catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); throw new Exception("Generated in g()"); public static void main(string[] args) { try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); Stampa: Throw new Excep<on in f() Excep<on catched in g(). Rethrow Excep<on catched in main(). Just stay Generated in g() 5

6 Esercizio: Cosa stampa? public static void f() throws Exception { System.out.println("Throw new Exception in f()"); throw new Exception("Generated in f()"); Stampa: Throw new Excep<on in f() Excep<on catched in g(). Rethrow Excep<on catched in main(). Just stay Generated in g() public static void g() throws Exception { try { f(); catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); Exception newe= new Exception("Generated in g()",ex); throw newe; public static void main(string[] args) { try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); Genero una nuova eccezione e specifico la causa che la ha generata. TuHavia in questo esempio non l ho poi usata. 6

7 Esercizio: Cosa stampa? public static void f() throws Exception { System.out.println("Throw new Exception in f()"); throw new Exception("Generated in f()"); public static void g() throws Exception { try { f(); catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); Exception newe= new Exception("Generated in g()",ex); throw newe; Stampa: Throw new Excep<on in f() Excep<on catched in g(). Rethrow Excep<on catched in main(). Just stay Generated in g() Causa: Generated in f(); public static void main(string[] args) { try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); System.out.println("Causa: " +ex.getcause().getmessage()); Adesso stampo il messaggio rela<vo alla causa che ha generato l eccezione in g() 7

8 Esercizio: Cosa stampa? public static void f() throws Exception { System.out.println("Throw new Exception in f()"); throw new MyException("Generated in f()"); public static void g() throws Exception { try { f(); catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); throw ex; catch (MyException ex) { System.out.println("MyException catched in g(). Rethrow"); throw ex; public static void main(string[] args) { try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); class MyException extends Exception{ MyException(String msg){ super("this is an instance of MyException. Message: " +msg); Errore a compile <me. L ordine con il quale cahuriamo le eccezioni è importante. La prima eccezione che è super- <po di quella lanciata verrà eseguito, gli altri ignora<. Il catch di MyExcep<on va spostato sopra 8

9 Esercizio: Cosa stampa? public static void f() throws Exception { System.out.println("Throw new Exception in f()"); throw new MyException("Generated in f()"); public static void g() throws Exception { try { f(); catch (MyException ex) { System.out.println("MyException catched in g(). Rethrow"); throw ex; catch (Exception ex) { System.out.println("Exception catched in g(). Rethrow"); throw ex; public static void main(string[] args) { try { g(); catch (Exception ex) { System.out.println("Exception catched in main(). Just stay"); System.out.println(ex.getMessage()); class MyException extends Exception{ MyException(String msg){ super("this is an instance of MyException. Message: " +msg); Stampa: Throw new Excep<on in f() MyExcep<on catched in g(). Rethrow Excep<on catched in main(). Just stay This is an instance of MyExcep<on. Message: Generated in f() 9

10 Esercizio: Vogliamo modellizzare un sistema di 3 Robot per la preparazione di RiceHe. Il sistema è composto da 1 Dispensa 1 RiceHa 1 Robot Cuoco 1 Robot per la spesa 1 Robot per l assaggio Il robot cuoco cerca gli ingredien< nella dispensa. Se tui gli ingredien< sono presen< in cucina, la riceha viene preparata e conseguentemente gli ingredien< consuma<. La cohura può fallire. Il robot per la dispensa è in grado di comprare gli ingredien< e inserirli in dispensa. Il robot per l assaggio assaggia un determinato piaho, se il piaho non è buono il robot cuoco lo prepara nuovamente. Vediamo prima il sistema senza eccezioni. 10

11 Main senza alcuna ges<one public static void main(){ ArrayList dispensa=new ArrayList(); dispensa.add(new Ingrediente("Sugo",1)); dispensa.add(new Ingrediente("Basilico",1)); dispensa.add(new Ingrediente("Sale",0)); ArrayList ricetta=new ArrayList(); ricetta.add(new Ingrediente("Sugo",2)); ricetta.add(new Ingrediente("Basilico",1)); ricetta.add(new Ingrediente("Sale",1)); RobotCuoco cuoco=new RobotCuoco(); RobotSpesa spesatore=new RobotSpesa(); RobotAssaggiatore assaggiatore=new RobotAssaggiatore(); Piatto p=cuoco.cucina(ricetta, dispensa); assaggiatore.assaggia(p); 11

12 La struhura delle classi class Piatto{ class Robot{ class RobotCuoco extends Robot{ public Piatto cucina(arraylist ricetta, ArrayList dispensa){... class RobotSpesa extends Robot{ public void spesa(arraylist dispensa, Ingrediente chemanca){... class RobotAssaggiatore extends Robot{ class Ingrediente{ int quantità; String nome; public Ingrediente(String nome, int quantità){ this.nome=nome; this.quantità=quantità; public boolean equals(object o){ return ((Ingrediente)o).nome.equals(this.no me); public void assaggia(piatto p){... 12

13 Come ges<amo le eccezioni? public Piatto cucina(arraylist ricetta, ArrayList dispensa){ for(int i=0; i<ricetta.size(); i++ ){ Ingrediente IngrRicetta=((Ingrediente)ricetta.get(i)); if(!dispensa.contains(ingrricetta)) ;//manca un Ingrediente Ingrediente IngrInDispensa=(Ingrediente)dispensa.get(dispensa.indexOf(IngrRicetta)); if(ingrindispensa.quantità<ingrricetta.quantità) ; //la quantità dell'ingrediente non è sufficente //tutti gli ingradienti sono presenti cucino for(int i=0; i<ricetta.size(); i++ ){ Ingrediente IngrRicetta=((Ingrediente)ricetta.get(i)); Ingrediente IngrInDispensa=(Ingrediente)dispensa.get(dispensa.indexOf(IngrRicetta)); IngrInDispensa.quantità--; //la cottura può fallire Random r=new Random(18); if(r.nextint(3)<1) ; //cottura fallita //Cottura riuscita return new Piatto(); 13

14 Soluzione public Piatto cucina(arraylist ricetta, ArrayList dispensa) throws MancaIngredienteException { Random r = new Random(18); do { for (int i = 0; i < ricetta.size(); i++) { Ingrediente IngrRicetta = ((Ingrediente) ricetta.get(i)); if (!dispensa.contains(ingrricetta)) { throw new MancaIngredienteException(IngrRicetta); Ingrediente IngrInDispensa = (Ingrediente) dispensa.get(dispensa.indexof(ingrricetta)); if (IngrInDispensa.quantità < IngrRicetta.quantità) { throw new MancaIngredienteException(IngrRicetta); //tutti gli ingradienti sono presenti //cucino... for (int i = 0; i < ricetta.size(); i++) { Ingrediente IngrRicetta = ((Ingrediente) ricetta.get(i)); Ingrediente IngrInDispensa = (Ingrediente) dispensa.get(dispensa.indexof(ingrricetta)); IngrInDispensa.quantità--; while (r.nextint(3) < 1); //se la cottura fallisce ricucino //Cottura riuscita return new Piatto(); 14

15 Soluzione class MancaIngredienteException extends Exception { Ingrediente i; MancaIngredienteException(Ingrediente i) { this.i = i; Nel main try { System.out.println("Cucino"); p = cuoco.cucina(ricetta, dispensa); catch (MancaIngredienteException ex) { System.out.println("Faccio la spesa"); spesatore.spesa(dispensa, ex.i); 15

16 Come ges<amo le eccezioni? class RobotAssaggiatore extends Robot{ public void assaggia(piatto p){ //Non modellizzo l'assaggio del piatto, quindi //la variabile p resta inutilizzata Random r=new Random(System.currentTimeMillis()); try { Thread.sleep(1000); catch (InterruptedException ex) { //nada... if(r.nextint(6)>1) ; //il piatto non mi è piaciuto else ; //il piatto mi è piaciuto 16

17 Soluzione class RobotAssaggiatore extends Robot{ public boolean assaggia(piatto p){ //Non modellizzo l'assaggio del piatto, quindi //la variabile p resta inutilizzata Random r=new Random(System.currentTimeMillis()); try { Thread.sleep(1000); catch (InterruptedException ex) { //nada... if (r.nextint(6) > 1) return false; //il piatto non mi è piaciuto else return true; //il piatto mi è piaciuto 17

18 Il main finale Piatto p = null; boolean mipiace=false; do { try { System.out.println("Cucino"); p = cuoco.cucina(ricetta, dispensa); catch (MancaIngredienteException ex) { System.out.println("Faccio la spesa"); spesatore.spesa(dispensa, ex.i); mipiace=assaggiatore.assaggia(p); if(mipiace==false) System.out.println("Non mi piace..."); while(mipiace==false); System.out.println("Mi piace!"); 18

19 L esercizio sui Robot da cucina mostra come sia possibile ges<re le situazioni di errore in maniera differente. A seconda del contesto e dal <po di errore si può scegliere di Usare il meccanismo di eccezioni di Java In par<colare le eccezioni sono molto u<li in quanto oggei complessi che possono riportare informazioni per il recovery dell errore (nell esempio, l Ingrediente mancante) Usare il valore di ritorno per ges<re l errore nel chiamante Questo caso presuppone che il nostro valore di ritorno non sia già usato per altri scopi. Risolvere la situazione internamente al metodo Se l errore è confinato e si verifica solamente all interno del metodo che s<amo eseguendo (nell esempio, cucina()), probabilmente non è necessario creare un eccezione. 19

20 Java I/O I flussi rappresentano una sequenza di da< Si può usare un Input Stream per leggere da< Si può usare un Output Stream per scrivere i da< 20

21 Java: I/O TuHe le classi discendono da InputStream e OutputStream. Ogni sohoclasse permehe di ges<re sorgen< da< di <po differente. InputStream OutputStream FIlterInputStream FIleInputStream ObjectInputStream FIlterOutputStream FIleOutputStream ObjectOutputStream BufferedInputStream DataInputStream BufferedOutputStream DataOutputStream Quella presentata è solo una piccola parte delle classi disponibili, per dehagli vedere la Java documenta<on 21

22 Java: I/O Esercizio: Copiare due file disinteressandosi del loro contenuto public void copia(string src, String dest) throws IOException { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); int c; while ((c = in.read())!= -1) out.write(c); in.close(); out.close(); 22

23 Java: I/O Esercizio: Copiare due file disinteressandosi del loro contenuto (soluzione alterna<va) public void copia(string src, String dest) throws IOException { Runtime.getRuntime().exec("cp " + src + " " + dest); Ogni applicazione Java possiede una instanza singola della classe Run<me che permehe alle applicazioni Java di andarsi a interfacciare con l environment nel quale l applicazione sta girando. In questo caso abbiamo lanciato la nostra applicazione da una shell unix, quindi possiamo interagire con la shell ed eseguire dei comandi come cp. 23

24 Java: I/O Esercizio: Copiare il contenuto di un file di testo sorgente in un file di testo di des<nazione, carahere per carahere. public void copia(string src, String dest) throws IOException{ InputStream in = new DataInputStream(new FileInputStream(src)); OutputStream out = new DataOutputStream(new FileOutputStream(dest)); int c; while ((c = in.read())!= -1) { out.write(c); in.close(); out.close(); In questo caso non ho nessun vantaggio. Con<nuo a usare il metodo read() il quale avrà la stessa iden<ca implementazione di InputStream. 24

25 Java: I/O Esercizio: Copiare il contenuto di un file di testo sorgente in un file di testo di des<nazione, carahere per carahere. (migliorato) public void copia(string src, String dest) throws IOException{ DataInputStream in = new DataInputStream(new FileInputStream(src)); DataOutputStream out = new DataOutputStream(new FileOutputStream(dest)); try{ while(true){ int c = in.readchar(); out.writechar(c); catch(eofexception e){ System.out.println("End of file"); in.close(); out.close(); readchar() è un metodo offerto da DataInputStream. E presente un metodo readxxx per ogni <po primi<vo di Java. RispeHo a prima è cambiato il contraho per il <po di ritorno. Adesso dobbiamo ges<re esplicitamente la fine dello stream 25

26 Java: I/O Esercizio: Copiare il contenuto di un file di testo sorgente in un file di testo di des<nazione, carahere per carahere. (soluzione alterna<va) public void copia(string src, String dest) throws IOException{ DataInputStream in = new DataInputStream(new FileInputStream(src)); DataOutputStream out = new DataOutputStream(new FileOutputStream(dest)); while(in.available()>0){ int c = in.readchar(); out.writechar(c); in.close(); out.close(); available() ritorna leheralmente il numero di bytes che è possibile leggere dall input stream senza bloccarsi. Per i file funziona tuho, ma per stream differen< potrebbe non coincidere con la fine del file. In quel caso consultare la javadoc. 26

27 Java: I/O Esercizio: Creare un metodo che preso in ingresso un file di output, scrive dentro il file tuho quello che viene digitato dall utente su terminale fino al carahere #. public void writeondest(string dest) throws IOException { DataInputStream in = new DataInputStream(System.in); DataOutputStream out = new DataOutputStream(new FileOutputStream(dest)); char c; while ((c = in.readchar())!= '#') { out.writechar(c); in.close(); out.close(); Non funziona Il programma non riconosce il carahere #... 27

28 Java: I/O You might expect the Standard Streams to be character streams, but, for historical reasons, they are byte streams. System.out and System.err are defined as PrintStream objects. Although it is technically a byte stream, PrintStream u<lizes an internal character stream object to emulate many of the features of character streams. By contrast, System.in is a byte stream with no character stream features. To use Standard Input as a character stream, wrap System.in in InputStreamReader. InputStreamReader cin = new InputStreamReader(System.in); 28

29 Java: I/O Esercizio: Creare un metodo che preso in ingresso un file di output, scrive dentro il file tuho quello che viene digitato dall utente su terminale fino al carahere # public void writeondest(string dest) throws IOException { InputStreamReader in = new InputStreamReader(System.in); OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(dest)); int c; while ((c = in.read())!= '#') { out.write(c); in.close(); out.close(); 29

30 Java: I/O Le classi Reader e Writer sono delle classi speciali per ges<re l I/O in Java. Mediante delle opportune funzionalità aggiun<ve possono anche ges<re l internazionalizzazione dell applicazione. Non sono degli stream, ma u4lizzano al loro interno gli stream. Reader Writer.. BufferedReader InputStreamReader BufferedWriter InputStreamWriter FileReader FileWriter 30

31 Java: I/O Le classi Reader e Writer sono state introdohe con la JDK1.1 appositamente per ges<re i caraheri. Per maggiori info: hhp://java.sun.com/developer/technicalar<cles/streams/ ProgIOStreams/ La Java I/O library ha subito un ulteriore modifica con l introduzione di java.nio. L obieivo di questa libreria è lo speed up dell input/output Per maggiori info: hhp://download.oracle.com/javase/1.4.2/docs/guide/nio/ index.html 31

32 Java: I/O Esercizio: Cosa succede se il file src non esiste? public void copia(string src, String dest) throws IOException { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); int c; while ((c = in.read())!= -1) out.write(c); in.close(); out.close(); Excep<on in thread "main" java.io.filenotfoundexcep<on: file1.txt (No such file or directory) at java.io.fileinputstream.open(na<ve Method) at java.io.fileinputstream.<init>(fileinputstream.java:137) at java.io.fileinputstream.<init>(fileinputstream.java:96) at es03.inputoutput1.copia(inputoutput1.java:24) at es03.inputoutput1.main(inputoutput1.java:45) 32

33 Java: I/O Esercizio: Cosa succede se il file dest non esiste? public void copia(string src, String dest) throws IOException { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); int c; while ((c = in.read())!= -1) out.write(c); in.close(); out.close(); Nessun Errore. Ancora una volta la soluzione migliore è aprire la Java doc e vedere il dehaglio dei metodi. 33

34 Java: I/O public class FileNotFoundExcep<on extends IOExcep<on Signals that an ahempt to open the file denoted by a specified pathname has failed. This excep<on will be thrown by the FileInputStream, FileOutputStream, and RandomAccessFile constructors when a file with the specified pathname does not exist. It will also be thrown by these constructors if the file does exist but for some reason is inaccessible, for example when an ahempt is made to open a read- only file for wri<ng. public class FileOutputStream extends OutputStream A file output stream is an output stream for wri<ng data to a File or to a FileDescriptor. Whether or not a file is available or may be created depends upon the underlying pla~orm. Some pla~orms, in par<cular, allow a file to be opened for wri<ng by only one FileOutputStream (or other file- wri<ng object) at a <me. In such situa<ons the constructors in this class will fail if the file involved is already open. 34

35 Java: I/O Esercizio: E qui cosa succede se src e dst non esistono? public void copia2(string src, String dest) throws IOException { Runtime.getRuntime().exec("cp " + src + " " + dest); Nessun Errore. La seman<ca di IOExcep<on cambia a seconda del contesto. In questo caso vogliamo poter mandare il nostro input alla shell. Il nostro contesto va completamente rivisto. Adesso la shell sarà il nostro file sul quale scrivere (eseguendo il comando). Il faho che src e dest non esistono è un problema dell applicazione shell, non più di Java. Quindi: Ragionare sempre su cosa s<amo facendo. Usare la Java documenta<on. 35

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

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

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

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

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

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

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

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

(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

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi Pila di Oggetti Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577 234850 - interno: 7102 [email protected] http://www.dii.unisi.it/~rigutini/

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

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

Introduzione. Java. Streams. Streams

Introduzione. Java. Streams. Streams Java il sistema di I/O G. Prencipe [email protected] Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la

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

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

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

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

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

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

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

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

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

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY 1 Sommario 1. INTRODUZIONE... 3 2. GET METAIO... 4 2.1. PREREQUISITI... 4 2.2. INTALLAZIONE... 4 2.3. PROGETTI ESEMPLIFICATIVI... 4 3. USARE

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

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

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita

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

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Appunti di Informatica www.mimmocorrado.it 1

Appunti di Informatica www.mimmocorrado.it 1 Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il

Dettagli

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: [email protected], SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: [email protected], SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

Le command line di Java

Le command line di Java Le command line di Java Esercitazioni di Programmazione 2 Novella Brugnolli [email protected] Ambiente di lavoro Per compilare ed eseguire un programma Java abbiamo bisogno di: The JavaTM 2 Platform,

Dettagli

RMI. Java RMI RMI. G. Prencipe [email protected]

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe [email protected] RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD Introduzione alla programmazione Java Dott. Ing. M. Banci, PhD Obiettivi del corso Creare, compilare, e eseguire programmi Java Tipi di dato primitivi Flusso di controllo Java Metodi Arrays Introduzione

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

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

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

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

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008 Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

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

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie

Dettagli

Corso Android New Edition Corso Online Programmatore Android New Edition

Corso Android New Edition Corso Online Programmatore Android New Edition Corso Android New Edition Corso Online Programmatore Android New Edition Accademia Domani Via Pietro Blaserna, 101-00146 ROMA (RM) [email protected] Programma Generale del Corso di Programmatore

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

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

Programmare in Java. Olga Scotti

Programmare in Java. Olga Scotti Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

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

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dell ambiente di sviluppo, compilazione ed esecuzione 1 Introduzione Java è un linguaggio

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

Laboratorio di Informatica Lezione 2

Laboratorio di Informatica Lezione 2 Laboratorio di Informatica Lezione 2 Cristian Consonni 30 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 2 1 / 42 Outline 1 Commenti e Stampa a schermo 2 Strutture di controllo 3

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

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

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

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

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) Esercizi PARTE 1 Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert) When you make a phone call, it s usually the callee that answers with hello. What changes to our example client and server would

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 [email protected] http://www.dii.unisi.it/~rigutini/

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

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

1. Soluzione esercizio XYZ SpA

1. Soluzione esercizio XYZ SpA 1. Soluzione esercizio XYZ SpA 2. Oggetti fstream e loro uso Si vuole realizzare un piccolo sistema informativo a supporto dell'attività dell'ufficio dipendenti della società XYZ SpA. Tale società opera

Dettagli