Laboratorio di sistemi Fortune Java/Jsp

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di sistemi Fortune Java/Jsp"

Transcript

1 Ricordiamo che in Ubuntu il comando fortune impartito da shell produce una frase umoristica, un anedotto o una frase bizzarra ecc. Si può installare e localizzare nella lingua italiana mediante il comando apt-get. Proviamo anche noi a scrivere due differenti versioni dello stesso applicativo, ovviamente usando il linguaggio di programmazione java; il primo sarà dotato di una GUI (interfaccia utente grafica) mentre l'altro consisterà in una web application e manderà il proprio output all'interno di un browser come IE o Firefox; lasciamo a voi il compito di scrivere la versione da riga di comando. Come prima cosa, supponiamo che le frasi (e i relativi autori) siano archiviati in un file testuale (fortune.txt). Frase e autore sono separati dal carattere come nell'esempio. -"In realta', agente, il mio nome e' Bond. James Bond". -"Gia', e io sono Superman. E lei e' sempre in arresto". Roger Moore, da "007 Bersaglio mobile" Così facendo possiamo poi aggiungere a piacimento le frasi più simpatiche ed eliminare quelle col tempo ritenute meno interessanti. Facciamo in modo che l'utente abbia l'opportunità di scegliere a caso una delle frasi precaricate nel database. fortune.pdf Pag. 1/13 Cozzetto

2 Progettiamo due classi Frase e ListaFrasi: Classi di supporto package fortunejavaapp; import java.util.scanner; /** * maurizio public class Frase { String contenuto; String autore; Frase() { contenuto = "Tanto va la gatta al lardo che ci lascia lo zampino"; autore = "Anonimo"; Frase(String contenuto, String autore) { this.contenuto = contenuto; this.autore = autore; Frase leggifrase() { Scanner sc = new Scanner(System.in); String content = sc.next(); String author = sc.next(); return new Frase(content, public String tostring() { return contenuto+" \n-- "+autore; void stampafrase() { System.out.println(toString()); // fine classe Frase fortune.pdf Pag. 2/13 Cozzetto

3 /* * ListaFrasi.java * package fortunejavaapp; import java.io.bufferedreader; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.util.random; import java.util.stringtokenizer; /** maurizio public class ListaFrasi { public Frase[] frasi; public int numfrasi = 0; /** Numero massimo di frasi che è possibile caricare in memoria public static final int MAX_FRASI = 100; /** Costruttore nullo public ListaFrasi() { frasi = new Frase[MAX_FRASI]; /** Costruttore con parametro il numero di frasi public ListaFrasi(int n) { if (n>=1 && n<=max_frasi) frasi = new Frase[n]; else frasi = new Frase[MAX_FRASI]; /** Genero una frase casuale tra quelle caricate in memoria public Frase getfraseacaso() { Random generatore = new Random(); int i = generatore.nextint(numfrasi); return frasi[i]; /** Aggiungo una nuova frase public void aggiungifrase(frase f) { if (numfrasi<max_frasi && f!=null) { frasi[numfrasi++]=f; fortune.pdf Pag. 3/13 Cozzetto

4 /** Prelevo dal disco le frasi e le porto in RAM public int caricafrasi(string file) throws FileNotFoundException, IOException { int numrecord=0; try { // apertura del file in lettura FileReader fr = new FileReader(file); BufferedReader bfr = new BufferedReader(fr); // lettura di tutti i record e caricamento nel vettore String s = bfr.readline(); while (s!=null) { StringTokenizer st = new StringTokenizer(s," "); Frase frase = new Frase(); frase.contenuto = st.nexttoken(); frase.autore = st.nexttoken(); aggiungifrase(frase); numrecord++; s = bfr.readline(); // fine while // chiusura bfr.close(); fr.close(); catch(filenotfoundexception e) { throw new FileNotFoundException(e.getMessage()); catch (IOException e) { throw new IOException(e.getMessage()); return numrecord; // fine metodo caricafrasi() // fine classe ListaFrasi fortune.pdf Pag. 4/13 Cozzetto

5 Versione GUI Nel caso di una GUI, la frase appare in una textarea e l'utente sceglie la frase successiva cliccando sul pulsante Random come in figura. Per comodità, ipotizziamo che tutto il nostro database sia caricato interamente in memoria. Il file fortune.txt si trova nel package risorse. /* * Fortune.java package fortunejavaapp; import java.awt.flowlayout; import java.io.filenotfoundexception; import java.io.ioexception; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.joptionpane; import javax.swing.jtextarea; /** * maurizio public class Fortune extends JFrame { ListaFrasi lf = new ListaFrasi(); JTextArea frase; JButton random; /** Costruttore public Fortune(String title) { this.settitle(title); int numrecord = 0; try { numrecord=lf.caricafrasi(system.getproperty("user.dir") +"/build/classes/risorse/fortune.txt"); catch (FileNotFoundException e) { fortune.pdf Pag. 5/13 Cozzetto

6 JOptionPane.showMessageDialog(null, "Il file non è stato trovato: "+e.getmessage()); System.exit(1); catch (IOException e) { JOptionPane.showMessageDialog(null, "Vi è un errore di I/O: "+e.getmessage()); System.exit(1); JOptionPane.showMessageDialog(null, "Sono stati caricati "+numrecord+" record dal database fortune.txt"); inizializzacomponenti(); // istruzione necessaria altrimenti la finestra continua ad essere // residente in memoria this.setdefaultcloseoperation(windowconstants.exit_on_close); this.pack(); this.setvisible(true); // fine Costruttore /** predispone il layout grafico e istanzia l'oggetto delegato a gestire l'evento click sul pulsante void inizializzacomponenti() { random = new JButton("Random"); frase = new JTextArea(" L'amore e' come una clessidra: \nquando si riempie il cuore, si svuota il cervello.\n\n--anonimo"); /** Impostiamo il layout FlowLayout this.setlayout(new FlowLayout()); /** Aggiungo al frame il testo this.add(frase); /** Aggiungo al frame il bottone this.add(random); /** Creo un ascoltatore per il bottone GestorePulsante gp = new GestorePulsante(frase, lf, this); /** Registro il gestore presso il bottone random.addactionlistener(gp); // si può anche scrivere più brevemente // random.addactionlistener(new GestorePulsante(frase, lf, this)); // fine inizializzacomponenti // fine classe Fortune fortune.pdf Pag. 6/13 Cozzetto

7 /* * GestorePulsante.java * package fortunejavaapp; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jtextarea; /** * maurizio class GestorePulsante implements ActionListener { JTextArea frase; ListaFrasi lf; JFrame frame; /** Costruttore con 3 parametri public GestorePulsante(JTextArea frase, ListaFrasi lf, JFrame frame) { this.frase = frase; this.lf = lf; this.frame = frame; /** L'interfaccia ActionListener dispone di un solo metodo da implementare actionperformed appunto public void actionperformed(actionevent evt) { /* se l'evento è stato generato da un pulsante if (evt.getsource() instanceof JButton) { frase.setlinewrap(true); /* Genero una frase a caso tra quelle disponibili in RAM Frase f = lf.getfraseacaso(); if (f!=null) frase.settext(f.contenuto+"\n\n-- "+f.autore); frame.pack(); // fine metodo gestore dell'evento // fine classe GestorePulsante fortune.pdf Pag. 7/13 Cozzetto

8 /* * Main.java package fortunejavaapp; import javax.swing.windowconstants; /** maurizio public class Main { public static void main(string[] args) { Fortune f = new Fortune("Versione grafica di 'Fortune'"); // fine metodo main // fine classe Main Versione Web Nel caso di una versione web, le cose cambiano leggermente. Intanto il caricamento delle frasi deve avvenire la prima volta che l'utente si collega alla pagina. Per il messaggio, usiamo un po' di Javascript e formattiamo la frase usando i fogli di stile. Il codice delle due classi non cambia. Ipotizziamo inoltre che il file fortune.txt sia contenuto nel package risorsepkg. Dal momento che il caricamento delle frasi in memoria deve avvenire una sola volta, fortune.pdf Pag. 8/13 Cozzetto

9 ricorriamo ad una variabile di sessione. Se non ha nessun valore, vuol dire che è la prima volta che carichiamo la pagina per cui va fatto il caricamento delle frasi in Ram, altrimenti vuol dire che la fase di caricamento è già stata effettuata per cui il sistema genera una frase a caso. Per generare altre frasi è sufficiente cliccare sul pulsante Aggiorna del browser. Pagina index.jsp <%@page contenttype="text/html" pageencoding="utf-8"%> <%@page errorpage="gestioneerrori.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>fortune - Versione web</title> <style> body { font-family: Verdana, "Trebuchet MS"; font-size: 11pt; #box { width: 400px; border: 1px blue dashed; padding: 5px; margin-left: auto; margin-right: auto; fortune.pdf Pag. 9/13 Cozzetto

10 .centro { text-align: center; </style> </head> <body> <h3 class="centro">versione web di Fortune</h3> <div id="box"> <% /* è la prima volta che carico la pagina if (session.getattribute("lf")==null) { /* istanzio l'oggetto lf che rappresenta le frasi fortunepkg.listafrasi2 lf = new fortunepkg.listafrasi2(); /* carico tutte le frasi in memoria int numrecord=lf.caricafrasi(application.getrealpath("/")+"web- INF/classes/risorsePkg/fortune.txt"); /* ne prendo una a caso fortunepkg.frase f = lf.getfraseacaso(); /* la visualizzo nel browser if (f!=null) { out.println(f.contenuto+"<br/><br/>-- "+f.autore); /* imposto la variabile di sessione lf session.setattribute("lf", lf); String s = "<script>alert('sono state caricate "+numrecord+ " frasi');</script>"; out.println(s); else { /* non è la prima volta che accedo alla pagina fortunepkg.listafrasi2 lf = (fortunepkg.listafrasi2) session.getattribute("lf"); /* prendo una frase a caso fortunepkg.frase f = lf.getfraseacaso(); /* la visualizzo nel browser if (f!=null) { out.println(f.contenuto+"<br/><br/>-- "+f.autore); // fine if %> </div> </body> </html> fortune.pdf Pag. 10/13 Cozzetto

11 Pagina gestioneerrori.jsp contenttype="text/html"%> pageencoding="utf-8"%> iserrorpage="true" %> import="java.io.printwriter" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <% PrintWriter writer=new PrintWriter(out); %> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>pagina di errore</title> <style type="text/css"> <!-- body,td,th { font-family: Trebuchet MS; font-size: 10pt; --> </style> </head> <body> <h3>gestione degli errori</h3> <p>si è verificato il seguente errore: <%=exception.getmessage()%></p> </body> </html> Nella versione web, abbiamo usato in realtà al posto della solita classe ListaFrasi (che avremmo potuto ugualmente usare senza alcuna modifica) la classe ListaFrasi2 che ottimizza lo spazio in RAM allocando lo spazio strettamente necessario (nella classe facciamo uso degli ArrayList e dei Generics). La logica nel complesso tuttavia non cambia. /* * ListaFrasi2.java * package fortunepkg; import java.io.bufferedreader; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.util.arraylist; import java.util.random; import java.util.stringtokenizer; fortune.pdf Pag. 11/13 Cozzetto

12 /** maurizio public class ListaFrasi2 { ArrayList<Frase> frasi; int numfrasi =0; /** Costruttore senza parametri public ListaFrasi2() { frasi = new ArrayList<Frase>(); /** Costruttore con parametro il numero di frasi public ListaFrasi2(int n) { if ( n >= 1 ) frasi = new ArrayList<Frase>(n); else frasi = new ArrayList<Frase>(); /** Genero una frase casuale tra quelle caricate in memoria public Frase getfraseacaso() { Random generatore = new Random(); int i = generatore.nextint(numfrasi); return frasi.get(i); // non è necessario il cast visto che // usiamo i generics /** Aggiungo una nuova frase public void aggiungifrase(frase f) { if ( f!= null ) { frasi.add(f); numfrasi++; /** Prelevo dal disco le frasi e le porto in RAM public int caricafrasi(string file) throws FileNotFoundException, IOException { int numrecord=0; try { // apertura del file in lettura FileReader fr = new FileReader(file); BufferedReader bfr = new BufferedReader(fr); // lettura di tutti i record e caricamento nell'arraylist String s = bfr.readline(); while (s!= null) { fortune.pdf Pag. 12/13 Cozzetto

13 StringTokenizer st = new StringTokenizer(s," "); Frase frase = new Frase(); frase.contenuto = st.nexttoken(); frase.autore = st.nexttoken(); aggiungifrase(frase); numrecord++; s = bfr.readline(); // fine while // chiusura bfr.close(); fr.close(); catch(filenotfoundexception e) { throw new FileNotFoundException(e.getMessage()); catch (IOException e) { throw new IOException(e.getMessage()); return numrecord; // fine metodo caricafrasi() // fine classe ListaFrasi2 fortune.pdf Pag. 13/13 Cozzetto

Applicazioni grafiche e finestre

Applicazioni grafiche e finestre Applicazioni grafiche e finestre / SampleFrame.java package sampleswingjavaapp; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton;

Dettagli

Laboratorio di Sistemi Accesso a un database Jsp [NetBeans]

Laboratorio di Sistemi Accesso a un database Jsp [NetBeans] Modifichiamo l applicativo ListaSupereroiWebApp in modo che i dati dei supereroi non vengano caricati staticamente mediante delle istruzioni di assegnamento ma dinamicamente leggendo i record della tabella

Dettagli

Laboratorio di Sistemi Accesso a un database MySQL NetBeans [Jsp]

Laboratorio di Sistemi Accesso a un database MySQL NetBeans [Jsp] Figura 1 Vogliamo realizzare una pagina web simile alla precedente: i dati si trovano nel db MySQL simpsons_db all'interno della tabella simpsons_tbl simpsons_mysql.pdf Pag. 1/12 Cozzetto Figura 2 - La

Dettagli

Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans]

Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] Figura 1 - La pagina input_user.jsp appena caricata Figura 2 - Lascio vuoti entrambi i campi o immetto un solo valore Figura 3 - Immetto dei valori che non esistono nel database autent_utente_scriplet.pdf

Dettagli

Laboratorio di sistemi Information hiding Jsp [Java]

Laboratorio di sistemi Information hiding Jsp [Java] Vogliamo realizzare una pagina web che ci consenta di filtrare i record della tabella books del database MySQL shop. Fig. 1 Tabella books, database MySQL shop Il filtro viene scritto direttamente dall'utente

Dettagli

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java]

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java] Vogliamo progettare un prototipo di applicazione web che consenta ad un utente di ottenere, selezionando l'autore da una casella combinata, l'elenco dei libri scritti da quell'autore, come nelle figure

Dettagli

Laboratorio di Sistemi Serializzare mediante file Java

Laboratorio di Sistemi Serializzare mediante file Java Torniamo ancora una volta sul problema della serializzazione degli oggetti e riconsideramo il seguente modello a oggetti. Fig. 1 Modello a oggetti della nostra applicazione Per semplicità supponiamo che

Dettagli

Programmazione in Java

Programmazione in Java Programmazione in Java Settima lezione Cristian Del Fabbro Lezione di oggi Esercizio sull'utilizzo delle classi viste nella quarta lezione (Vector, StringTokenizer, file su disco, ecc.) Alcune classi per

Dettagli

Laboratorio di sistemi Tag personalizzati Jsp [NetBeans] Sezione A

Laboratorio di sistemi Tag personalizzati Jsp [NetBeans] Sezione A Sezione A In NetBeans creiamo una applicazione web nel solito modo, confermando tutte le impostazioni proposte senza alcuna variazione. Per costruire una libreria di tag personalizzata, costruiamo innanzitutto

Dettagli

Laboratorio di Sistemi CRUD con MySQL JSP (Java)

Laboratorio di Sistemi CRUD con MySQL JSP (Java) Il problema Vogliamo realizzare un applicativo web che consenta di inserire, modificare e cancellare i record della tabella libri_tbl (database MySQL biblio_db). In questi casi, parliamo di applicativo

Dettagli

Laboratorio di sistemi Strutture dati ricorsive (2) Java

Laboratorio di sistemi Strutture dati ricorsive (2) Java Liberamente adattato da Il linguaggio Java di Agostino Lorenzi, Giuseppe Facchetti, Andrea Rizzi Vogliamo rappresentare la seguente struttura dati (una lista concatenata, fatta da nomi di amici e numeri

Dettagli

Laboratorio di sistemi MVC Jsp [NetBeans]

Laboratorio di sistemi MVC Jsp [NetBeans] Estratto da "http://it.wikipedia.org/wiki/model-view-controller" Definizione Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è il nome di un design pattern fondamentale

Dettagli

Laboratorio di Sistemi Serializzazione JSP (Java)

Laboratorio di Sistemi Serializzazione JSP (Java) Il problema Vogliamo realizzare un prototipo di applicazione web che visualizzi l'elenco degli album relativi ad un certo artista e, per ogni album, l'elenco dei brani in esso contenuti. Per farlo sfruttiamo

Dettagli

Lezione n.12 LPR Informatica Applicata GUI programming

Lezione n.12 LPR Informatica Applicata GUI programming Università degli Studi di Pisa Lezione n.12 LPR Informatica Applicata GUI programming 19/05/2008 Laura Ricci UNA SEMPLICE INTERFACCIA PER INSTANT MESSAGING JAVA GUI: COMPONENTI BASE import java.awt.*;

Dettagli

Laboratorio di sistemi JSTL e database Jsp [NetBeans]

Laboratorio di sistemi JSTL e database Jsp [NetBeans] Elenco dei film ottenuti usando la libreria JSTL 1.1 elenco_film_jstl.pdf Pag. 1/18 Cozzetto Inserisco i dati di un film. Prima dell'inserimento i dati vengono confrontati con quelli della tabella film_tbl

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

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

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

Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice

Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice Vogliamo realizzare un'applicazione di tipo CRUD (Create, Read, Update,

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

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

GUI e java swing. Elmenti della GUI. Eventi e listener contenitori componenti layout manager. caratteristiche speciali

GUI e java swing. Elmenti della GUI. Eventi e listener contenitori componenti layout manager. caratteristiche speciali GUI e java swing Raffaella Brighi, a.a. 2005/06 Corso di Laboratorio II. A.A. 2005-06 CdL Operatore Informatico Giuridico. Elmenti della GUI Eventi e listener contenitori componenti layout manager caratteristiche

Dettagli

Il sito della MultisalaOz [ dispone di un archivio dei film già proiettati.

Il sito della MultisalaOz [  dispone di un archivio dei film già proiettati. Il sito della MultisalaOz [http://www.multisalaoz.it] dispone di un archivio dei film già proiettati. In questa figura, potete osservare un sito clone. L utente, selezionando una lettera dell alfabeto

Dettagli

Laboratorio di sistemi Pacchetti PEAR: DB e HTML_Template_IT Php

Laboratorio di sistemi Pacchetti PEAR: DB e HTML_Template_IT Php Uno dei problemi che si deve affrontare nel progetto delle pagine web è quello della commistione tra parte grafica (che si colloca al livello di presentazione) e il codice (che si colloca al livello della

Dettagli

Capitolo 13: Gestione delle eccezioni. Capitolo 13. Gestione delle eccezioni Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2

Capitolo 13: Gestione delle eccezioni. Capitolo 13. Gestione delle eccezioni Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 Capitolo 13 Gestione delle eccezioni 1 Figura 1 La gerarchia delle classi di eccezioni 2 Figura 2 Eccezioni controllate e non controllate 3 File PurseTest.java import javax.swing.joptionpane; import java.io.ioexception;

Dettagli

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare

Dettagli

Istruzioni per la creazione delle pagine Contratto e Scheda

Istruzioni per la creazione delle pagine Contratto e Scheda Istruzioni per la creazione delle pagine Contratto e Scheda Indice 1 Introduzione 3 2 Strumenti di aiuto per la creazione delle pagine 3 3 Inserimento codice HTML creato esternamente 5 2 1 INTRODUZIONE

Dettagli

Laboratorio di sistemi Prima Web Application JSP [Java]

Laboratorio di sistemi Prima Web Application JSP [Java] Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File

Dettagli

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java] Vogliamo realizzare un prototipo di applicativo web che consenta a un gruppo di utenti di autenticarsi. In prima istanza, carichiamo in memoria tutti gli utenti ammessi ad accedere al sistema, in seconda

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

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans) Definizione Adattato da "http://it.wikipedia.org/wiki/model-view-controller" Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è il nome di un design pattern fondamentale

Dettagli

La nostra finestra dovrebbe essere come mostra la figura: Diamo innanzitutto un occhiata alle componenti principali di input/output:

La nostra finestra dovrebbe essere come mostra la figura: Diamo innanzitutto un occhiata alle componenti principali di input/output: Esercitazione N4: Costruzione di una applicazione GUI utilizzando i componenti di base per realizzare l input e l output e cioè Label, TextBox, TextArea Button e Panel (Pannelli) I componenti che utilizzeromo

Dettagli

Laoratorio di sistemi Estrazione di una carta senza ripetizione Java [NetBeans]

Laoratorio di sistemi Estrazione di una carta senza ripetizione Java [NetBeans] Figura 1 - Estraggo la prima carta (l'ultima di un mazzo ordinato) Figura 2 - Michio il mazzo e ne estraggo un'altra estrai_carta_v2.pdf Pag. 1/9 Cozzetto Figura 3 - Una volta estratte tutte le carte,

Dettagli

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java: Esercitazione n 6 Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java: il package javax.swing (JFrame, JPanel, JButton, ) java.util.eventobject e sue

Dettagli

III Appello - 4 giugno 2009

III Appello - 4 giugno 2009 Corso di laurea in Comunicazione digitale Fondamenti di architettura e programmazione AA 2008/09 III Appello - 4 giugno 2009 Cognome Matricola Nome 1 (4 punti) Scrivete il programma Java, Esercizio, che

Dettagli

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

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

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

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo L6 (JAVA9) 3 Parametri e browser 1 Prerequisiti Elementi di base HTML Programmazione Java Interfacce grafiche e gestione eventi 2 1 Introduzione In questa Unità vediamo

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

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Autore: Prof. Agostino Sorbara ITIS M. M. Milano Polistena (RC) In questa lezione introduciamo alcuni strumenti che Java rende disponibili per la creazione di interfacce utente a manipolazione diretta, dette anche WYSISYG (what you see is what you get), con un elevato

Dettagli

Laboratorio di Sistemi Ordinamento di oggetti Java

Laboratorio di Sistemi Ordinamento di oggetti Java Java mette a disposizione diverse interfacce predefinite. Un esempio è l'interfaccia Comparable e consente di confrontare un oggetto con un altro. Per far questo dobbiamo implementare il metodo compareto().

Dettagli

Laboratorio di sistemi SELECT e checkbox Jsp [Java]

Laboratorio di sistemi SELECT e checkbox Jsp [Java] Fig. 1 - Vogliamo visualizzare book_id, autore e titolo dalla tabella books del database shop Fig. 2 - Tabella books select_checkbox.pdf Pag. 1/5 Cozzetto Fig. 3 - Abbiamo due record in output File index_1.jsp

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

Controllo del layout. Per disporre in modo più strutturato utilizziamo pannelli con diverse politiche di disposizione (layout)

Controllo del layout. Per disporre in modo più strutturato utilizziamo pannelli con diverse politiche di disposizione (layout) Controllo del layout Ovvero, controllo della disposizione dei componenti all interno di una finestra Abbiamo visto applicazioni con una disposizione di componenti elementare I pannelli che abbiamo utilizzato

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Ereditarietà e Polimorfismo: Conclusioni versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

Dettagli

Anno Accademico 2003/04. Docente modulo 1: Annalisa De Bonis. Ripete l esecuzione di statement fino a che la condizione e` verificata

Anno Accademico 2003/04. Docente modulo 1: Annalisa De Bonis. Ripete l esecuzione di statement fino a che la condizione e` verificata Iterazioni Anno Accademico 2003/04 Docente modulo 1: Lo statement while while (condition) statement; Ripete l esecuzione di statement fino a che la condizione e` verificata while (balance < targetbalance)

Dettagli

Eventi di azione. // con interfaccia per eventi di azione

Eventi di azione. // con interfaccia per eventi di azione Eventi di azione (Interfaces ActionListener, Classes ActionEvent) Sono generati quando si premono bottoni, si selezionano voci di menù, si preme invio mentre si scrive in un campo di testo. In awt sono

Dettagli

Esercitazione 2. Java:

Esercitazione 2. Java: Esercitazione 2 Java: Eccezioni @andreamocci Casi Eccezionali (1) /* * Produce un numero complesso a partire dalla sua forma polare */ public static Complex frompolarform(double abs, double phase) { /*

Dettagli

L Abstract Windowing Toolkit. Le GUI in Java. Il Frame. Cenni sull ereditarietà. Gianpaolo Cugola - Sistemi Informativi in Rete

L Abstract Windowing Toolkit. Le GUI in Java. Il Frame. Cenni sull ereditarietà. Gianpaolo Cugola - Sistemi Informativi in Rete Le GUI in Java L Abstract Windowing Toolkit Fino ad ora abbiamo usato le classi del pacchetto JavaBook per realizzare semplici interfacce grafiche (GUI) Si tratta di classi facili da usare...... ma che

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Eventi versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Laboratorio di Sistemi DAO JSP (Java)

Laboratorio di Sistemi DAO JSP (Java) Il problema Vogliamo progettare una piccola web application che ci consenta di ottenere, scegliendo un autore da una combo box, l'elenco dei libri scritti da quell'autore (è un esempio già trattato in

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

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

Gestione delle eccezioni

Gestione delle eccezioni Gestione delle eccezioni Raffaella Brighi, a.a. 2007/08 Ereditarietà Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. Casi di insuccesso Vi sono numerosi problemi

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

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione Domanda n. 1 Corso: Fondamenti di Informatica (Canale 5) a.a. 2016-17 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab10 Argomento: Algoritmi e complessita'

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 C2.1 Animazioni 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Utilizzo di elementi grafici ed eventi Utilizzo classe Canvas 2 1 Introduzione

Dettagli

APPLICAZIONI & APPLET

APPLICAZIONI & APPLET APPLICAZIONI & APPLET Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet Porta dinamicità alle pagine HTML "statiche" Viene eseguita dal browser,

Dettagli

Informatica Ereditarietà Java. Ereditarietà

Informatica Ereditarietà Java. Ereditarietà Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Laboratorio di Sistemi Classi e relazioni Java

Laboratorio di Sistemi Classi e relazioni Java package carrelloconsoleapp; import javax.swing.imageicon; /* *.java /** * * @author maurizio public class { private String id; private String descrizione; private double prezzo; private int percsconto;

Dettagli

Iterazioni. L istruzione while. while (condition) istruzione

Iterazioni. L istruzione while. while (condition) istruzione Iterazioni L istruzione while while (condition) istruzione Ripete l esecuzione di istruzione fino a che la condizione resta vera while (balance < targetbalance) year++; double interest = balance * rate

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

Laboratorio di Sistemi Ereditarietà Java

Laboratorio di Sistemi Ereditarietà Java L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi definiti

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona ed ed Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario ed scrittura su in Java ed ed di testo Scrivere stringhe su di testo

Dettagli

Creare un portale personalizzato

Creare un portale personalizzato 1 Creare un portale personalizzato Passi da seguire 1) Aprire la pagina: http://www.term-minator.it/modello.html 2) Scaricare modello : 2) Aprire il file modello con blocco note : 1 2 3) Modificare il

Dettagli

Programmazione in rete e laboratorio

Programmazione in rete e laboratorio Programmazione in rete e laboratorio 2001-02 JAVA Alberto Martelli PROGRAMMAZIONE GRAFICA Molti programmi interagiscono con l utente attraverso una interfaccia grafica GUI - Graphical User Interface Java

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

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 II: Esami Svolti

Programmazione II: Esami Svolti Raccolta di Codici per imparare a programmare in Java in modo tale da affrontare e superare con successo l esame di Programmazione II Programmazione II: Esami Svolti A cura di: Emanuele Cennamo Nel seguente

Dettagli

Application VS Applet

Application VS Applet Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 20 - Java Applet 1 Application

Dettagli

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06 Raffaella Brighi, a.a. 2005/06 Eventi e listener Corso di Laboratorio II. A.A. 2005-06 Eventi e listener Un evento è un oggetto che rappresenta il verificarsi di un azione dell utente o del sistema(es

Dettagli

Programmazione in rete e laboratorio

Programmazione in rete e laboratorio Programmazione in rete e laboratorio JAVA Alberto Martelli PROGRAMMAZIONE GRAFICA Molti programmi interagiscono con l utente attraverso una interfaccia grafica GUI - Graphical User Interface Java fornisce

Dettagli

Gestire le eccezioni. Lezione XI

Gestire le eccezioni. Lezione XI Gestire le eccezioni Lezione XI Scopo della lezione Studiare il meccanismo di gestione delle eccezioni Implementare nuove eccezioni IX-B.2 Tipi di errori Errori rilevati in fase di compilazione: errori

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

Paradigmi di programmazione (sperimentazioni)

Paradigmi di programmazione (sperimentazioni) Paradigmi di programmazione (sperimentazioni) 2000-01 JAVA Alberto Martelli Programmazione grafica PROGRAMMAZIONE GRAFICA Molti programmi interagiscono con l utente attraverso una interfaccia grafica GUI

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java : Conclusioni versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università

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

Divisions e spans. Esercizio. <html> <head> <title>esempio uso del tag span</title> <style> <!--

Divisions e spans. Esercizio. <html> <head> <title>esempio uso del tag span</title> <style> <!-- Divisions e spans L applicazione degli stili può essere eseguita anche su sezioni di testo tramite i tag div e span. Div suddivide il testo analogamente a come si suddivide un articolo in titolo, sottotitolo,paragrafi,

Dettagli

Informatica Interfacce Java

Informatica Interfacce Java Una interfaccia (interface) è un tipo di dato, dichiarato con il costrutto interface del linguaggio Java, che deve essere interamente implementato in una oppure più classi differenti. Lo scheletro per

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,

Dettagli

Corso di Telematica II

Corso di Telematica II Corso di Laurea Triennale in Ingegneria Informatica ed Ingegneria delle Telecomunicazioni Corso di Telematica II Matricola Nome, Cognome Data Orale... Prova scritta del 21/07/2005 Si implementi, in linguaggio

Dettagli

Programmazione a Oggetti Lezione 11. Eccezioni e Packages

Programmazione a Oggetti Lezione 11. Eccezioni e Packages Programmazione a Oggetti Lezione 11 Eccezioni e Packages Sommario Eccezioni Sollevamento Cattura Trattamento Packages e visibilità Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:

Dettagli

Prova scritta del 13 luglio 2010

Prova scritta del 13 luglio 2010 Matricola: Cognome: Nome: Insegnamento: LAB Basi di dati LAB Basi di dati e web Basi di dati e web 4 CFU Laboratorio di Basi di dati (Laboratorio di Basi di dati e Web) Prova scritta del 13 luglio 2010

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Ereditarietà e Polimorfismo: Polimorfismo in Azione versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

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

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche.

Dettagli

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Java Applet 1 Application VS Applet Una

Dettagli

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Pag. 1/12 Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Prendiamo in esame un qualsiasi progetto NetBeans tra quelli studiati che fa uso di un database

Dettagli

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

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