Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O
|
|
|
- Placido Sarti
- 9 anni fa
- Visualizzazioni
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 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
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)
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
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,
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
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
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.
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
(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
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/
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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: [email protected], SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e
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
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,
RMI. Java RMI RMI. G. Prencipe [email protected]
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
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++ è
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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/
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
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
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
