Laboratorio di Sistemi Distribuiti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Sistemi Distribuiti"

Transcript

1 Laboratorio di Sistemi Distribuiti Bianchi Marco Univ. Roma Tor Vergata November 15, 2006 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

2 Introduzione ad XML (3/3) 1 Parsing di documenti XML Modelli di parsing SAX DOM JAXB 2 Domande? Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

3 Parsing di documenti XML Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

4 Modelli di parsing Pull parsing: L applicazione chiede esplicitamente al parser il prossimo segmento di informazione. Non esistono ancora API standard, ma potrebbero uscire presto perchè è un modello di parsing che sta diventando sempre più popolare. Push parsing: Il parser notifica all applicazione il tipo di elemento XML incontrato. Le notifiche vengono inviate in ordine di lettura. Le Simple API for XML (SAX 2.0) rappresentano le API standard de facto. One-step parsing: Il parser legge l intero documento XML e genera una struttura dati (parse tree) che riflette la struttura ad albero del documento. La struttura dati, e relative API, standard de facto è Document Object Model (DOM), definita dal W3C. La comunità Java ha definito Java DOM (JDOM) per offrire un alternativa a DOM che risultasse pensata specificatamente per essere utilizzata in un programma Java. Hybrid parsing Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

5 Comparazione dei modelli di parsing Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

6 Processamento XML orientato ai dati Sono possibili due diversi approcci: approccio orientato alle operazioni approccio orientato ai dati Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

