Laboratorio di Reti Lezione 3. JAVA IO Abstraction Streams. 8/3/2016 Laura Ricci

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Reti Lezione 3. JAVA IO Abstraction Streams. 8/3/2016 Laura Ricci"

Transcript

1 Laboratorio di Reti Lezione 3 8/3/2016 Laura Ricci Laura Ricci 1

2 MODELLARE L'IO IN JAVA una delle parti più complesse di un linguaggio di programmazione, riguarda la definizione di un insieme di astrazioni per la gestione dell'io il computer può essere connesso a diversi tipi di device di input/output e se il linguaggio dovesse gestire ogni tipo di device come caso speciale, la complessità sarebbe enorme necessità di astrazioni opportune per rappresentare una device di I/O in JAVA, tutte le astrazioni sono basate sul concetto di: stream (o flusso) altre astrazioni per l'i/o File: per manipolare descrittori di files Channels. Laura Ricci 2

3 JAVA PACKAGE PER L'IO JAVA IO API contenuta nel JAVA IO package (java.io): vastissima quantità di classi può rendere difficile l'uso JAVA NIO API: funzionalità simili a quelle contenute nelle classi dijava IO, ma con comportamento non bloccante: migliori performance in alcuni scenari librerie abbastanza stabili a partire da JAVA 5 che relazione con il corso di programmazione di rete? connessioni TCP modellata come uno stream la scrittura su una connessione di rete è una operazione di IO un pacchetto UDP contiene un vettore di byte generazione di stream di byte e conversione in vettori analizzate nelle prossime lezioni Laura Ricci 3

4 IL CONCETTO DI STREAM un'astrazione che rappresenta una connessione tra un programma JAVA ed un canale di comunicazione, un file, un buffer di memoria, una connessione di rete un condotto tra una sorgente ed una destinazione (dal programma ad un dispositivo o viceversa), da un estremo entrano dati, dall'altro escono un flusso di informazione di lunghezza illimitata l applicazione può inserire dati ad un capo dello stream i dati fluiscono verso la destinazione e possono essere estratti dall altro capo dello stream Laura Ricci 4

5 JAVA STREAMS: CARATTERISTICHE GENERALI accesso sequenziale mantengono l ordinamento FIFO read only o write only bloccanti: quando un applicazione legge un dato dallo stream (o lo scrive) si blocca finchè l operazione non è completata (ma le ultime versioni di JAVA introducono l I/O non bloccante non è richiesta una corrispondenza stretta tra letture/scritture ad esempio: una unica scrittura inietta 100 bytes sullo stream, che vengono letti con due write successive 'all'altro capo dello stream', la prima legge 20 bytes, la seconda 80 bytes) Laura Ricci 5

6 STREAM: CARATTERISTICHE GENERALI Stream diversi per tipi diversi di I/O: console: System.out, System.in files: FileInputStream/FileOutputStream per leggere/scrivere dati da un file programmi: modellare il trasferimento di dati da una parte all'altra di un programma JAVA. ByteArrayOutput,ByteArrayInput, ad esempio utilizzati per modellare il trasferimento di stream di byte generati dal programma JAVA in pacchetti da spedire con UDP. Il trasferimento in questo caon avviene tra due strutture dati in memoria connessioni TCP Laura Ricci 6

7 CLASS ZOO IN JAVA IO più di 60 tipi di diversi stream! basati su 4 classi astratte fondamentali: InputStream, OutputStream, Reader and Writer Input/OutputStream: leggono e scrivono valori di 8 bits (bytes). Utili per leggere /scrivere row data rappresentati in binario dati copiati byte a byte senza effettuare alcuna traduzione ideale per leggere file binari, leggere/scrivere: un'immagine a codifica di un video. Readers/ Writers leggono e scrivono caratteri Unicode di 16 bit: Humanreadable text Laura Ricci 7

8 CLASS ZOO IN JAVA IO Laura Ricci 8

9 INPUT/OUTPUT STREAM Input/OutputStream sono classi astratte che forniscono operazioni base alcuni metodi di InputStream int read( ) legge un byte dallo stream, se disponibile, altrimenti si blocca. Interpreta il valore di quel byte come un intero (0-255) e lo restituisce. Restituisce -1 se lo stream è terminato (end of input) long skip(long n) scarta i successivi n bytes int available( ) numero di bytes ancora disponibili sullo stream void close( ) Le classi concrete implementano (se il metodo è astratto)/effettuano l'overriding di questi metodi. Ad esempio: FileInputStream legge un byte da un file System.in è una sottoclasse di InputStream che permette di leggere byte a byte dalla keyboard Laura Ricci 9

10 InputStream HIERARCHY Laura Ricci 10

11 FILEINPUTSTREAM InputStream myin = new FileInputStream( input.bin ); boolean done = false ; while (!done) { int next = myin.read(); if (next == -1) { done = true; } else { byte b = (byte) next; // process input } } myin.close(); Laura Ricci 11

12 INPUT/OUTPUT STREAM il metodo read legge un byte (8 bit) e lo memorizza in un int (32 bits) solo il byte meno significativo dell'int contiene valori diversi da 0 cast da int a byte: si considerano solo gli 8 bit meno significativi, il restanti bit dell'intero vengono scartati problema classico: in JAVA, il tipo byte è un tipo con segno: 256 valori da -128 a 127 il primo bit del byte è considerato il bit del segno quando si converte un intero in un byte, solo il byte meno significativo del numero è tradotto il risultato può essere negativo, anche se l'intero è positivo Laura Ricci 12

13 BYTE LEVEL STREAMS: IL CIFRARIO DI CESARE un esempio di elaborazione byte level : leggere un file di input e scrivere una copia cifrata di questo file su un file di output implementiamo il Cifrario di Cesare (substitution cipher) semplice metodo che usa una chiave crittografica (un intero) che indica lo shift da utilizzare per la cifratura di un byte ad esempio, se un byte codifica un carattere e la chiave vale 3: processo invertibile Laura Ricci 13

14 BYTE LEVEL STREAMS: IL CIFRARIO DI CESARE import java.io.*; /** * Un encryptor cifra I file usando il cifrario di Cesare * Per decifrare, utilizzare un encryptor la cui chiave è * il negativo della chave di cifrature */ public class Encryptor { private int mkey; /** * Costuisce un Encryptor. akey encryption key */ public Encryptor(int akey) { mkey = akey; } Laura Ricci 14

15 BYTE LEVEL STREAMS: IL CIFRARIO DI CESARE public void encryptfile(string infile, String outfile) throws IOException { InputStream in = null; OutputStream out = null; try { in = new FileInputStream(inFile); out = new FileOutputStream(outFile); encryptstream(in, out); } finally { if (in!= null) { in.close();} if (out!= null) { out.flush(); out.close(); } } } Laura Ricci 15

16 BYTE LEVEL STREAMS: IL CIFRARIO DI CESARE public void encryptstream(inputstream in, OutputStream out) throws IOException { boolean done = false; while (!done) { int next = in.read(); if (next == -1) { done = true; } else { byte b = (byte) next; byte c = encrypt(b); out.write(c); } } } Laura Ricci 16

17 BYTE LEVEL STREAMS: IL CIFRARIO DI CESARE /** * Cifra un byte. b il byte fa crittare il byte crittato */ public byte encrypt(byte b) { return (byte)(b + mkey); } Laura Ricci 17

18 UN ESEMPIO: IL CIFRARIO DI CESARE public static void main (String args[]) } {Encryptor e= new Encryptor(Integer.parseInt(args[0])); try{ e.encryptfile(args[1],args[2]); } catch (Exception ex){}; } il programma precedente funziona solo per codifiche che richiedono un byte solamente dipende dalla codifica dei caratteri in input Laura Ricci 18

19 concetti base: Character Set CHARACTERS STREAMD: ENCODING Coded Character Set: un character set in cui ad ogni carattere viene assegnato un valore numerico, o code point Encoding: come i numeri che appartengono ad un coded character set sono rappresentati : 8 bit, una parola, una sequenza di bytes,... coded character sets comuni: ASCII (128 caratteri, 7 bits encoding all'interno di un byte) ISO (caratteri identici as ASCII da 0 a 128, altri caratteri da 160 a 255, 8 bit encoding, utilizzato da sistemi UNIX-based) Windows 1252(CP 1252) (come ASCII da 0 a 128, come ISO 8859 da 160 a altri caratteri, 8 bit encoding, utilizzato in Windows). Unicode Universal character set, gestito dall'unicode Consortium (unicode.org) Laura Ricci 19

20 UNICODE it provides the basis for processing, storage, and interchange of text data in any language in all modern software and information technology protocols, uno standard che associa ad ogni carattere utilizzato nel mondo, un solo codice numerico un sistema di codifica gestito dall'unicode Consortium, un consorzio internazionale di aziende. Sul sito web tavole di tutti Unicode. Unicode standardizza solo i codici associati ai caratteri Encoding (o CODEC): processo di trasformazione del carattere in una stringa di bytes Laura Ricci 20

21 UTILIZZARE LE TAVOLE UNICODE IN JAVA public class Characters { public static void main(string args[]) {char a = '\u65e5'; Character letter = new Character('\u00F6'); System.out.println(letter); System.out.println(a); } } \u+xxxx dove xxxx denota un carattere esadecimale, indica un carattere unicode (code point) il programma stampa i caratteri ö e? sul mio PC,? perchè \u65e5 è un carattere giapponese non supportato sul mio PC) Laura Ricci 21

22 UTF (UNICODE TRANSFORMATION FORMAT) Inizialmente 16 fixed-width encoding, attualmente diversi encoding (CODEC) per unicode: UTF (Unicode Transformation Format): UTF-8, UTF-16, UTF-32,... differenze fondamentali tra i diversi ncoding per Unicode: UTF-32 fixed length encoding UFF-8, UTF-16, variable length encoding UTF-8: minimo un byte (compatibile con ASCII), fino a 4 bytes, UTF-16 2 o 4 bytes JAVA utilizza UTF-16 Laura Ricci 22

23 CHARACTER ENCODINGS IN JAVA import java.io.*; public class Encodings { public static void main(string[] args) { byte[ ] Sbytes = null; int ndx; String sinitial = "Enc" + "\u4e94"; try { Sbytes = sinitial.getbytes("utf-16"); } catch( UnsupportedEncodingException uee ) {System.out.println( "Exception: " + uee); } System.out.println( sinitial + " String as UTF-16, " + "Sbytes length: " + Sbytes.length + "." ); for( ndx = 0; ndx < Sbytes.length; ndx++ ) {System.out.print( Integer.toHexString(Sbytes[ndx]) + " " ); ); } Laura Ricci 23

24 CHARACTER ENCODING System.out.println(" "); OutputStreamWriter osw = new OutputStreamWriter(System.out); String en =osw.getencoding(); Sbytes = sinitial.getbytes(); System.out.println(sInitial + "String as platform default -" + en + ", Sbytes length: " + Sbytes.length + "." ); for( ndx = 0; ndx < Sbytes.length; ndx++ ) { System.out.print( Integer.toHexString(Sbytes[ndx]) + " "); } Laura Ricci 24

25 CHARACTER ENCODING System.out.println(" "); try { Sbytes = sinitial.getbytes("utf-8"); } catch( UnsupportedEncodingException uee ) { System.out.println( "Exception: " + uee); } System.out.println( sinitial + " String as UTF-8, " + "Sbytes length: " + Sbytes.length + "." ); for( ndx = 0; ndx < Sbytes.length; ndx++ ) { System.out.print(Integer.toHexString( Sbytes[ ndx ] ) + " "); }}} Laura Ricci 25

26 CHARACTER ENCODING: OUTPUT Encö String as UTF-16, Sbytes length: 10. fffffffe ffffffff e fffffff6 Encö String as platform default - Cp1252, Sbytes length: e 63 fffffff6 Encö String as UTF-8, Sbytes length: e 63 ffffffc3 ffffffb6 da notare lunghezze diverse nelle diverse codifiche la funzione getbytes, senza parametri, effettua l'encoding usando quello utilizzato dalla piattaforma (in questo caso Windows), su cui è in esecuzione la JVM la funzione getencoding restituisce l'encoding della piattaforma ospite Laura Ricci 26

27 PASSARE DA STREAM DI BYTE A CARATTERI FileReader estende InputStreamReader: assume che i caratteri nel file siano codificati usando la codifica di default adottata dalla piattaforma locale (se non specificato diversamente) e converte i caratteri dalla codifica locale ad Unicode-UTf-16, mentre scorre il file InputStreamReader: un ponte tra stream di bytes e di caratteri permette di specificare un encoding particolare, così che possa essere utilizzato un insieme di diverso da quello di default si indica l'encoding del testo che si vuole leggere: file di testo generati con altri tool caratteri provenienti da input codificati secondo la piattaforma su cui JAVA viene eseguito. Laura Ricci 27

28 READERS E WRITERS import java.io.*; public class Encoding { public static void main(string[] args) throws java.io.unsupportedencodingexception { try { BufferedReader rdr = new BufferedReader( String line = rdr.readline(); System.out.println(line); } } catch (IOException exc) { new InputStreamReader( new FileInputStream("filename"), System.err.println("I/O error"); } "UTF-8")); Laura Ricci 28

29 JAVA: FILTER STREAMS System.in e System.out (standard in and standard out) sono istanze di Inputstream ed OutputStream, rispettivamente eredità di JAVA 1.0: prima dell'introduzione di Readers e di Writers per leggere da System.in: Laura Ricci 29

30 JAVA: FILTER STREAMS un filtro è uno stream ad alto livello che aggiunge alcune funzionalità allo stream a cui viene concatenato. Il filtro manipola in qualche modo i dati contenuti nello stream a più basso livello. le classi FilterInputStream and FilterOutputStream definiscono filtri di input e di output. diverse sottoclassi BufferedInputStream e BufferedOutputStream implementano filtri che bufferizzano l'input da/l'output verso lo stream sottostante DataInputStream and DataOutputStream implementano filtri che permettono di leggere/scrivere valori strutturati sullo stream sottostante.sottoclassi per comprimere i dati inviati sullo stream e molti altri. consentono di evitare di lavorare direttamente a livello di bytes o di caratteri Laura Ricci 30

31 JAVA: FILTER STREAMS DataOutputStream consente di trasformare dati di un tipo primitivo JAVA in una sequenza di bytes da iniettare su uno stream. FileOutputStream consente di trasferire uno stream di dati su un file FileOutputStream outputfile = new FileOutputStream("primitives.data"); DataOutputStream outputstream = new DataOutputStream(outputFile); Laura Ricci 31

32 JAVA: FILTER STREAMS le classi filtro BufferedInputStream e BufferedOutputStream implementano una bufferizzazione per stream di input e di output, rispettivamente. i dati vengono scritti e letti in blocchi di bytes, invece che un solo blocco per volta miglioramento significativo della performance FileOutputStream outputfile = new FileOutputStream("primitives.data"); BufferedOutputStream bufferedoutput = new BufferedOutputStream(outputFile); DataOutputStream outputstream = new DataOutputStream(bufferedOutput); Laura Ricci 32

33 VALUTARE EFFETTI BUFFERIZZAZIONE import java.io.*; import java.util.date; public class BufferDiff { public static void main(string args[]) throws IOException { FileOutputStream unbufstream; BufferedOutputStream bufstream; unbufstream=new FileOutputStream("test.one"); bufstream=new BufferedOutputStream(new FileOutputStream("test.two")); System.out.println("Write file unbuffered:"+time(unbufstream)+"ms"); System.out.println("Write file buffered:"+time(bufstream)+"ms"); } static int time(outputstream os) throws IOException { Date then = new Date(); for (int i = 0; i < ; i++) {os.write(1);} os.close(); return (int) ((new Date()).getTime() - then.gettime());} Write file unbuffered: 1646 ms Write file buffered: 16 ms Laura Ricci 33

34 TOKENIZING TEXT utile per dividere un file in una sequenza di tokens può essere associato ad un Reader Reader r = ; StreamTokenizer st = new StreamTokenizer(r); possono essere riconosciuti parole e numeri il campo ttype contiene il tipo del token riconosciuto public static integer constants: TT_WORD, TT_NUMBER, TT_EOL, TT_EOF public fields nval ed sval memorizzano il token appena letto come numero o stringa, rispettivamente Laura Ricci 34

35 STREAM TOKENIZER import java.io.*; public class TokenizerExample { public static void main(string[] args) throws IOException { FileReader filereader = new FileReader("Example.txt"); StreamTokenizer filetokenizer = new StreamTokenizer(fileReader); while(filetokenizer.nexttoken()!=streamtokenizer.tt_eof){ if(filetokenizer.ttype==streamtokenizer.tt_number){ System.out.println(filetokenizer.nval); }else if(filetokenizer.ttype==streamtokenizer.tt_word){ System.out.println(filetokenizer.sval); } } } } Laura Ricci 35

36 STREAM TOKENIZER: OUTPUT File di input: Mary has 1 little lab 2nd Line happy little lamb Output: Mary has 1.0 little lamb 2.0 nd Line happy little lamb Laura Ricci 36

37 STREAM TOKENIZER: OUTPUT Diversi metodi per specificare i tokens da riconoscere (vedere API!) WordChars specifica un range di caratteri che devono essere considerati parte di parole WhiteSpaceChars specifica un range di caratteri che servono per delimitare i token OrdinaryChars specifica che tutti i caratteri in un range non fanno parte di tokens e devono essere restituiti come sono CommentChar specifica un carattere che inizia un commento che termina alla fine di una linea quotechar specifica un carattere che delimita una stringa che deve essere restituita. Quando il metodo nexttoken incontra il carattere, il campo ttype è impostato al delimitatore e il campo sval al valore della stringa quotata Laura Ricci 37

38 import java.io.*; STREAM TOKENIZER: QUOTECHAR public class QuotedTokenizer { public static void main (String args[]){ try { BufferedReader myin = new BufferedReader(new FileReader(args[0])); StreamTokenizer st = new StreamTokenizer(myIn); st.quotechar('$'); while (st.nexttoken()!= StreamTokenizer.TT_EOF) { switch (st.ttype) { case StreamTokenizer.TT_NUMBER: System.out.println("number: "+st.nval); break; case StreamTokenizer.TT_EOL: System.out.println("end of line"); break; Laura Ricci 38

39 STREAM TOKENIZER case StreamTokenizer.TT_WORD: System.out.println("word: "+st.sval); break; default: if ((char)st.ttype == '"') { System.out.println("quoted: "+st.sval); } else { System.out.println("token: "+(char) st.ttype); } }} } catch (IOException e) { } }} Molte altre funzionalità: analizzare le API! Laura Ricci 39

40 STREAM TOKENIZER: L'OUTPUT Laura Ricci 40

41 CALLABLE E FUTURE Un oggetto di tipo Runnable incapsula un'attività che viene eseguita in modo asincrono Una Runnable si può considerare un metodo asincrono, senza parametri e che non restituisce un valore di ritorno Per definire un task che restituisca un valore di ritorno occorre utilizzare le seguenti interfacce: Callable: per definire un task che può restituire un risultato e sollevare eccezioni Future: per rappresentare il risultato di una computazione asincrona. Definisce metodi per controllare se la computazione è terminata, per attendere la terminazione di una computazione (eventualmente per un tempo limitato), per cancellare una computazione,... La classe FutureTask fornisce una implementazione della interfaccia Future. Laura Ricci 41

42 L'INTERFACCIA CALLABLE public interface Callable <V> { V call() throws Exception;} L'interfaccia Clablele contiene il solo metodo call, analogo al metodo run( ) dell'interfaccia Runnable per definire il codice del task, occorre implementare il metodo call a differenza del metodo run( ), il metodo call( ) può restituire un valore e sollevare eccezioni il parametro di tipo <V> indica il tipo del valore restituito ad esempio: Callable <Integer> rappresenta una elaborazione asincrona che restituisce un valore di tipo Integer Laura Ricci 42

43 CALLABLE: UN ESEMPIO Definire un task T che calcoli una approssimazione di mediante la serie di Gregory-Leibniz (vedi lezione precedente). T restituisce il valore calcolato quando la differenza tra l'approssimazione ottenuta ed il valore di Math.PI risulta inferiore ad una soglia precision. T deve essere eseguito in un thread. import java.util.concurrent.*; public class pigreco implements Callable <Double> {private Double precision; public pigreco (Double precision) {this.precision=precision;}; public Double call( ) {Double result = <approssimazione di > return result } } Laura Ricci 43

44 L'INTERFACCIA FUTURE Il valore restituito dalla Callable, acceduto mediante un oggetto di tipo <Future>, che rappresenta il risultato della computazione Se si usano i thread pools, si sottomette direttamente l'oggetto di tipo Callable al pool mediante il metodo submit e si ottiene un oggetto di tipo <Future> E' possibile applicare all'oggetto Future restituito diversi metodi che consentono di individuare se il thread ha terminato la computazione del valore richiesto Laura Ricci 44

45 L'INTERFACCIA FUTURE public interface Future <V> { V get( ) throws...; V get (long timeout, TimeUnit) throws...; void cancel (boolean mayinterrupt); boolean iscancelled( ); boolean isdone( ); } metodo get: si blocca fino a che il thread non ha prodotto il valore richiesto e restituisce il valore calcolato È possibile definire un tempo massimo di attesa della terminazione del task, dopo cui viene sollevata una TimeoutException E' possibile cancellare il task e verificare se la computazione è terminata oppure è stata cancellata Laura Ricci 45

46 THREAD POOLING CON CALLABLE import java.util.*; import java.util.concurrent.*; public class futurepools { public static void main(string args[]) ExecutorService pool = Executors.newCachedThreadPool ( ); double precision =...; pigreco pg = new pigreco(precision); Future <Double> result = pool.submit(pg); try{double ris = result.get(1000l,timeunit.milliseconds); System.out.println(ris+"valore di pigreco");} catch(...){ }...}} Laura Ricci 46

47 ASSIGNMENT 2: ANALISI ERRORI Calcolo di : un problema che si è presentato riguarda l'uso dell'operatore / in genere, quando viene richiesto al programma JAVA di combinare due valori di tipo diverso, il computer effettua automaticamente la conversione di tipo. Operatore /: quando divido due numeri interi, il risultato è sempre un intero. Se il quoziente ha una parte frazionaria, questa viene scartata il valore di 7/2 è 3, non 3.5. se N è una variabile intera, allora N/100 è un intero ed 1/N è uguale a 0 per ogni N maggiore di 1! Per forzare il computer a calcolare come risultato un numero reale, è necessario rendere uno degli operandi reale. Ad esempio quando JAVA valuta 1.0/N, prima converte N in un numero reale per effettuare type matching con 1.0, in modo da ottenere un risultato reale. Laura Ricci 47

48 ASSIGNMENT 2: ANALISI ERRORI class PiGreco { public static void main (String args[]) { int k = 1, i=1; double pi = 4.0 / k; while (true) { System.out.println(pi); k += 2; if (i % 2 == 0) { pi += 4 / k;} else { pi -= 4 / k; } i++; }}} Risultato ottenuto: Se si sostituisce 4 con 4.0 si ottiene: Laura Ricci 48

49 ASSIGNMENT 2: ANALISI ERRORI Si vuole ottenere un numero random tra 1 e 6. Math.random( ) restituisce un numero distribuito uniforme tra 0.0 e per cui 6*Math.random() è un valore tra 0.0 and L'operatore di type cast, (int), coverte questo valore in un intero: (int)(6*math.random()), quindi, è uno tra i seguenti valori 0, 1, 2, 3, 4, and 5. Per ottenere un valore tra 1 e 6, possiamo aggiungere 1 (int)(6*math.random()) + 1 Le parentesi che racchiudono 6*Math.random() sono necessarie a causa delle regole di precedenza; senza le parentesi, l'operatore di type cast verrebbe applicato solo a 6 ed avrei come risultato sempre 6 Laura Ricci 49

50 ASSIGNMENT 4 Realizzare un programma per la gestione di auto nuove ed usate. realizzare una classe Car, che rappresenti la singola auto, caratterizzata dai seguenti dati: modello, anno di manifattura, chilometri che ha percorso, prezzo. Le nuove auto sono distinte dal fatto che i chilometri percorsi sono 0. La classe Car esporta i seguenti metodi: un costruttore metodi get() metodo tostring, che riscrive il metodo ereditato dalla classe Object e restituisce i dati dell'auto come stringa un booleano equalto(car c) : restituisce true se l'auto in questione concide con l'auto passata in input, false altrimenti Laura Ricci 50

51 ASSIGNMENT 4 La classe CarList, che rappresenta una lista di auto da vendere. Un oggetto CarList non memorizza direttamente i dati relativi alla lista delle auto, ma memorizza il nome di un text file in cui i dati delle auto sono memorizzati, secondo il seguente formato modello anno di costruzione chilometri percorsi prezzo esporta i seguenti metodi: CarList(String filename) : costruttore con un parametro di tipo String, che rappresenta il nome del file in cui i dati devono essere memorizzati Laura Ricci 51

52 ASSIGNMENT 4 La classe CarList esporta i seguenti metodi: int countnewcars() : restituisce il numero di nuove auto da vendere CarmostExpensiveCar() : restituisce l'istanza di Car corrispondente all'auto più costosa tra quelle da vendere void addcar(car c) : aggiunge la Car c alla fine della lista di auto da vendere void remove(car c) : rimuove dalla lista la macchina i cui dati coincidono con quelli dell'auto c in input, se presente, altrimenti lascia la lista invariata Laura Ricci 52

53 JAVA MISCELLANEA: PACKAGES un programma è composto di uno o più source files JAVA ogni source file può contenere una o più dichiarazioni di classi e/o di interfacce se una classe/interfaccia viene dichiarata pubblica, allora il source file che la contiene deve utilizzare lo stesso nome solo una classe/interfaccia pubblica per ogni source file packages: quando un programma contiene molte classi, esse possono essere organizzate gerarchicamente in packages Laura Ricci 53

54 JAVA MISCELLANEA: PACKAGES Package: collezione di classi e/o interfacce in relazione logica Esempi: The Java API javax.swing: classi che riguardano lo sviluppo di GUIs. java.lang: classi essenziali richieste dal linguaggio JAVa. java.util: classi per memorizzare(reperire collezioni di oggetti java.net: per la comunicazione su rete.... I package possono essere organizzati in modo gerarchico. Un package può essere diviso in sottopackages java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server non esiste alcun limite al livello di annidamento dei packages Laura Ricci 54

55 JAVA MISCELLANEA: PACKAGES perchè i packages? Permettono al programmatore di organizzare il proprio codice in unità logiche ogni classe fa comunque parte di un package: se non specificato altrimenti, la classe fa parte del default package le classi che fanno parte di uno stesso package possono accedere una all'altra, senza dover utilizzare nome qualificati/senza importare esplicitamente le classi è possibile definire una gerarchia tra i cluster ma... importante: i sottopackage non vengono automaticamente importati. un esempio: se scrivo import java.rmi.*, non vengono importati automaticamente i sottopackages java.rmi.registry,... Laura Ricci 55

56 JAVA MISCELLANEA: PACKAGES class access all'interno di un package: le classi all'interno di un package possono riferire una l'altra senza usare il nome completo se una classe non è dichiarata pubblica, essa può essere acceduta solo da altre classi all'interno del package accesso tra packages: una classe pubblica può essere acceduta da altri packages: in questo caso deve essere importata o deve essere utilizzato il nome completo (gerarchia di package+classe) le classi pubbliche di un package possono essere considerate una interfaccia del package verso il mondo esterno (analogo ai metodi pubblici di una classe) Laura Ricci 56

57 JAVA MISCELLANEA: PACKAGES Laura Ricci 57

58 JAVA MISCELLANEA: PACKAGES Laura Ricci 58

59 JAVA MISCELLANEA: PACKAGES Laura Ricci 59

60 JAVA MISCELLANEA: PACKAGES Laura Ricci 60

61 JAVA MISCELLANEA: PACKAGES JAVA organizza i packege come directory di sistema Laura Ricci 61

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2b LPR-A-09 Threads: Callable & Future 6/10/2008 Vincenzo Gervasi Lezione U 2b: Callable & Future Vincenzo Gervasi 1 CALLABLE E FUTURE

Dettagli

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

Dettagli

Informatica. Prof. A. Longheu. Input e Output

Informatica. Prof. A. Longheu. Input e Output Informatica Prof. A. Longheu Input e Output 1 Il package java.io Il package java.io definisce i concetti base per gestire l I/O da qualsiasi sorgente e verso qualsiasi destinazione. L obiettivo è fornire

Dettagli

A. Ferrari Java: Stream e File

A. Ferrari Java: Stream e File Java: Stream e File la classe File o per operare con l intero file java mette a disposizione la classe File o per utilizzare la classe File è necessario importare la libreria java.io.file o la classe File

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è

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

Lettura e scrittura - Stream

Lettura e scrittura - Stream Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo) Tipi di stream Stream di caratteri Stream di byte Classi astratte che implementano

Dettagli

A. Ferrari Stream e File

A. Ferrari Stream e File Stream e File Java la classe File o per operare con l intero file java mette a disposizione la classe File o per utilizzare la classe File è necessario importare la libreria java.io.file o la classe File

Dettagli

Corso sul linguaggio Java

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

Dettagli

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di

Dettagli

INPUT OUTPUT

INPUT OUTPUT INPUT OUTPUT Il package java.io include classi, interfacce ed eccezioni per la gestione dellʼi/o. Si può distinguere tra due classi di funzionalità: per leggere e scrivere dati (anche in maniera indipendente

Dettagli

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Informatica I. Ingegneria Medica. Prof. Diego Salamon Informatica I Ingegneria Medica Prof. Diego Salamon Gestione I/O Prof. Diego Salamon Introduzione Nella creazione e gestione del software è necessario interagire con entità esterne a quelle del programma

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce

Dettagli

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe

Dettagli

Lezione 16 programmazione in Java

Lezione 16 programmazione in Java Lezione 16 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I FILE Sgli stream (flussi) I file ad

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

La paninoteca. Mi resta da scrivere solo costo()

La paninoteca. Mi resta da scrivere solo costo() La paninoteca Mi resta da scrivere solo costo() La paninoteca Usiamo l ereditarietà per definire dei Panini particolari Ci sono alcuni tipi di pane Estendendo Panino scrivo meno codice Nell esempio eredito

Dettagli

Variabili e Metodi di classe Interfacce e Package File in Java

Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe definisce un

Dettagli

LETTURA DI DATI DA INPUT

LETTURA DI DATI DA INPUT LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream FileDescriptor InputStream SequenceInputStream ByteArrayInputStream

Dettagli

Lettura e scrittura - Stream

Lettura e scrittura - Stream Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo)! Tipi di stream " Stream di caratteri " Stream di byte! Classi astratte che

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

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

Unità 2 I file binari

Unità 2 I file binari Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA file binari file di tipi primitivi file di oggetti serializzazione (B) CONOSCENZA E COMPETENZA Rispondere alle seguenti domande

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario API di Java Istruzione di scrittura Istruzione di lettura 21/03/2011 2 API di Java Java è un linguaggio orientato agli oggetti basato

Dettagli

ESERCIZIO 1 (FILE DI TESTO)

ESERCIZIO 1 (FILE DI TESTO) ESERCIZIO 1 (FILE DI TESTO) Scrivere su un file di testo righe inserite da console, fino a quando non viene inserita la linea vuota. Passare il nome del file come parametro al programma. Bisogna incapsulare

Dettagli

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException ESERCITAZIONE 9 I/O Esercizio 1 Lettura da file binario Se gli interi letti appartengono a [-5;5] scrittura su un altro file binario Altrimenti sollevare una eccezione la quale stampa a video un messaggio

Dettagli

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA8 B1 Accesso sequenziale 1 Prerequisiti Programmazione ad oggetti Conoscenza classi di base di I/O Tecnica della programmazione 2 1 Introduzione In questa Unità vediamo

Dettagli

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Università di Ferrara Dipartimento di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Tutor Arnaud Nguembang Fadja: ngmrnd@unife.it Damiano Azzolini: damiano.azzolini@student.unife.it Esercizio

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni 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

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi 16. Stream di I/O Esempio. Visualizza sul monitor il contenuto di un file di caratteri. int i; while ((i

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;

Dettagli

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica informatica Java basi del linguaggio Alberto Ferrari Informatica struttura di un programma Java /** * Classe EsempioProgramma * Un esempio di programmazione in Java * @author 4A Informatica */ public class

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 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello

Dettagli

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo.

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. Facade 73 10. Facade (GoF pag. 185) 10.1. Descrizione Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. 10.2. Esempio Un applicativo

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

LETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream

LETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream LETTURA DI DATI DA INPUT Sfortunatamente, una tale classe non esiste

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, Modelli e Applicazioni per Sistemi Distribuiti M Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare, catturare, rimbalzare. Gettare. Stefano Mizzaro 1

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare, catturare, rimbalzare. Gettare. Stefano Mizzaro 1 Rassegna API - 2: eccezioni e file Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 21 Riassunto

Dettagli

Input/Output in Java

Input/Output in Java Input/Output in Java 1 Comunicare con il mondo Praticamente ogni programma ha la necessità di comunicare con il mondo esterno Con l utente attraverso tastiera e video Con il file system per leggere e salvare

Dettagli

IL PACKAGE java.io. Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione.

IL PACKAGE java.io. Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. IL PACKAGE java.io Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM Uno stream è un canale di comunicazione

Dettagli

IL PACKAGE java.io CONCETTO BASE: LO STREAM

IL PACKAGE java.io CONCETTO BASE: LO STREAM IL PACKAGE java.io Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM Uno stream è un canale di comunicazione

Dettagli

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare. Gettare, catturare, rimbalzare. Stefano Mizzaro 1

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare. Gettare, catturare, rimbalzare. Stefano Mizzaro 1 Rassegna API - 2: eccezioni e file Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 18,19 15,19/11/2013

Dettagli

Java e i Tipi di dati primitivi. Parte 3

Java e i Tipi di dati primitivi. Parte 3 Java e i Tipi di dati primitivi Parte 3 La nozione di tipo di dato Il tipo del dato consente di esprimere la natura del dato Indica il modo con cui verrà interpretata la sequenza di bit che rappresenta

Dettagli

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013 Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2012/2013 Streams Maggior parte della programmazione di rete è eseguire operazione di input e output. Sposto byte

Dettagli

Sommario. I Uso degli oggetti 39

Sommario. I Uso degli oggetti 39 Questo è l'indice del libro, in cui sono evidenziati i paragrafi corrispondenti agli argomenti trattati nel corso e che costituiranno il programma d'esame. Alcuni argomenti sono stati trattati nelle lezioni

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate Fondamenti di Informatica IL LINGUAGGIO JAVA Sintassi, Semantica, Input, Tipi Elementari e Istruzione Condizionale 1 Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per

Dettagli

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

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

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi. Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma

Dettagli

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Linguaggi di Programmazione I Lezione 9

Linguaggi di Programmazione I Lezione 9 Linguaggi di Programmazione I Lezione 9 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 6 maggio 28 Variabili 3 Ambiti................................................................

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

Interfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable?

Interfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable? Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Interfaccia Comparable class Contatore implements Comparable

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA8 B2 Accesso diretto 1 Prerequisiti Programmazione ad oggetti Conoscenza classi di base di I/O Tecnica della programmazione Organizzazione ed accesso ai file 2 1 Introduzione

Dettagli

Caratteri Input da Console

Caratteri Input da Console Caratteri Input da Console Il tipo char Input dallo standard input 12/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Il tipo base char Il tipo base char rappresenta i caratteri Come sappiamo Java

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array 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 Laurea

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Introduzione a Java e all'ambiente di sviluppo

Introduzione a Java e all'ambiente di sviluppo Introduzione a Java e all'ambiente di sviluppo Programmazione 2, a.a. 2006-2007 Nota: per esclusivo uso interno al corso, riferimenti bibliografici forniti a lezione Schema minimo di un applicazione public

Dettagli

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008 Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 24 novembre 2008 Negli esercizi fate riferimento alle

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Jody Marca jody.marca@polimi.it Laboratorio N 2 Cosa faremo oggi 2 Javadocs Uso del debugger Input Output Serializzazione degli oggetti Javadoc 3 Javadoc è uno strumento

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4  Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

RETI DI CALCOLATORI Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione

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

Linguaggi di Programmazione I Lezione 8

Linguaggi di Programmazione I Lezione 8 Linguaggi di Programmazione I Lezione 8 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 29 aprile 2008 Identificatori e parole chiavi 3 Commenti.............................................................

Dettagli

Array. Definizione e utilizzo di vettori

Array. Definizione e utilizzo di vettori Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0} 16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento

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

Linguaggi di Programmazione I Lezione 10

Linguaggi di Programmazione I Lezione 10 Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2

Dettagli

I/O Streams in Java. Lorenzo Gallucci

I/O Streams in Java. Lorenzo Gallucci I/O Streams in Java Lorenzo Gallucci I/O Streams La libreria Java dispone di un API sofisticata per l interfacciamento I/O Il package di riferimento è java.io Due classi principali InputStream, per l input

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Eccezioni: Gestione dei Flussi versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio) Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;

Dettagli

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come

Dettagli