7. Array e Collection 8. Progetto di classi 9. Ereditarietà 10. Eccezioni 11. Stream 5. Definire metodi 6. Strutture di controllo.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "7. Array e Collection 8. Progetto di classi 9. Ereditarietà 10. Eccezioni 11. Stream 5. Definire metodi 6. Strutture di controllo."

Transcript

1 Modulo di Roadmap 0. Primi passi con Java 1. Buone abitudini 2. Tipi di dati primitivi 3. Uso di classi 4. Leggere e scrivere 7. Array e Collection 8. Progetto di classi 9. Ereditarietà 10. Eccezioni 11. Stream 5. Definire metodi 6. Strutture di controllo Input/Output I programmi visti finora acquisiscono i loro input solo da tastiera e producono i loro output solo a video Qualunque programma di uso pratico deve salvare i suoi dati in modo permanente ed essere in grado di recuperarli successivamente I meccanismi di input/output seguono uno schema comune indipendente dal dispositivo utilizzato Stream 1

2 Modulo di Stream Interazione con dispositivi esterni: tastiera, video, dischi, schede di rete Su ciascun dispositivo sono possibili operazioni di lettura (input) e/o scrittura (output) Viste dal programmatore le operazioni possono essere astratte dal dispositivo utilizzato e riferite genericamente a flussi (stream)) di dati Gli stream Idea: classi base che forniscono operazioni elementari di lettura e scrittura a livello di byte (formato binario) o di caratteri (formato testuale) Non si usano direttamente ma sono la base sulla quale i meccanismi di I/O più articolati si appoggiano per eredità Meccanismo "a cipolla": bisogna creare una serie di oggetti in cascata prima di arrivare ad ottenere qualcosa di utile Stream 2

3 Modulo di Un errore di design?! Le gerarchie derivate dalle classi base rispondono in realtà a due esigenze diverse: gestire diversi dispositivi e offrire diverse forme di I/O (modi di accesso, formattazione, ) I due tipi di esigenze sono stati fusi e ne è nata una struttura confusa e incoerente Le evoluzioni hanno peggiorato le cose: gerarchie parallele e incrociate La libreria di I/O di Java è indicata da alcuni come un ottimo esempio di come NON fare OO design L'albero dell'i/o (non tutto) File Object ObjectStreamClass FileDescriptor ObjectStreamField RandomAccessFile StreamTokenizer InputStream OutputStream ByteArrayInputStream PipedInputStream ByteArrayOutputStream StringBufferInputStream SequenceInputStream FileOutputStream PipedOutputStream FileInputStream FilterInputStream ObjectInputStream FilterOutputStream ObjectOutputStream BufferedOutputStream DataOutputStream PrintStream BufferedInputStream DataInputStream Reader Writer PrintWriter CharArrayReader PipedReader CharArrayWriter PipedWriter BufferedReader StringReader BufferedWriter StringWriter FilterReader InputStreamReader FilterWriter OutputStreamWriter FileReader FileWriter Stream 3

4 Modulo di Definizioni di interface nel package java.io ObjectInputValidation ObjectStreamConstants Flushable Closeable FileFilter FilenameFilter DataInput DataOutput Serializable ObjectInput ObjectOutput Externalizable Idee di base Uno stream di input si crea, si effettuano letture, si chiude Uno stream di output si crea, si effettuano scritture, si chiude Gli stream elementari sono molto grezzi: di norma è meglio associare loro un "filtro" che permette operazioni di più alto livello Le operazioni di lettura e scrittura si fanno quindi sul filtro che le trasforma in operazioni sul flusso elementare associato Stream 4

5 Modulo di Gli stream di input e output elementari Le classi InputStream e OutputStream sono astratte: uno stream elementare è un'istanza di una loro sottoclasse Alcune sottoclassi identificano grosso modo il tipo di flusso di dati coinvolto: ByteArray = buffer in memoria File Pipe StringBuffer: Deprecated! Le classi filtro L'associazione tra uno stream ed il filtro avviene tramite il costruttore Data*Stream Stream: : permettono di leggere/scrivere da uno stream di byte direttamente in variabili di tipo elementare Buffered*Stream Stream: : aggiungono capacità di buffering ad un input/output stream PrintStream: : permette di ottenere output formattato visualizzabile (ha i metodi print e println: : System.out è un PrintStream) Stream 5