7 Processamento XML: approccio orientato alle operazioni L approccio orientato alle operazioni prevede la definizione di API customizzate per l esecuzione delle operazioni da eseguire sul documento XML. Ad esempio: package com.skatestown.invoice; import java.io.inputstream; public interface InvoiceChecker { /** Check invoice totals. invoicexml Invoice XML document Exception Any exception returned during checking */ void checkinvoice(inputstream invoicexml) throws Exception; Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

8 Per implementare il metodo checkinvoice() è necessario: 1 Ottenere un parser XML; 2 Parsare il documento XML passato come inputstream; 3 Inizializzare a 0 il totale; 4 Per ogni elemento bisogna calcolare il totale parziale del prodotto ordinato (quantità X prezzo) e aggiornare il totale; 5 Sommare il costo delle tasse al totale; 6 Sommare i costi di trasporto al totale; 7 Confrontare il totale calcolato con quello riportato nel documento XML; 8 Se le somme non coincidono, lanciare un eccezione; 9 altrimenti, esci. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

9 Processamento XML: approccio orientato ai dati L approccio orientato ai dati prevede la generazione di classi customizzate per la realizzazione di un mapping con i tipi di dato definiti dal documento XML. Ad esempio: class Address {... class Item {... class InvoiceItem extends Item {... class Invoice { int id; Date submitted; Address billto; Address shipto; InvoiceItem order[]; float tax; float shippingandhandling; float totalcost; Il processo di conversione dei dati applicativi in XML è chiamato marshalling, mentre il processo di conversione inverso unmashalling. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

10 Compilatori di schemi E possibile customizzare il binding tra dati XML e i tipi di dato che vengono generati. La comunità Java standardizzato il mapping tra tipi di dato XML schema e tipi di dato Java (JAXB 2.0) Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

11 Architettura di JAXP SAX Durante il parsing vengono invocati tutti i metodi callback registrati. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

12 Principali classi di JAXP SAX Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

13 Interfacce callback ContentHandler Contiene metodi per tutti i gli eventi principali del parsing XML: void startdocument() void enddocument() void startelement(string namespaceuri, String localname, String qname, Attributes atts) void characters(char[] ch, int start, int length) ErrorHandler Contiene metodi per la ricezione delle notifiche di errore void error(saxparseexception exception) void fatalerror(saxparseexception exception) DTDHandler. EntityResolver. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

14 Esempio di come SAX genera gli eventi <?xml version="1.0" encoding="utf-8"?> <sampledoc> <greeting>hello, world!</greeting> </sampledoc> Eventi generati start document start element: sampledoc star element: greeting characters: Hello, world! end element: greeting end element: sampledoc end document Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

15 Implementazione di invoicechecker() con SAX public class InvoiceCheckerSAX extends DefaultHandler implements InvoiceChecker { // Class-level data // invoice running total double runningtotal = 0.0; // invoice total double total = 0.0; // Utility data for extracting money amounts from content boolean ismoneycontent = false; double amount = 0.0; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

16 /** * Check invoice totals. invoicexml Invoice XML document Exception Any exception returned during checking */ public void checkinvoice(inputstream invoicexml) throws Exception { // Use the default (non-validating) parser SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxparser = factory.newsaxparser(); // Parse the input; we are the handler of SAX events saxparser.parse(invoicexml, this); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

17 // SAX DocumentHandler methods public void startdocument() throws SAXException { runningtotal = 0.0; total = 0.0; ismoneycontent = false; public void enddocument() throws SAXException { // Use delta equality check to prevent cumulative // binary arithmetic errors. In this case, the delta // is one half of one cent if (Math.abs(runningTotal - total) >= 0.005) { throw new SAXException( "Invoice error: total is " + Double.toString(total) + " while our calculation shows a total of " + Double.toString(Math.round(runningTotal * 100) / 100.0)); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

18 public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes attrs) throws SAXException { if (localname.equals("item")) { // Find item subtotal; add it to running total runningtotal += Integer.valueOf(attrs.getValue(namespaceURI, "quantity")).intvalue() * Double.valueOf(attrs.getValue(namespaceURI, "unitprice")).doublevalue(); else if (localname.equals("tax") localname.equals("shippingandhandling") localname.equals("totalcost")) { // Prepare to extract money amount ismoneycontent = true; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

19 public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException { if (ismoneycontent) { if (localname.equals("totalcost")) { total = amount; else { // It must be tax or shippingandhandling runningtotal += amount; ismoneycontent = false; public void characters(char buf[], int offset, int len) throws SAXException { if (ismoneycontent) { String value = new String(buf, offset, len); amount = Double.valueOf(value).doubleValue(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

20 Architettura di DOM Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

21 Interfacce principali di DOM Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

22 Implementazione di invoicechecker() con DOM public class InvoiceCheckerDOM implements InvoiceChecker { /** * Check invoice totals. * invoicexml Invoice XML document Exception Any exception returned during checking */ public void checkinvoice(inputstream invoicexml) throws Exception { // Invoice running total double runningtotal = 0.0; // Obtain parser instance and parse the document DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Document doc = builder.parse(invoicexml); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

23 // Calculate order subtotal NodeList itemlist = doc.getelementsbytagname("item"); for (int i = 0; i < itemlist.getlength(); i++) { // Extract quantity and price Element item = (Element)itemList.item(i); Integer qty = Integer.valueOf( item.getattribute("quantity")); Double price = Double.valueOf( item.getattribute("unitprice")); // Add subtotal to running total runningtotal += qty.intvalue() * price.doublevalue(); // Add tax Node nodetax = doc.getelementsbytagname("tax").item(0); runningtotal += doublevalue(nodetax); // Add shipping and handling Node nodeshippingandhandling = doc.getelementsbytagname("shippingandhandling").item(0); runningtotal += doublevalue(nodeshippingandhandling); Bianchi [continua] Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

24 // Get invoice total Node nodetotalcost = doc.getelementsbytagname("totalcost").item(0); double total = doublevalue(nodetotalcost); // Use delta equality check to prevent cumulative // binary arithmetic errors. In this case, the delta // is one half of one cent if (Math.abs(runningTotal - total) >= 0.005) { throw new Exception( "Invoice error: total is " + Double.toString(total) + " while our calculation shows a total of " + Double.toString(Math.round(runningTotal * 100) / 100.0)); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

25 /** * Extract a double from the text content of a DOM node. * node A DOM node with character content. The double representation of the node s content. Exception Could be the result of either a node * that does not have text content being passed in * or a node whose text content is not a number. */ private double doublevalue(node node) throws Exception { // Get the character data from the node and parse it String value = ((CharacterData)node.getFirstChild()).getData(); return Double.valueOf(value).doubleValue(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

26 Java Architecture for XML Binding The Java Architecture for XML Binding (JAXB) offre un modo veloce e convenienete per il binding tra XML schemas and tipi di dato Java. JAXB 2.0 offre importanti novità rispetto a JAXB 1.0, tra cui: Supporto completo a W3C XML Schema; Supporto per il binding Java-to-XML, con un nuovo package (javax.xml.bind.annotation) per cil controllo del binding; Una significativa riduzione del numero delle classi generate a partire da uno schema; Maggiore capacità di validazione; Librerie runtime più leggere. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

27 Architettura di JAXB schema compiler (binding descritto da un XML-based binding language). schema generator (mapping descrito da annotazioni del programma). binding runtime framework. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

28 Il processo di binding di JAXB Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

29 Utilizzo del compilatore xjc Dopo aver scaricato (dal sito java.sun.com) ed installato il Java Web Service Developer Pack 2.0 (jwsdp-2.0): Unix Shell invoice]$ $JWSDP_HOME/jaxb/bin/xjc.sh invoice.xsd parsing a schema... compiling a schema... com/skatestown/ns/invoice/invoicetype.java com/skatestown/ns/invoice/itemtype.java com/skatestown/ns/invoice/objectfactory.java com/skatestown/ns/invoice/package-info.java com/skatestown/ns/po/addresstype.java com/skatestown/ns/po/itemtype.java com/skatestown/ns/po/objectfactory.java com/skatestown/ns/po/potype.java com/skatestown/ns/po/package-info.java [localhost@localdomain invoice]$ Queste classi possono essere compilate ed utilizzate per implementare checkinvoice(). Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

30 La classe InvoiceType public class InvoiceType { protected AddressType billto; protected AddressType shipto; protected Order order; protected BigDecimal tax; protected BigDecimal shippingandhandling; protected BigDecimal totalcost; protected BigInteger customerid; protected BigInteger id; protected XMLGregorianCalendar submitted; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

31 public AddressType getbillto() {... public void setbillto(addresstype value) {... public AddressType getshipto() {... public void setshipto(addresstype value) {... public Order getorder() {... public void setorder(order value) {... public BigDecimal gettax() {... public void settax(bigdecimal value) {... public BigDecimal getshippingandhandling() {... public void setshippingandhandling(bigdecimal value) {... public BigDecimal gettotalcost() {... public void settotalcost(bigdecimal value) {... public BigInteger getcustomerid() { public void setcustomerid(biginteger value) {... public BigInteger getid() {... public void setid(biginteger value) {... public XMLGregorianCalendar getsubmitted() {... public void setsubmitted(xmlgregoriancalendar value) {... public static class Order { protected List<ItemType> item; public List<ItemType> getitem() { Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

32 Modify Marshal Example import java.io.fileinputstream; import java.io.ioexception; import java.math.bigdecimal; import javax.xml.bind.jaxbcontext; import javax.xml.bind.jaxbelement; import javax.xml.bind.jaxbexception; import javax.xml.bind.marshaller; import javax.xml.bind.unmarshaller; import primer.po.*; public class Main { public static void main( String[] args ) { try { // create a JAXBContext capable of handling classes generated i // the primer.po package JAXBContext jc = JAXBContext.newInstance( "primer.po" ); // create an Unmarshaller Unmarshaller u = jc.createunmarshaller(); Bianchi [continua] Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

33 // unmarshal a po instance document into a tree of Java content // objects composed of classes from the primer.po package. JAXBElement poe = (JAXBElement)u.unmarshal(new FileInputStream( "po.xml" ) ); PurchaseOrderType po = (PurchaseOrderType)poe.getValue(); // change the billto address USAddress address = po.getbillto(); address.setname( "John Bob" ); address.setstreet( "242 Main Street" );... // create a Marshaller and marshal to a file Marshaller m = jc.createmarshaller(); m.setproperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ) m.marshal( poe, System.out ); catch( JAXBException je ) { je.printstacktrace(); catch( IOException ioe ) { ioe.printstacktrace(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

34 Per approfondire l utilizzo di JAXB 2.0 far riferimento al The Java EE 5 Tutorial scaricabile gratuitamente dal sito Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

35 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52

Introduzione a The Java Architecture for XML Binding (JAXB)

Introduzione a The Java Architecture for XML Binding (JAXB) Laboratorio di Programmazione Distribuita Introduzione a The Java Architecture for XML Binding () Dott. Marco Bianchi Università degli Studi di L'Aquila bianchi@di.univaq.it http://di.univaq.it/~bianchi

Dettagli

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web T A.A. 2014 2015 Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Agenda Creazione di documenti XML Creazione di documenti DTD Creazione

Dettagli

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web T A.A. 2014 2015 Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Agenda Creazione di documenti XML Creazione di documenti DTD Creazione

Dettagli

XML e XSD. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

XML e XSD. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com XML e XSD Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com Ordine di Acquisto Servizio: eshop Operazione: ordine di acquisto Dati dell'ordine: prodotti quantità corriere Playstation 2 Controller

Dettagli

Laboratorio di sistemi interattivi. Struttura di un applicazione Java-XML. Lezione 12: Java & XML

Laboratorio di sistemi interattivi. Struttura di un applicazione Java-XML. Lezione 12: Java & XML Laboratorio di sistemi interattivi Lezione 12: Java & XML 1 Struttura di un applicazione Java-XML Parser analizza il contenuto di un file XML Produce eventi in corrispondenza delle diverse componenti Eventi

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

SAX e DOM. Analisi di un documento

SAX e DOM. Analisi di un documento SAX e DOM Programmazione in Ambienti Distribuiti A.A. 2003-04 Analisi di un documento Il parser è uno modulo software utilizzato per l analisi di un documento Eseguire il parsing di un documento significa

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Spring WS Sviluppare WebService in Java

Spring WS Sviluppare WebService in Java Spring WS Sviluppare WebService in Java 1.1 Introduzione Nell ambito della programmazione Java è particolarmente utile avere una certa familiarità con i WebService e la tecnologia che li supporta. In particolare

Dettagli

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");

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

Elaborazione di documenti XML

Elaborazione di documenti XML Elaborazione di documenti XML Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.13 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria XML e i linguaggi di

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

Dettagli

Java threads (2) Programmazione Concorrente

Java threads (2) Programmazione Concorrente Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and

Dettagli

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY 1 Sommario 1. INTRODUZIONE... 3 2. GET METAIO... 4 2.1. PREREQUISITI... 4 2.2. INTALLAZIONE... 4 2.3. PROGETTI ESEMPLIFICATIVI... 4 3. USARE

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org

1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org 1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org Applicazione J2EE sul SAP WAS con SAP NWDS. Il SAP Web Application Server fornisce un framework integrato per lo sviluppo e l

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione

Dettagli

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3 Introduzione alle annotation di Hibernate3 a cura di Lucio Benfante Hibernate Hibernate è un framework che realizza un object/relational mapping (ORM) fra oggetti Java e strutture di un database relazionale

Dettagli

XML. Spunti per la parte esercitativa. Simon Pietro Romano

XML. Spunti per la parte esercitativa. Simon Pietro Romano XML Spunti per la parte esercitativa Simon Pietro Romano spromano@unina.it PARTE I Concetti generali SAX vs DOM SAX: Simple API for XML event-driven, serial-access mechanism that does element-by-element

Dettagli

1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages

1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages 1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages Le JSP DynPages sono un utile strumento, fornito da SAP Netweaver, per una gestione più evoluta di event handling e session

Dettagli

Corso di Applicazioni Telematiche

Corso di Applicazioni Telematiche XML: extensible Markup Language Parte II Corso di Applicazioni Telematiche A.A. 2011-2012 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria Outline Parte I XML:

Dettagli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

JUG Ancona Italy. Google Web Toolkit. Giovanni Baleani Programmatore Java. Filippetti S.r.l.

JUG Ancona Italy. Google Web Toolkit. Giovanni Baleani Programmatore Java. Filippetti S.r.l. JUG Ancona Italy Google Web Toolkit Giovanni Baleani Programmatore Java Filippetti S.r.l. AJAX e GWT - AJAX: Tecnologia emergente, tra le prime applicazione ajax ci sono proprio gmail e google calendar.

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Il Web-Service SDMX dell ISTAT

Il Web-Service SDMX dell ISTAT Il Web-Service SDMX dell ISTAT Versione: 1.0.0 Data: 05/06/2014 Autore: Approvato da: Modifiche Versione Modifiche Autore Data Indice dei contenuti 1 Introduzione... 4 2 Creazione dell esempio d uso...

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java 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 Programmazione Object Oriented in Java

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

PRACTICAL DEVELOPMENT OF A WEB SERVICE

PRACTICAL DEVELOPMENT OF A WEB SERVICE PRACTICAL DEVELOPMENT OF A WEB SERVICE 1 JAX-WS 2.0 Java API for XML Web Services Specifica basata su annotazioni Applicata su classi ed interfacce in modo da definire e gestire automaticamente il protocollo

Dettagli

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Client e Server comunicano tramite il protocollo SOAP.

Client e Server comunicano tramite il protocollo SOAP. In questo tutorial implementeremo un semplice SOAP web service in PHP che un client Java richiamerà. In questo modo mostreremo l'interoperabilità fra linguaggi diversi che SOAP permette di avere. La struttura

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Java Servlet Parte a versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002 Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE

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

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

Dettagli

4 Anno 2011 - Informatica ABACUS

4 Anno 2011 - Informatica ABACUS Testo Il Ministero dell Ambiente commissiona lo sviluppo di un nuovo Sistema Informativo per censire la fauna e la flora presenti nei vari parchi naturali di ciascuna regione. Le informazioni della fauna

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione

Dettagli

Eclipse. Avviare un progetto e compilare un semplice programma

Eclipse. Avviare un progetto e compilare un semplice programma Eclipse Avviare un progetto e compilare un semplice programma Descrizione di Eclipse Eclipse è un ambiente di sviluppo che facilita la scrittura ed il debug di programmi java Permette di: Scrivere il codice

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

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

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Laboratorio di Sistemi Distribuiti

Laboratorio di Sistemi Distribuiti Laboratorio di Sistemi Distribuiti Bianchi Marco Univ. Roma Tor Vergata November 8, 2006 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 8, 2006 1 / 73 Introduzione ad

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

13. Chain of Responsibility

13. Chain of Responsibility Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire

Dettagli

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language a.a. 2004/05 Tecnologie Web 1 XML - I XML (exstensible Markup Language): XML è un formato standard,

Dettagli

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive Assembler di Spim Assembler di SPIM Il programma è organizzato in linee Ogni linea può contenere un commento che parte dal carattere # e si estende fino alla fine della linea Ogni linea che non sia bianca

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Programmazione su Reti

Programmazione su Reti Programmazione su Reti Esempio di applicazione Client Server su protocollo Soap Fabio Donatantonio Applicazione Applicazione Client-Server per la gestione di un elenco di persone con relativi dati. Viene

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

JAXP: Java API for XML Processing. Marco Tessarotto Programmazione dei Web Server Anno Accademico

JAXP: Java API for XML Processing. Marco Tessarotto Programmazione dei Web Server Anno Accademico JAXP: Java API for XML Processing Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JAXP: Java API for XML processing JAXP: elaborazione di dati XML in Java Utilizza i parser che

Dettagli

Creare client statici

Creare client statici Client statico Creare client statici Un client statico crea, a partire dal WSDL di un servizio, un insieme di classi di supporto client-side (stub) Sono necessari solo 2 passi: 1. parsing del WSDL pubblicato

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

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

DATI IDENTIFICATIVI DEL PROGETTO

DATI IDENTIFICATIVI DEL PROGETTO DATI IDENTIFICATIVI DEL PROGETTO N. VERSIONE 1.0 ITEM Integrazione con Java DATA DI USCITA PREVISTA DESCRIZIONE Creazione di DLL per integrazioni con Java Pag. 1 di 9 Descrizione dei requisiti Sezione

Dettagli

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012 Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente

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

Cifratura simmetrica

Cifratura simmetrica Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

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

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Main System Monitor Keyboard

Main System Monitor Keyboard Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

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

Reflection in Java. 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 Reflection in Java 1 Reflection Riflessione

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging Corso di programmazione di sistemi mobile 1 Android Google Cloud Messaging Corso di programmazione di sistemi mobile 2 Cos è Il Google Cloud Messaging o GCM è un servizio di Google che permette di inviare

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

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array 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

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli