La paninoteca. Mi resta da scrivere solo costo()

Documenti analoghi
Corso sul linguaggio Java

Programmazione ad Oggetti

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

LETTURA DI DATI DA INPUT

Il linguaggio Java. Gli stream

Informatica. Prof. A. Longheu. Input e Output

INPUT OUTPUT

Lettura e scrittura - Stream

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

domenica 9 giugno 13 Serializzazione

Lezione 16 programmazione in Java

Corso sul linguaggio Java

Serializzazione. Programmazione in Ambienti Distribuiti A.A

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:

I/O Streams in Java. Lorenzo Gallucci

Input/Output in Java

Il linguaggio Java I file sequenziali

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

A. Ferrari Stream e File

A. Ferrari Java: Stream e File

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, catturare, rimbalzare. Gettare. Stefano Mizzaro 1

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Java I/O e serializzazione

Java I/O API. Java I/O. G. Grossi. 10 gennaio G. Grossi Lezione 11

Indice. 1 Java I/O API. Indice

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

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Il package java.io fornisce le classi necessarie per effettuare input e output su file/rete/console/aree di memoria RAM eccetera.

Flussi, lettori e scrittori

02CBI - M. Morisio. I/O in Java. Input Output. Classi di Primo Livello - java.io. Stream. Pag. 1

Input/Output in Java

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

Gestione di file in Java

La Serializzazione in Java. L24_Serialization 1

Caratteri Input da Console

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Java I/O e serializzazione

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

Lettura e scrittura - Stream

Corso sul linguaggio Java

PROVA FINALE Ingegneria del software

Unità 2 I file binari

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

PROVA FINALE Ingegneria del software

Introduzione. Java. Streams. Streams

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Le basi del linguaggio Java

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di reti I: Java IO

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

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

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

Corso sul linguaggio Java

Cifratura simmetrica

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

IL PACKAGE java.io CONCETTO BASE: LO STREAM

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

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

14 Input-Output. Outline. Goal della lezione. Argomenti. Mirko Viroli a.a. 2013/2014

15 Input-Output. Mirko Viroli C.D.L. Ingegneria e Scienze Informatiche Alma Mater Studiorum Università di Bologna, Cesena

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

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento

ESERCIZIO 1 (FILE DI TESTO)

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Input e Output in Java

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

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

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

Variabili e Metodi di classe Interfacce e Package File in Java

Gestione dell I/O su File

Esempio 2: Subtyping

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

Note ed esercizi aggiuntivi

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

Sommario. I Uso degli oggetti 39

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

Note ed esercizi aggiuntivi

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

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

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

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

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

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

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

Il sistema I/O di Java

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

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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

File, flussi e pacchetto java.io

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

La classe java.lang.object

Transcript:

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 descrivi() nelle sottoclassi I panini si possono imbottire a piacimento Ho molte farciture Ogni panino ha un costo diverso A seconda del Pane A seconda di come lo farcisco

Troppe Classi Panino Focaccia Rosetta Toast Ciriola RosettaProsciuttoEMozzarella CiriolapomodoroeMozzarella FocacciaProsciuttoEMozzarella CiriolaAlSalame FocacciaAlProsciutto ToastProsciuttoEFormaggio FocacciapomodoroEMozzarella CiriolaAlProsciutto

È un problema ricorrente A chi interessa?? Capita in molti ambiti: Se vogliamo realizzare la paninoteca aggiungendo ingredienti ai panini Se vogliamo modificare gli stream di comunicazione, come il buffering degli stream Nella realizzazione delle finestre dei programmi a cui vogliamo aggiungere features

Decoratore

class Panino{ costo(){ Is a e Has a class PaninoRipieno extends Panino{ Panino p costo(){p.costo()

Cosa è il decoratore Una classe che si finge un altra La eredita e la contiene Cosa sappiamo Hanno lo stesso supertipo dell oggetto che decora Si possono concatenare Possiamo usare il decoratore al posto dell oggetto il decoratore ha lo stesso supertipo dell oggetto che decora Il decoratore aggiunge qualcosa e delega il resto dei compiti all oggetto che decora Non vuole estendere la superclasse La estenderanno le sue sottoclassi

Concatenare i decoratori Ogni funzione richiama quella dell oggetto contenuto E gli aggiunge qualcosa Prosciutto Mozzarella Pomodoro Rosetta costo() costo() costo() costo()

costo(){ // Pre processing p.costo(); // Post porcessing Ma p.costo è costo(){ // Pre processing p.costo(); // Post porcessing Esempio

Stream Traduzione: Flusso Un programma che deve comunicare apre uno STREAM Le informazioni vengono trasmesse sequenzialmente! Con chi comunico? un file le memoria un socket

Esempio Leggere due byte da tastiera public static void leggi(){ byte b = (byte) System.in.read(); char c = (char) System.in.read(); System.in estende classe astratta InputStream

InputStream Un concetto astratto di lettura di uno stream di byte in sequenza Ho diverse realizzazioni pratiche che differiscono per sorgente di dati ByteArrayInputStream array di byte FileInputStream file esterno PipedInputStream un altro processo SequenceInputStream ObjectInputStream AudioInputStream Sono tutte sottoclassi di InputStream Il mio programma è indipendente dalla sorgente

Problema Ho diversi mezzi di comunicazione Con cui dialogo per mezzo di stream System.in, FileInputStream, Etc. Ho spesso la necessità di modificare il modo con cui leggo o scrivo Da byte a caratteri Da stream a righe Da byte a tipi di dato (int, double) Etc.

FilterInputStream Mi servono delle funzionalità indipendenti dalla sorgente dei dati Buffering, numerazione delle linee, controllo, etc. Queste funzioni sono definte come sottoclassi di FilterInputStream FilterInputStream è una sottoclasse di InputStream FilterInputStream contiene un oggetto di tipo InputStream FilterInputStream può sostituire InputStream e modificare lo stream Ci troviamo difronte ad un Decoratore

Decoratori di stream

UpperCaseInputStream public class UpperCaseInputStream extends FilterInputStream{ public UpperCaseInputStream (InputStream i){ super(i) public int read() throws IOException{ int c = super.read(); return Character.toUpperCase((char) c); InputStream in = new UpperCaseInputStream( new FileInputStream( pippo.txt ));

Gerarchia di Byte Stream

Esempio: Copiare File import java.io.*; public class CopyFile { public static void main(string[] args) { File inputfile = new File( input.txt ); File outputfile = new File("output.txt"); FileInputStream in = new FileInputStream(inputFile); FileOutputStream out = new FileOutputStream(outputFile); int c; while ((c = in.read())!= -1){ out.write(c); in.close(); out.close();

Stream di caratteri

Reader e Writer Reader e Writer Le due superclassi astratte per i character stream flussi di caratteri Hanno la caratteristica di obbligare le sottoclassi a leggere e scrivere dividendo i dati in pezzi di 16 bit compatibili con il tipo char Le sottoclassi di Reader (e Writer) implementano stream speciali Alcune hanno il ruolo di ConcreteComponent possono attaccarsi ad una fonte (o ad un destinazione) e leggere (o scrivere) In modo sequenziale con i metodi read() (o write()) Ereditati da Reader (o Writer).

Gestire uno Stream Per l input bisogna: 1. aprire lo stream 2. leggere tutte le informazioni dallo stream fino a quando non terminano 3. chiudere lo stream Per l output bisogna: 1. aprire lo stream 2. scrivere tutte le informazioni tramite lo stream fino a quando non terminano 3. chiudere lo stream

Esempio public class KeyboardInput { public static void main (String args[]) { String stringa = null; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); stringa = in.readline(); System.out.println("Hai scritto: " + stringa); in.close();

I/O di Dati Lettura e Scrittura di tipi di dati primitivi agganciata a uno stream elementare new DataOutputStream(new FileOutputStream( prova.txt")) readboolean() writeboolean() readbyte() writebyte() readchar() writechar() readdouble() writedouble() readfloat() writefloat() readint() writeint()

I/O di Oggetti Per leggere/scrivere un oggetto occorre poter: a) ricostruire lo stato (tutte le variabili dell oggetto) b) avere informazioni sulla classe c) avere i riferimenti agli oggetti collegati La lettura e la scrittura di queste informazioni si chiama serializzazione degli oggetti. Un oggetto può essere serializzato se implementa l interfaccia Serializable.

I/O di Oggetti : EX import java.io.* Import java.util.date FileOutputStream out = new FileOutputStream("theTime"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeobject("today"); s.writeobject(new Date()); FileInputStream in = new FileInputStream("theTime"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject();