Esercizio 1: archivio CD e DVD Realizzare un’applicazione Java per la creazione e la consultazione di un archivio di dischi ottici (CD e DVD). L’applicazione riceve da standard input in maniera interattiva le informazioni necessarie e le scrive, nel formato indicato nelle slide successive, in un file chiamato cd_dvd.xml. Ciascun CD è descritto dalle seguenti informazioni: titolo autore anno numero delle tracce genere Ad ogni DVD, invece, sono associati i campi: titolo regista anno cast genere Esercizio 1: archivio CD e DVD La struttura del file deve essere analoga a quella del file di esempio cd_dvd_example.xml allegato a queste slide (per la visualizzazione del file, usare il browser web o l’applicazione “Blocco Note”) Alcune note: il file si apre sempre con le due linee <?xml version="1.0" encoding="iso-8859-1" ?> <archivio_dischi> e si chiude con la linea </archivio_dischi> Non è posto alcun vincolo sull’ordine delle informazioni relative al singolo CD / DVD Non è possibile ipotizzare che il file contenga prima tutti i descrittori dei CD e poi quelli dei DVD (o viceversa) Esercizio 1: archivio CD e DVD L’applicazione deve essere anche in grado di leggere il file cd_dvd.xml da essa stessa generato, costruendo un array di istanze dei dischi ottici popolate con le informazioni specificate nel file [si ricorda che le dimensioni di un array non possono essere variate a runtime, quindi è necessario contare quanti elementi occorrerà inserire] Per l’estrazione delle informazioni dal file, è conveniente servirsi della classe java.io.StreamTokenizer. Facoltativamente, è possibile definire una serie di metodi che permettano di fare ricerche nell’array creato o direttamente nel file (ad esempio, ricerca cd di un certo autore, dvd di un certo anno, ecc.). Nel primo caso, è possibile distinguere tra le istanze di CD o DVD utilizzando l’operatore instanceof, che verifica la classe da cui deriva un’istanza. Esempi: String s = new String(“Prova”); if (s instanceof String) // l’espressione è true: s è di classe String if (s instanceof Object) // l’espressione è true: String è sottoclasse di Object if (s instanceof char[]) // l’espressione è false: s non è un array di char Esercizio 2: contabilità domestica Realizzare un’applicazione Java per gestire voci e importi di spesa. L’applicazione riceve da standard input in maniera interattiva le informazioni necessarie e le scrive in un file specificato come parametro del metodo main. Il formato delle informazioni scritte nel file è il seguente: VoceDiSpesa_Importo dove VoceDiSpesa è il genere di spesa (cibo, abbigliamento, cinema, ecc) e Importo è l’importo in € corrispondente. Ciascuna entry occupa una riga del file. Ad esempio: abbigliamento_250 alimentari_130 vacanze_1200 E’ possibile vincolare il numero di tipologie di spesa trattabili oppure consentire la massima flessibilità lasciando definire a runtime le diverse categorie. La scelta è lasciata all’implementazione, purchè siano rispettate le implicazioni sul codice (controlli, ecc.) Esercizio 2: contabilità domestica L’applicazione deve inoltre essere in grado di leggere il file generato e fornire alcune funzionalità di elaborazione dei dati. In particolare, deve poter essere possibile calcolare: l’importo medio per ciascuna voce di spesa; totale per ciascuna voce di spesa; il totale delle spese. Per passare i parametri al metodo main utilizzando Eclipse, si veda in fondo a queste stesse slide. Esercizio 3: filtraggio file di testo Realizzare un’applicazione Java in grado di cercare una qualunque parola all’interno del file testo.txt allegato a queste slide, contando il numero di occorrenze. L’applicazione deve inoltre essere in grado di creare un nuovo file testo2.txt ottenuto da testo.txt sostituendo a tutte le occorrenze di un vocabolo il medesimo vocabolo con però tutte le lettere maiuscole. Per analizzare il file di testo, è possibile ricorrere alla classe java.util.StringTokenizer (si veda la documentazione sulle API Java). Passaggio parametri al main (1) Passaggio parametri al main (2) Nella finestra che si apre, cliccare su New. Viene creata una nuova configurazione di esecuzione per la classe selezionata nell’editor (la finestra rimane la stessa, cambia solo il campo “Name” e si aggiunge un elemento nell’albero delle Java Application a sinistra. Passaggio parametri al main (3) Selezionando la tab “Arguments”, è possibile specificare i parametri da passare al main nel campo “Program arguments”