Laboratorio Di Sistemi Serializzare Mediante . - Altervista

3y ago
33 Views
2 Downloads
225.90 KB
11 Pages
Last View : 22d ago
Last Download : 3m ago
Upload by : Anton Mixon
Transcription

Laboratorio di SistemiSerializzare mediante fileJavaTorniamo ancora una volta sul problema della serializzazione degli oggetti e riconsideramo ilseguente modello a oggetti.Fig. 1 – Modello a oggetti della nostra applicazionePer semplicità supponiamo che un libro sia scritto da un solo autore. Vogliamo realizzareun'applicazione (console) che crea un insieme di autori, libri ed editori e li memorizza ciascunoin file testuali distinti (autori.txt, libri.txt e editori.txt), mantenendo le informazioni visibili nelmodello a oggetti. Ogni file testuale conterrà per ogni riga un record, mentre i vari campisaranno separati gli uni dagli altri dal carattere tab (il file così ottenuto è tab delimited).Vogliamo inoltre che sia possibile importare i 3 file in un foglio di calcolo compatibile con Excel(noi useremo il programma per i fogli di calcolo della suite OpenOffice).Riportiamo per comodità le 3 classi Autore, Libro ed Editore, omettendo però i setter e i getterper brevità./** Autore.java* Created on 7 aprile 2008, 20.39*/package classiPkg;/*** @author maurizio*/public class Autore {private int idAutore;private String cognome;private String nome;/** Creates a new instance of Autore */public Autore() {}// costruttore con 3 argomentipublic Autore(int idAutore, String cognome, String nome) e);this.setNome(nome);}// restituisce l'anagrafica di un autorepublic String getAnagrafica() {return getNome() " " getCognome();}// getter e setter omessi per brevità} // fine classe Autoreserializza mediante file.pdfPag. 1/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJava/** Editore.java*/package classiPkg;/*** @author maurizio*/public class Editore {private int idEditore;private String nomeEditore;private String indirizzoEditore;private String cittaEditore;public Editore( int idEditore, String nomeEditore) {this.idEditore idEditore;this.nomeEditore nomeEditore;}public Editore( int idEditore, String nomeEditore, String indirizzoEditore, String cittaEditore) {this.idEditore idEditore;this.nomeEditore nomeEditore;this.indirizzoEditore indirizzoEditore;this.cittaEditore cittaEditore;}// getter e setter omessi per brevità} // fine classe Editore/** Libro.java* Created on 7 aprile 2008, 20.38*/package classiPkg;/*** @author maurizio*/public class Libro {private String isbn;private String titolo;private String imgUrl;private String intro;private Autore autore;private Editore editore;/** Creates a new instance of Libro */public Libro() {}public Libro(String isbn, String titolo) izza mediante file.pdfPag. 2/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJava// overloading del costruttorepublic Libro(String isbn, String titolo, Autore autore) {this(isbn, titolo);this.setAutore(autore);}public Libro(String isbn, String titolo, Autore autore, Editore editore) {this(isbn, titolo, autore);this.setEditore(editore);}public Libro(String isbn, String titolo, String imgUrl, String intro, Autore autore, Editoreeditore) {this(isbn, titolo, );this.setEditore(editore);}// overloading del costruttorepublic Libro(String isbn, String titolo, int idAutore) {this(isbn, titolo);autore.setIdAutore(idAutore);}// getter e setter omessi per brevità} // fine classe LibroScriviamo ora la classe Ser.java che provvederà a creare i 3 file sequenziali nel formatorichiesto./** CreaElenchiDB4o.java* Created on 12 aprile 2008, 17.45*/package classiPkg;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;/*** @author maurizio*/public class Ser {// reference ai file sequenzialistatic FileWriter fwAutori; // ref. per la scrittura degli autoristatic FileReader frAutori; // ref. per la lettura degli autoristatic FileWriter fwEditori; // ref. per la scrittura degli editoristatic FileReader frEditori; // ref. per la lettura degli editoristatic FileWriter fwLibri; // ref. per la scrittura dei libristatic FileReader frLibri; // ref. per la lettura dei libriserializza mediante file.pdfPag. 3/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJavapublic Ser() throws FileNotFoundException, IOException {// Creazione del file autori.txtSystem.out.println("Apro il file autori.txt in ntln("Creo degli iudo il file autori.txt in scrittura");chiudiAutoriInScrittura();// fine creazione// Lettura del file autori.txtSystem.out.println("Apro il file autori.txt in ("Carico in memoria gli autori");List Autore elencoAutori trovaAutori();System.out.println("Visualizzo il contenuto del file riInLettura();// fine lettura// Creazione del file editori.txtSystem.out.println("Apro il file editori.txt in intln("Creo degli Chiudo il file editori.txt in scrittura");chiudiEditoriInScrittura();// fine scrittura// Lettura del file editori.txtSystem.out.println("Apro il file editori.txt in n("Carico in memoria gli editori");List Editore elencoEditori trovaEditori();System.out.println("Visualizzo il contenuto del file ditoriInLettura();// fine lettura// Creazione del file libri.txtSystem.out.println("Apro il file libri.txt in tln("Creo dei do il file libri.txt in scrittura");chiudiLibriInScrittura();serializza mediante file.pdfPag. 4/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJava// fine scrittura// Lettura del file libri.txt// omesso per brevità// fine lettura} // fine costruttorepublic static void main(String[] args) throws FileNotFoundException, IOException {new Ser();}// visualizza le anagrafiche degli autoripublic static void stampaAutori(List Autore autori) {for (Autore a : autori)System.out.println(a.getAnagrafica());}// visualizza i nomi degli editoripublic static void stampaEditori(List Editore editori) {for (Editore e : editori)System.out.println(e.getNomeEditore());}// stampa i titoli dei libripublic static void stampaLibri(List Libro libri) {for (Libro l : libri)System.out.println(l.getTitolo());}// chiusura del file autori.txtpublic static void chiudiAutoriInScrittura() throws IOException {fwAutori.close();}// chiusura del file editori.txtpublic static void chiudiEditoriInScrittura() throws IOException {fwEditori.close();}// chiusura del file libri.txtpublic static void chiudiLibriInScrittura() throws IOException {fwLibri.close();}// chiusura in letturapublic static void chiudiAutoriInLettura() throws IOException {frAutori.close();}// chiusura in letturapublic static void chiudiEditoriInLettura() throws IOException {frEditori.close();}serializza mediante file.pdfPag. 5/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJava// chiusura in letturapublic static void chiudiLibriInLettura() throws IOException {frLibri.close();}// apertura del file autori.txtpublic static void apriAutoriInScrittura() throws IOException {fwAutori new FileWriter("./src/risorsePkg/autori.txt");}// apertura del file editori.txtpublic static void apriEditoriInScrittura() throws IOException {fwEditori new FileWriter("./src/risorsePkg/editori.txt");}// apertura del file libri.txtpublic static void apriLibriInScrittura() throws IOException {fwLibri new FileWriter("./src/risorsePkg/libri.txt");}// apertura in letturapublic static void apriAutoriInLettura() throws FileNotFoundException, IOException {File fileAutori new File("./src/risorsePkg/autori.txt");frAutori new FileReader(fileAutori);}// apertura in letturapublic static void apriEditoriInLettura() throws FileNotFoundException, IOException {File fileEditori new File("./src/risorsePkg/editori.txt");frEditori new FileReader(fileEditori);}// apertura in letturapublic static void apriLibriInLettura() throws FileNotFoundException, IOException {File fileLibri new File("./src/risorsePkg/libri.txt");frLibri new FileReader(fileLibri);}// resituisce un autore a partire dal record autorepublic static Autore getAutore(String recordAutore) {StringTokenizer st new StringTokenizer(recordAutore,"\t");}int idAutore Integer.parseInt(st.nextToken());String cognome st.nextToken();String nome st.nextToken();return new Autore(idAutore, cognome, nome);// restituisce un editore a partire dal record editorepublic static Editore getEditore(String recordEditore) {StringTokenizer st new StringTokenizer(recordEditore,"\t");int idEditore Integer.parseInt(st.nextToken());String nomeEditore st.nextToken();String indirizzoEditore st.nextToken();String cittaEditore st.nextToken();return new Editore(idEditore, nomeEditore, indirizzoEditore, cittaEditore);}serializza mediante file.pdfPag. 6/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJava// restituisce un libro a partire da un record libropublic static Libro getLibro(String recordLibro) {// da implementarereturn null;}// restituisce tutti gli autoripublic static List Autore trovaAutori() throws IOException {BufferedReader br new BufferedReader(frAutori);List Autore autori new ArrayList Autore ();// leggo la prima riga del fileString recordAutore br.readLine();// leggo tutte le righewhile (recordAutore! null) {Autore a getAutore(recordAutore);recordAutore br.readLine();autori.add(a);}return autori;} // fine metodo trovaAutori()// restituisce tutti gli editoripublic static List Editore trovaEditori() throws IOException {BufferedReader br new BufferedReader(frEditori);List Editore editori new ArrayList Editore ();// leggo la prima riga del fileString recordEditore br.readLine();// leggo tutte le righewhile (recordEditore! null) {Editore e getEditore(recordEditore);recordEditore br.readLine();editori.add(e);}return editori;} // fine metodo trovaEditori// restituisce tutti i libripublic static List Libro trovaLibri() {// da implementarereturn null;} // fine metodo trovaLibri()// registra nel file sequenziale un autorepublic static void salvaAutore(Autore a) throws IOException {int idAutore a.getIdAutore();String cognome a.getCognome();String nome a.getNome();String anagrafica nome " " cognome;serializza mediante file.pdfPag. 7/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJavaString recordAutore idAutore "\t" cognome "\t" nome "\t" anagrafica "\n";fwAutori.write(recordAutore);} // fine metodo salvaAutore// registra nel file editori.txt un editorepublic static void salvaEditore(Editore e) throws IOException {int idEditore e.getIdEditore();String nomeEditore e.getNomeEditore();String indirizzoEditore e.getIndirizzoEditore();String cittaEditore e.getCittaEditore();String recordEditore idEditore "\t" nomeEditore "\t" indirizzoEditore "\t" cittaEditore "\n";fwEditori.write(recordEditore);} // fine metodo salvaEditore// registra nel file libri.txt un libropublic static void salvaLibro(Libro l) throws IOException {String isbn l.getIsbn();String titolo l.getTitolo();int idAutore l.getAutore().getIdAutore();int idEditore l.getEditore().getIdEditore();String recordLibro isbn "\t" titolo "\t" idAutore "\t" idEditore "\n";fwLibri.write(recordLibro);} // fine metodo salvaLibro// memorizziamo alcuni autori nel file autori.txtpublic static void creaElencoAutori() throws IOException {salvaAutore(new Autore(1,"Cozzetto","Maurizio"));salvaAutore(new Autore(2,"Cozzetto","Martina"));salvaAutore(new Autore(3,"Gardner","Martin"));salvaAutore(new Autore(4,"Pighizzini","Giovanni"));salvaAutore(new Autore(5,"Ferrari","Fabrizio"));salvaAutore(new Autore(6,"Gosling","James"));} // fine metodo creaElencoAutori// memorizziamo alcuni editoripublic static void creaElencoEditori() throws IOException {salvaEditore(new Editore(400,"Tecniche Nuove","Via Rossini 70","Novara"));// crea elenco editoriEditore e new Editore(100,"Apogeo","Via Milano 50","Milano");salvaEditore(e);Editore f new Editore(200,"Mondadori","Via Torino 43","Milano");salvaEditore(f);Editore g new Editore(300,"Loescher","Via Banzai 29","Brescia");salvaEditore(g);} // fine metodo creaElencoAutori// memorizziamo alcuni libri scritti da 2 autoripublic static void creaElencoLibri() throws IOException {Autore a new Autore(5,"Ferrari","Fabrizio");Editore e new Editore(100,"Apogeo","Via Milano 50","Milano");Editore f new Editore(200,"Mondadori","Via Torino 43","Milano");Editore g new Editore(300,"Loescher","Via Banzai 29","Brescia");serializza mediante file.pdfPag. 8/11Cozzetto