6 Modulo di Ricapitolando Ogni stream è caratterizzato come input o come output (può effettuare operazioni solo in una direzione) I file vengono tipicamente riscritti da capo (con la maggior parte degli output stream non è possibile aggiungere dati ad un file esistente: bisogna riscriverli) Di norma si costruisce uno stream elementare con dei filtri aggiuntivi per renderlo praticamente utilizzabile (gli stream elementari operano un byte alla volta) Lo stream viene associato ad un file su disco tramite un istanza della classe File Roadmap 11. Stream La classe file Stream 6

7 Modulo di La classe File Malgrado il suo nome, la classe File serve a rappresentare solo i nomi dei file Fornisce un modo di riferire un file per nome e di effettuare operazioni sull intero file (p.e. cancellarlo o rinominarlo) ma non sul suo contenuto (non offre metodi di lettura e scrittura dei dati) Per operare sui dati di un file con un certo nome bisogna creare un istanza della classe File che lo rappresenta e quindi associarla ad uno stream La classe File La classe File permette l'uso di pathname completi e fornisce le operazioni base su file e directory Tre costruttori: new File(String nomefileodir); new File(String path, String name); new File(File dir, String name); L'operazione new File non crea un nuovo file o directory nel file system ma solo un oggetto che permette di far riferimento ad un file o directory tramite il nome Stream 7

8 Modulo di createnewfile(); delete(); deleteonexit(); exists(); Metodi della classe File isabsolute(); isdirectory(); isfile(); ishidden(); list(); listfiles(); mkdir(); mkdirs(); renameto(); setlastmodified(); setreadonly(); canread(); canwrite(); getcanonicalpath(); getabsolutepath(); getcanonicalfile(); getabsolutefile(); (); Roadmap 11. Stream La classe file Stream binari Stream 8

9 Modulo di Stream e file binari In modo molto improprio si parla di file (e relativi stream) ) binari per indicare file nei quali sono salvati tipi di dati elementari nel loro formato di rappresentazione interna (p.e. un double è salvato come 8 byte, un int come 4 byte, ecc.) Le classi DataInputStream e DataOutputStream vengono usate per operare su stream binari Esse offrono metodi per leggere e scrivere tipi di dati elementari (p.e. readdouble, writedouble,, ) Creazione a cipolla File f = new File("/tmp tmp/nome. /nome.ext"); Si crea l istanza della classe File riferita ad un certo nome FileInputStream i = new FileInputStream(f); Si crea un istanza di input stream elementare associata al file BufferedInputStream b = new BufferedInputStream(i); Si crea un istanza di filtro di buffering associata allo stream elementare DataInputStream d = new DataInputStream(b); Si associa infine a tutto ciò un istanza di filtro di stream binario int k = d.readint readint(); Su tale istanza è possibile invocare i metodi di lettura di tipi elementari Stream 9

10 Modulo di Creazione compatta Normalmente si scrive la sequenza di costruzione di oggetti in modo compatto (la cipolla risulta più evidente) DataInputStream d = new DataInputStream( new BufferedInputStream( new FileInputStream( new File("/tmp tmp/nome. /nome.ext")))); Esempio uso di un file binario import java.io.*; import necessari: saranno sempre sottintesi import java.util util.*; negli esempi successivi public class Cipolla { private static void esistenza (File f) { if (f.exists exists()) System.out.println println("il FILE ESISTE ED E' DI DIMENSIONE " + f.length length() +" BYTES"); else System.out.println println("il FILE NON ESISTE"); } Stream 10

11 Modulo di Esempio uso di un file binario public static void main (String [] args) throws IOException, FileNotFoundException I metodi utilizzati scagliano { File f = new File("prova.dat dat"); eccezioni checked: poiché esistenza(f); non le gestiamo dobbiamo Creiamo il file e verifichiamo se esiste dichiararle con throws FileOutputStream s = new FileOutputStream(f); BufferedOutputStream b = new BufferedOutputStream(s); DataOutputStream d = new DataOutputStream(b); Creazione cipolla di output (forma estesa) for (int i = 0; i < 5; i ++) d.writeint writeint(myutil.leggiintero( Inserire un intero )); Scriviamo nel file 5 int d.close close(); Chiudiamo lo stream letti da tastiera esistenza(f); Vediamo cosa è cambiato Esempio uso di un file binario DataInputStream c = new DataInputStream(new BufferedInputStream(new FileInputStream(f))); Creazione cipolla di input (forma estesa) Vector<Integer Integer> > letture = new Vector<Integer Integer>(); Preparazione di un Vector dove mettere le letture boolean finito = false; while (! finito) { try{ { letture.add add(c. (c.readint());} catch (EOFException( e) { finito = true; ; } } for (int i : letture) System.out.println println(i); } //main }// class Si leggono int dal file e si mettono nel Vector, fino a quando un eccezione ci dice che siamo arrivati alla fine del file Infine mostriamo a video cosa abbiamo letto dal file Stream 11

12 Modulo di Roadmap 11. Stream La classe file Stream binari Stream di testo Stream e file di testo Gli stream delle gerarchie collegate a InputStream e OutputStream trattano stream binari e tipi elementari Il contenuto di tali file non è leggibile dagli utenti umani (almeno non comodamente): se si apre un file binario con un editor il contenuto non è intelligibile Inoltre tali file sono utilizzabili da altri programmi solo se essi adottano la stessa rappresentazione interna dei dati Gli stream e file di testo contengono solo sequenze di caratteri e superano tali limitazioni Stream 12

13 Modulo di Stream e file di testo I file di testo contengono solo caratteri rappresentati secondo standard universalmente adottati: sono intellegibili e apribili con qualunque editor possono essere utilizzati (in quanto file di testo) da altri programmi Per contro la rappresentazione come testo dei numeri ha degli svantaggi: occupa più spazio (per numeri di molte cifre) per trattare i numeri come numeri bisogna convertirli dalla rappresentazione testuale a quella numerica Stream di testo Per gli stream di testo si fa riferimento alle classi Reader e Writer che forniscono le primitive per scrivere un carattere alla volta Si applica quindi il solito meccanismo a cipolla Stream 13

14 Modulo di Scrittura su file di testo La classe PrintWriter offre la possibilità di invocare metodi print e println per la stampa di qualunque oggetto (si stampa il risultato dell invocazione di tostring() sull oggetto) File f = new File ("/tmp tmp/textfile.txt"); PrintWriter pw = new PrintWriter ( new BufferedWriter( new FileWriter ( f ))); Solo 1.5: output con printf A partire dalla versione 1.5 nella classe PrintWriter e disponibile la primitiva printf per la scrittura su file, in modo del tutto analogo a quanto già visto per la scrittura a video Stream 14

15 Modulo di Lettura da file di testo Non esiste metodo di lettura universale Si leggono stringhe e poi si converte usando metodi appositi (per i tipi elementari sono nelle classi wrapper) File f = new File ("/tmp tmp/textfile.txt"); BufferedReader source = new BufferedReader( new FileReader(f)); String rigaletta = source.readline readline(); int j = Integer.parseInt parseint(rigaletta); Solo 1.5: input con Scanner E possibile creare un istanza di Scanner associata ad uno stream di lettura di testo Questo permette di leggere e convertire simultaneamente la rappresentazione testuale di un numero usando metodi quali nextint(), nextdouble(), ecc. analogamente a quanto già visto per le letture da tastiera Stream 15

16 Modulo di Esempio di uso di file di testo public class CipollaTxtStringhe {... // METODO esistenza() public static void main (String [] args) throws IOException, FileNotFoundException { File f = new File("fileStringhe filestringhe.txt"); esistenza(f); Creazione cipolla PrintWriter PrintWriter pw = new PrintWriter(new BufferedWriter( new FileWriter ( f ))); String s =""; do { s = MyUtil.leggiString leggistring("inserire UNA STRINGA"); if (! s.equalsignorecase equalsignorecase("fine")) Ciclo di lettura stringhe da pw.println println(s); tastiera e loro scrittura su file } while (! s.equalsignorecase equalsignorecase("fine")); pw.close close(); Chiusura dello stream Esempio di uso di file di testo esistenza(f); Vediamo cosa è cambiato BufferedReader source = new BufferedReader( new FileReader(f)); Vector<String String> > elenco = new Vector<String String>(); do { s = source.readline readline(); if (! (s == null)) elenco.add add(new String(s)); } while (! (s == null)); Creazione cipolla Ciclo di lettura righe da file Quando si raggiunge la fine del file la lettura restituisce null source.close close(); Chiusura dello stream for (String letta : elenco) System.out.println println(letta); } //main }// class Stream 16

17 Modulo di Esempio di uso di file di testo con Scanner public class CipollaTxtNumeri {... // METODO esistenza() public static void main (String [] args) throws IOException, FileNotFoundException { File f = new File("fileNumeri filenumeri.txt"); esistenza(f); Creazione cipolla PrintWriter PrintWriter pw = new PrintWriter(new BufferedWriter( new FileWriter ( f ))); Ciclo di lettura 5 numeri da for (int i = 0; i < 5; i ++) tastiera e loro scrittura su file pw.println println(myutil.leggiintero("inserire UN NUMERO")); pw.close close(); Chiusura dello stream esistenza(f); Esempio di uso di file di testo con Scanner Scanner source = new Scanner(new FileReader(f)); Vector<Integer Integer> > elenco = new Vector<Integer Integer>(); Ciclo di lettura righe da file: il while (source.hasnextint()) metodo hasnextint ci dice se ci { sono ancora valori da leggere. elenco.add add(source.nextint()); Non si controlla se il file è vuoto o } corrotto source.close close(); Chiusura dello stream for (int letto : elenco) System.out.println println(letto); } //main }// class Vediamo cosa è cambiato Creazione Scanner Stream 17

18 Modulo di Conversione tra stream E' possibile trasformare uno stream di byte in uno stream di testo tramite le classi di conversione InputStreamReader e OutputStreamWriter Aumenta il numero di strati della cipolla BufferedReader r = new BufferedReader( new InputStreamReader( new DataInputStream( new BufferedInputStream( new FileInputStream( new File("/tmp tmp/nome. /nome.ext")))))); Pre 1.5: Lettura input da tastiera La tastiera è associata all'inputstream System.in: si applica la cipolla anche qui (versioni precedenti alla 1.5) BufferedReader keyboard = new BufferedReader( new InputStreamReader(System.in)); String rigaletta = keyboard.readline readline(); int j = Integer.parseInt parseint(rigaletta); Stream 18

19 Modulo di Input con Scanner Come già sappiamo, la classe Scanner permette di acquisire valori da un InputStream (in particolare la tastiera) in modo molto più comodo Scanner input = new Scanner(System.in); String s = input.next next(); int c = input.nextint nextint();... input.close close(); Solo 1.5: input con Scanner La classe Scanner oltre che su stream (e file) può operare su String e su interface Readable Essa permette anche usi sofisticati come l effettuazione di ricerche e la separazione di elementi usando le cosiddette espressioni regolari Si veda la documentazione della classe per questi aspetti sofisticati Stream 19

20 Modulo di Roadmap 11. Stream La classe file Stream binari Stream di testo Stream di oggetti Stream e file di oggetti Tipicamente un programma Java rappresenta i suoi dati più importanti come oggetti (istanze di classi) anche collegati tra loro (p.e. un Vector è un istanza che contiene istanze di oggetti, ciascuna delle quali può avere come attributi istanze di altre classi, ecc. Emerge la necessità di salvare su file direttamente gli oggetti Quando si salva su file un oggetto si vuole che siano salvati in un colpo solo anche gli oggetti collegati In modo duale si vuole leggere in un colpo solo un oggetto salvato insieme a tutti quelli collegati Stream 20

21 Modulo di Stream di oggetti Java offre un modo comodo per salvare e leggere oggetti e loro collegati (con struttura arbitrariamente complessa) Gli Object*Stream (in formato binario) lo permettono tramite i metodi writeobject e readobject Il metodo di lettura restituisce un riferimento ad un oggetto generico (Object( Object) ) è richiesto quindi un cast esplicito per riattribuire all oggetto il suo tipo originario Per poter essere usata con gli Object*Stream una classe DEVE dichiarare implements Serializable (interface speciale, nessun metodo da implementare) Esempio uso stream di oggetti: salvare un array public class CipollaObj {...// METODO esistenza() public static void main (String [] args) throws IOException, FileNotFoundException, ClassNotFoundException { Creazione cipolla File f = new File("obj obj.dat"); ObjectOutputStream esistenza(f); ObjectOutputStream archivio = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream(f))); int [] a = new int [20]; for (int i = 0; i < a.length length; ; i ++) a[i] = i*2; archivio.writeobject writeobject(a); archivio.close close(); Le eccezioni da dichiarare sono aumentate Creazione e riempimento di un array di prova L array viene salvato in un colpo solo Chiusura dello stream Stream 21

22 Modulo di esistenza(f); } // main }//class Esempio stream di oggetti Vediamo cosa è cambiato ObjectInputStream sorgente = new ObjectInputStream( new BufferedInputStream( new FileInputStream(f))); try { E necessario il cast a = (int( []) sorgente.readobject readobject(); for i = 0; i < a.length length; ; i ++) System.out.println println(a[i]); } catch (ClassCastException( exc) {System.out.println Creazione cipolla ObjectInputStream L array viene letto in un colpo solo Controlliamo che nel file sia stato trovato quello che ci si aspettava println("grave errore di tipo in lettura!");} finally {if (sorgente!= null) ) sorgente.close close();} In ogni caso lo stream va chiuso Il numero di versione Ad ogni classe che implementa l interface Serializable viene implicitamente e automaticamente aggiunto un attributo di tipo long denominato serialversionuid Questo attributo rappresenta il numero di versione della classe e viene memorizzato al momento della scrittura delle sue istanze tramite writeobject Stream 22

23 Modulo di Il numero di versione Ogni volta che il codice sorgente della classe cambia (anche minimamente) cambia anche il valore di serialversionuid Se si tenta di leggere da un file degli oggetti salvati con numero di serie precedente a quello attuale si genera un eccezione Questo può essere scomodo e sgradevole quando le modifiche apportate alla classe sono davvero minimali e non danno luogo ad effettiva incompatibilità tra gli oggetti salvati e la nuova versione della classe Il numero di versione Il programmatore può decidere, sotto la sua responsabilità, di definire esplicitamente l attributo serialversionuid che deve essere final static long e preferibilmente private Eclipse segnala con un warning la possibilità di definire esplicitamente l attributo serialversionuid quando si implementa l interface Serializable Stream 23

24 Modulo di Il numero di versione Se l attributo serialversionuid viene definito esplicitamente, sarà il programmatore a dover cambiare il valore dell attributo a fronte di modifiche significative del codice Se il programmatore non cura questo aspetto, ci saranno comportamenti imprevisti (anche subdoli) o eccezioni a seguito del caricamento di oggetti salvati incompatibili con la nuova versione della classe Roadmap 11. Stream La classe file Stream binari Stream di testo Stream di oggetti File ad accesso diretto Stream 24

25 Modulo di File ad accesso diretto I file ad accesso diretto sono realizzati tramite la classe RandomAccessFile che (stranamente) è isolata nella gerarchia La classe RandomAccessFile implementa le interfacce DataInput e DataOutput che sono le stesse dei Data*Stream e offrono operazioni di lettura e scrittura per i tipi elementari L'accesso diretto è realizzato tramite un indice (file pointer) a livello di byte: il calcolo del numero dei byte appropriato è a carico del programmatore Operazioni: getfilepointer(), seek(byteoffset byteoffset) File ad accesso diretto L'accesso diretto è vantaggioso rispetto all'accesso sequenziale che obbliga a lente scansioni lineari dei file Purtroppo l'accesso diretto fornito dalla classe RandomAccessFile e' scomodissimo: si possono leggere e scrivere solo tipi elementari (nemmeno stringhe) e bisogna fare i conti in byte delle posizioni dei dati Stream 25

26 Modulo di Roadmap 11. Stream La classe file Stream binari Stream di testo Stream di oggetti File ad accesso diretto Stream con compressione Compressione dati Classi Zip*Stream e GZIP*Stream supportano l'attività di compressione/decompressione negli stream (nel package java.util util.zip) I costruttori hanno come parametro un Input/OutputStream al quale aggiungono la compressione /decompressione (solita cipolla) BufferedReader r = new BufferedReader( new InputStreamReader( new GZIPInputStream( new FileInputStream( new File("/tmp tmp/nome. /nome.gz"))))); Stream 26

27 Modulo di Compressione dati La classe Zip*Stream supporta la presenza di più entries entro un unico stream compresso In pratica si possono creare i comuni archivi zip contenenti più file con i metodi putnextentry, getnextentry Esempio uso file zip import java.io.*; import java.util util.zip.*; public class CipollaZipObj {...// METODO esistenza() C è un import specifico per stream zip public static void main (String [] args) throws IOException, FileNotFoundException, ClassNotFoundException { File f = new File("obj obj.zip"); esistenza(f); Bisogna creare un primo pezzo di cipolla ZipOutputStream zipout = new ZipOutputStream( new BufferedOutputStream( new FileOutputStream(f))); zipout.putnextentry putnextentry(new ZipEntry("file. ("file.dat")); Aggiungere il nome del file interno zippato da creare ObjectOutputStream archivio = new ObjectOutputStream(zipOut zipout); Infine aggiungere lo strato di ObjectOutputStream Stream 27

28 Modulo di Esempio uso file zip int [] a = new int [20000]; for (int i = 0; i < a.length length; ; i ++) a[i] = i*2; archivio.writeobject writeobject(a); archivio.close close(); esistenza(f); ZipInputStream zipin = new ZipInputStream( new BufferedInputStream( new FileInputStream(f))); zipin.getnextentry getnextentry(); Creazione e riempimento di un array di prova L array viene salvato in un colpo solo Chiusura dello stream Bisogna creare un primo pezzo di cipolla Selezionare il file interno zippato da cui leggere ObjectInputStream sorgente = new ObjectInputStream(zipIn zipin); Infine aggiungere lo strato di ObjectInputStream Esempio uso file zip try { a = (int( []) sorgente.readobject readobject(); for (int i = 0; i < a.length length; ; i+=1000) System.out.println println(a[i]); } catch (ClassCastException( exc) {System.out.println println("grave errore di tipo in lettura!");} finally {if (sorgente!= null) ) sorgente.close close();} } // main }//class Il seguito del programma è immutato ma visto che sono stampiamo un numero ogni 1000 Stream 28

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

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

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

Gestione dell I/O su File

Gestione dell I/O su File Fondamenti di Informatica Prof. Alfredo Cuzzocrea University of Trieste Gestione dell I/O su File Credits to: Prof. L. Badia UniPD Lettura da e scrittura su file Java fornisce operazioni di input/output

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

Input/Output in Java

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

Dettagli

20 - Input/Output su File

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

Dettagli

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

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 File e Stream In Java Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 Lettura da e scrittura su file Java fornisce operazioni di input/output tramite le classi del package java.io. La

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

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

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

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

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

Dettagli

Il linguaggio Java. Gli stream

Il linguaggio Java. Gli stream Il linguaggio Java Gli stream Overview Uno stream è un flusso unidirezionale di informazioni da una sorgente esterna ovvero verso una sorgente esterna a cui si accede in modo sequenziale 2 Algoritmi di

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

Introduzione. Java. Streams. Streams

Introduzione. Java. Streams. Streams Java il sistema di I/O G. Prencipe prencipe@di.unipi.it Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la

Dettagli

Il sistema I/O di Java

Il sistema I/O di Java Programmazione Java:. Il sistema I/O di Java romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Stream I/O Gestione di stream byte oriented Filtri Gestione di stream char oriented

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Creazione Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe

Dettagli

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

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

Dettagli

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

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

Dettagli

Prof. D. Malerba Dr. A. Appice - Dr. M.Ceci. Il sistema Input/Output di Java

Prof. D. Malerba Dr. A. Appice - Dr. M.Ceci. Il sistema Input/Output di Java Il sistema Input/Output di Java 1 Il sistema Input/Output di Java La libreria standard di Java offre una vasta gamma di classi per la gestione dell I/O. Queste permettono di gestire tanto un collegamento

Dettagli

Programmazione in Java e gestione della grafica. Lezione 24

Programmazione in Java e gestione della grafica. Lezione 24 Programmazione in Java e gestione della grafica Lezione 24 2 Parliamo di. Files and Streams 3 Files e streams I dati memorizzati in variabili e array sono dati temporanei File si usano per conservare grosse

Dettagli

Gestione di file in Java

Gestione di file in Java CAPITOLO 17 Gestione di file in Java Ogni insieme di informazioni residenti su memoria di massa costituisce in Java un flusso di dati che è denominato stream. Più in particolare un input stream costituisce

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

Programmazione 2. Input Output su Stream e File

Programmazione 2. Input Output su Stream e File Programmazione 2 Input Output su Stream e File Stream In generale ogni programma ha un flusso (stream) di dati in input ed uno in output. Stream di input Stream di output Input/Output in Java Il package

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

Unità A1 I file testo

Unità A1 I file testo Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA stream file testo file binari file di tipi primitivi bufferizzazione InputStreamReader OutputStreamWriter Reader Writer FileReader

Dettagli

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

L input da tastiera in Java. Dott. Ing. M. Banci, PhD L input da tastiera in Java Dott. Ing. M. Banci, PhD La lettura di un flusso di input in Java avviene attraverso l'oggetto in della classe System. System.in appartiene alla classe InputStream (letteralmente

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

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

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

La Serializzazione in Java. L24_Serialization 1

La Serializzazione in Java. L24_Serialization 1 La Serializzazione in Java L24_Serialization 1 La Serialization è la trasformazione di un oggetto in memoria in una sequenza di byte (ospitata in un file, trasmessa in rete, ecc). La Deserialization è

Dettagli

ProgrammazioneJava. Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila. diruscio@di.univaq.it

ProgrammazioneJava. Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila. diruscio@di.univaq.it ProgrammazioneJava Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Dimensioni nella gestione dell I/O 2 2 Formato dei dati Audio/Video MPEG, DiVX

Dettagli

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

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

Dettagli

Lezione 18 Le classi per l'input/output nel pacchetto java.io

Lezione 18 Le classi per l'input/output nel pacchetto java.io Lezione 18 Le classi per l'input/output nel pacchetto java.io Il package java.io incapsula le funzionalità di Input/Output (I/O) di Java. Come tutti i programmatori presto imparano, le applicazioni informatiche

Dettagli

Laboratorio di reti I: Java IO

Laboratorio di reti I: Java IO Laboratorio di reti I: Java IO Stefano Brocchi brocchi@dsi.unifi.it 15 ottobre, 2008 Stefano Brocchi Laboratorio di reti I: Java IO 15 ottobre, 2008 1 / 28 Gli InputStream e gli OutputStream Gli stream

Dettagli

File, flussi e pacchetto java.io

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

Dettagli

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

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

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

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

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

Dettagli

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

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

Dettagli

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

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

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

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

C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo File e Flussi C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione.

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione. pag.112 9. Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi al concetto di file,

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

10.4. La classe File e gli attributi di directory e file

10.4. La classe File e gli attributi di directory e file pag.143 10.4. La classe File e gli attributi di directory e file Questa classe, molto utile per operare con i file su disco, consente di accedere alle directory, verificare e acquisire le caratteristiche

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

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

Dettagli

Esercitazione OBIETTIVI DELL ESERCITAZIONE

Esercitazione OBIETTIVI DELL ESERCITAZIONE Esercitazione OBIETTIVI DELL ESERCITAZIONE Sperimentare le classi di i/o relative a file di testo e a stream di byte Prendere confidenza con i meccanismi delle eccezioni Esercizi I/O Lo scenario GESTIONE

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

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

Input e Output in Java

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

Dettagli

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

TIPI PRIMITIVI: LIMITI

TIPI PRIMITIVI: LIMITI TIPI PRIMITIVI: LIMITI I tipi primitivi sono i "mattoni elementari" del linguaggio In varie situazioni può però essere necessario trattare i tipi primitivi come oggetti quando una funzione pretende come

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

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

Dettagli

Libreria standard JAVA

Libreria standard JAVA JDK Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/ JDK Libreria standard

Dettagli

In un file di testo galera.txt sono memorizzati i dati relativi ad alcune condanne penali, ognuna con i dati:

In un file di testo galera.txt sono memorizzati i dati relativi ad alcune condanne penali, ognuna con i dati: Linguaggi Corso di Laurea Ingegneria Informatica (M-Z) A.A. 2006-2007 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Esercitazione su I/O in Java 1 In un file

Dettagli

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 Nota: il codice corretto è ottenibile da quella errato

Dettagli

Architettura Client-Server

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

Dettagli

Sockets in Java. Lorenzo Gallucci

Sockets in Java. Lorenzo Gallucci Sockets in Java Lorenzo Gallucci Sockets La libreria Java dispone di un API per la gestione dell I/O di rete Il package di riferimento è java.net Vari compiti: Gestione dell I/O su socket (sia TCP che

Dettagli

Gestione delle eccezioni

Gestione delle eccezioni Gestione delle eccezioni Le eccezioni sono un meccanismo per gestire situazioni anomale durante l esecuzione dei metodi. La gestione delle eccezioni deve garantire i seguenti principi: - le eccezioni non

Dettagli

14 - Metodi e Costruttori

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

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

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

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

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

10. File e loro attributi

10. File e loro attributi Appunti java pag. 133 10. File e loro attributi In generale, in qualsiasi sistema operativo, il file system consente di operare su archivi di dati (data files) che possono essere organizzati e memorizzati

Dettagli

Laboratorio di Informatica Lezione 4

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

Dettagli

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione Calendario esercitazioni e laboratori 29 Marzo esercitazione 12 Aprile esercitazione 26 Aprile laboratorio (lab721) 2 Maggio laboratorio (lab721) 3 Maggio esercitazione 9 Maggio laboratorio (???) 17 Maggio

Dettagli

Errata Corrige di Manuale di Java 8

Errata Corrige di Manuale di Java 8 Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public

Dettagli

Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi!

Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi! 1 Il numero di classi è assurdo, e pensare che originariamente il sistema I/O java era pensato per limitare l esplosione delle classi! 2 3 4 Se i dati sono in formato testo, allora sono rappresentati da

Dettagli

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto

Dettagli

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

Java e Serializzazione dalla A all'xml di Leonardo Puleggi dalla A all'xml di Leonardo Puleggi Indice generale Introduzione2 Grafo di Riferimenti 4 Attributi Transient.. 6 Metodi writeobject e readobject... 7 Ereditarietà e Serializzazione...10 Serializzazione

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Muoversi all interno di un Vector. Vector e Enumeration. Enumeration. Collezioni di oggetti: Vector. La classe Object. Aggiungere oggetti a un Vector

Muoversi all interno di un Vector. Vector e Enumeration. Enumeration. Collezioni di oggetti: Vector. La classe Object. Aggiungere oggetti a un Vector Muoversi all interno di un Vector 4 Vector e Enumeration Attraversare la collezione di oggetti e visitare (elaborare) ciascun elemento E un processo ripetitivo e quindi viene usata una struttura di ciclo

Dettagli

Oggetti Composti (1) Oggetti Composti (2)

Oggetti Composti (1) Oggetti Composti (2) Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Corso di Reti di Calcolatori L-A

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

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

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 Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

Gestione delle Eccezioni

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

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Il pattern decorator. L21_DecoratorPattern 1

Il pattern decorator. L21_DecoratorPattern 1 Il pattern decorator L21_DecoratorPattern 1 Il pattern decorator Problema affrontato: aggiungere comportamenti e caratteristiche dinamicamente ad una classe, in maniera alternativa all'ereditarietà, non

Dettagli

Modificatori. Controllo di visibilità

Modificatori. Controllo di visibilità Modificatori I modificatori (modifiers) sono prefissi da applicare in diverse combinazioni a metodi, variabili ed alle classi stesse. L ordine in cui specificare i modificatori è irrilevante, ma è consigliato

Dettagli

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Design Pattern Dott. Alessandro Roncato 18/10/2011 Design Patters I Design Patters sono soluzioni di progettazione standard e ben collaudate che possono essere usate in

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

Gestione di files Motivazioni

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

Dettagli