Laboratorio di zzare mediante fileJavaLibro("123-2345-221-3","Java: dalle basi alla programmazioneLibro("321-2314-211-4","Java J2EE",a,g));Libro("278-8483-288-2","2001, a space odissey",a,f));Libro("829-903-6261-3","JavaServer Pages e Servlet",a,f));Libro("785-4567-897-8","C#: la Bibbia",a,e));Autore b new bro("876-5789-866-8","Java2, il Manuale Ufficiale",b,f));Libro("567-8767-455-7","Java, la grande Guida",b,e));Libro("727-8383-772-3","2010, lanno del contatto",b,e));Libro("732-4388-432-3","JavaServer Pages: basi di J2EE",b,e));Libro("377-4899-329-2","C : il manuale che non cè",b,g));} // fine metodo creaElencoLibri} // fine classe SerLanciamo il file Ser.java e creiamo i 3 file.Ecco l'output del programma:Apro il file autori.txt in scritturaCreo degli autoriChiudo il file autori.txt in scritturaApro il file autori.txt in letturaCarico in memoria gli autoriVisualizzo il contenuto del file autori.txtMaurizio CozzettoMartina CozzettoMartin GardnerGiovanni PighizziniFabrizio FerrariJames GoslingApro il file editori.txt in scritturaCreo degli editoriChiudo il file editori.txt in scritturaApro il file editori.txt in letturaCarico in memoria gli editoriVisualizzo il contenuto del file editori.txtTecniche NuoveApogeoMondadoriLoescherApro il file libri.txt in scritturaCreo dei libriChiudo il file libri.txt in scritturaBUILD SUCCESSFUL (total time: 1 second)Verifichiamo se è possibile ora caricare i 3 file testuali nel foglio di calcolo. Apriamo il foglio dicalcolo e vi trasciniamo dentro il file autori.txt. Appare la seguente schermata:serializza mediante file.pdfPag. 9/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJavaFig. 2 – Drag & Drop del file autori.txtConfermiamo le impostazioni proposte e otteniamo il foglio di calcolo richiesto:Fig. 3 – Il foglio di calcolo degli autoriserializza mediante file.pdfPag. 10/11Cozzetto

Laboratorio di SistemiSerializzare mediante fileJavaIn maniera analoga otteniamo i rimanenti 2 fogli di calcolo:Fig. 4 – Il foglio di calcolo degli editoriFig. 5 – Il foglio di calcolo dei libriserializza mediante file.pdfPag. 11/11Cozzetto

Per semplicità supponiamo che un libro sia scritto da un solo autore. Vogliamo realizzare un'applicazione (console) che crea un insieme di autori, libri ed editori e li memorizza ciascuno in file testuali distinti (autori.txt, libri.txt e editori.txt), mantenendo le informazioni visibili nel modello a oggetti.

Related Documents:

Laboratorio di Sistemi Elettronici Automatici Laboratorio di disegno tecnico geometra Laboratorio di Tecnologia, Disegno e progettazione Elettronica Laboratorio di Elettronica e Telecomunicazioni (con stazione radiomatoriale) Laboratorio di Chimica Laboratorio di informatica triennio settore economico

Laboratorio di Identificazione e Controllo dei Sistemi Dinamici Dipartimento di Ingegneria Industriale e dell'Informazione Laboratorio di Identificazione e Controllo dei Sistemi Dinamici 4 Professors G. De Nicolao, A. Ferrara, L. Magni, D.M. Raimondo . 1

sistemi dinamici fuori dall’equilibrio. Tuttavia: Manca un’adeguatateoria dell’informazione per sistemi fisici che non rientrano nel paradigma dei sistemi della meccanica classica: sistemi dinamici non lineari stabili fuori dall’equilibrio(sistemi

questi sistemi possono sostituire sistemi dinamici con requisiti più elevati per valutazioni ancora più complesse. Inoltre, i sistemi MTS Criterion sfruttano la stessa piattaforma software MTS TestSuite e sono in grado di condividere gli stessi accessori di alta qualità utilizzati dai sistemi di prova

questi sistemi possono sostituire sistemi dinamici con requisiti più elevati per valutazioni ancora più complesse. Inoltre, i sistemi MTS Criterion sfruttano la stessa piattaforma software MTS TestSuite e sono in grado di condividere gli stessi accessori di alta qualità utilizzati dai sistemi di prova

Elenco 1 (curriculum: Fisica dei Sistemi Dinamici e Meccanica Statistica) Complementi di Meccanica Statistica Fisica dei Sistemi Dinamici Laboratorio di Metodi Computazionali 1 Laboratorio di Metodi Computazionali 2 Teoria delle Particelle Elementari Turbolenza Nell’A.A.

IL LABORATORIO DI CHIMICA ORGANICA Ancora prima di entrare in un laboratorio di chimica organica è necessario avere ben chiare alcune idee. Un laboratorio di chimica organica contiene prodotti chimici, solventi, acidi, energia elettrica, gas, attrezzat

Simulink to STM32 MCUs Automate –the process from "C" code generation to programming STM32 F4 or STM32F30x –Code generation reporting –Code execution profiling reporting for PIL execution. 13 Summary for STM32 embedded target for MATLAB and Simulink release 3.1: Supported MCUs: STM32 F4 and F30x series Automated Processor-in-the-Loop (PIL) Testing using USART communication link Support .