710 likes | 837 Views
STRUMENTI. Introduzione a Java: concetti fondamentali di programmazione; programmazione orientata agli oggetti; caratteristiche di Java Applicazioni Web server-side: Java Servlet Interazione con database: JDBC Introduzione a XML: DTD; parser XML; XML-schema; XSL.
E N D
STRUMENTI Introduzione a Java: concetti fondamentali di programmazione; programmazione orientata agli oggetti; caratteristiche di Java Applicazioni Web server-side: Java Servlet Interazione con database: JDBC Introduzione a XML: DTD; parser XML; XML-schema; XSL Tecnologie Web
Introduzione a Java: concetti fondamentali di programmazione;programmazione orientata agli oggetti; caratteristiche di Java;Java Servlet;Java e datadase (JDBC) Tecnologie Web
Macchina virtuale n Per ogni funzione definita al livello i, viene definita la traduzione nel linguaggio del livello sottostante i-1 Funzioni sempre più astratte Macchina virtuale 1 Macchina hardware Che cosa vuol dire “programmare” - I La programmazione come processo di astrazione: la gerarchia di “macchine virtuali” (linguaggi di programmazione): “Linguaggio macchina”: istruzioni eseguite direttamente dalla macchina hardware Concetto di gerarchia di macchine virtuali potenza e flessibilità dei moderni elaboratori Tecnologie Web
Che cosa vuol dire “programmare” - II Programmare = definire un nuovo insieme di “comandi virtuali” occore tradurre il programma (scritto in un linguaggio ad alto livello) in istruzioni in linguaggio macchina interpreti e compilatori: programmi che traducono le funzioni dei linguaggi ad alto livello in funzioni appartenenti ai linguaggi sottostanti… fino al linguaggio macchina Due tecniche per effettuare questa traduzione: • compilazione • interpretazione Tecnologie Web
Che cosa vuol dire “programmare” - III Compilare un programma: • tradurre il programma P nel linguaggio macchina della macchina M Pm • eseguire Pm sulla macchina M La traduzione viene eseguita da un compilatore. > compila file_sorgente.src file_eseguibile.exe > esegui file_eseguibile.exe La compilazione è più efficiente. NB: Per eseguire il programma su macchine diverse occorrono ri-compilare i sorgenti! Tecnologie Web
Che cosa vuol dire “programmare” - IV Interpretare un programma: • richiedere l’esecuzione del programma P sulla macchina M • ogni istruzione di P viene tradotta in un insieme di istruzioni nel linguaggio macchina di M Im • l’insieme di istruzioni Im viene eseguito sulla macchina M La traduzione viene eseguita da un interprete. > interpreta&esegui file_sorgente.src L’interpretazione è più flessibile. Tecnologie Web
Che cosa vuol dire “programmare” - V Approccio misto (per es. Java): • tradurre il programma in un linguaggio intermedio (bytecode), indipendente dalla macchina Pb • eseguire Pb Il primo passo viene eseguito da un compilatore. Il secondo da un interprete. > compile file_sorgente.src file_intermedio.obj > interpreta&esegui file_intermedio.obj Tecnologie Web
Che cosa vuol dire “programmare” - VI Diversi tipi di linguaggi (ad alto livello): • Linguaggi imperativi Basati sul concetto di assegnamento: le istruzuioni sono sostanzialmente operazioni di modifica delle strutture dati [es: Fortran, Cobol (non strutturati); Pascal, C (strutturati)] • Linguaggi funzionali Basati sul concetto di funzione: le istruzuioni sono funzioni che vengono valutate [es: Lisp] • Linguaggi logici Basati sul concetto di dimostrazione: le istruzuioni esprimono relazioni logiche tra input e output [es: Prolog] • Linguaggi ad oggetti Basati sul concetto di dato come oggetto attivo, in grado di ricevere e inviare messaggi [es: Smalltalk, C++, CLOS, Java] Tecnologie Web
Che cosa vuol dire “programmare” - VII Strumenti per la programmazione: • Editor per la progettazione, per es. editor per costruire diagrammi UML (opzionale) • Editor per scrivere i programmi (obbligatorio) • Compilatore/interprete del linguaggio (obbligatorio) • Debugger (opzionale) • Sistema di mantenimento delle versioni, per es. CVS (opzionale) Tecnologie Web
Che cosa vuol dire “programmare” - VIII Perché scrivere un programma? Per risolvere un problema! 1o passo: analizzare il problema ed identificare una procedura di soluzione = algoritmo = insieme di passi che descrivono i dati e le azioni da eseguire su di essi 2o passo: tradurre l’algoritmo in un insieme di istruzioni per eseguire quelle azioni sui dati = programma Se il problema è complesso (es: gestione automatizzata di una segreteria studenti) occorre un sistema software (= insieme di programmi) NB: Nello sviluppo del software, la fase di analisi e progettazione è importantissima! (In un certo senso, è più importante della realizzazione vera e propria) Tecnologie Web
iscrizione login selez.es. prenotaz. ins. id-pswd autorizzaz. ecc… ver. id-pswd La programmazione orientata agli oggetti - I Metodo classico di software design (progettazione del software) = top-down functional (structured) design = scomposizione gerarchica funzionale paradigma procedurale: procedura = sequenza di passi per raggiungere il risultato Pes es. iscrizione ad un appello = scomposizione in passi via via più semplici, elementari = procedura per iscriversi ad un appello PROGRAMMI = PROCEDURE (ALGORITMI) + STRUTTURE-DATI Tecnologie Web
La programmazione orientata agli oggetti - II Metodo alternativo = object-oriented design = si parte dagli oggetti, non dalle funzionalità! paradigma ad oggetti: oggetti che interagiscono tra loro scambiandosi dei messaggi = collaborazione per raggiungere il risultato Pes es. iscrizione ad un appello = entità coinvolte nell'attività e loro relazioni PROGRAMMI = OGGETTI (DATI + ALGORITMI) + COLLABORAZIONE (INTERFACCE) verifica id-pswd gestore dati studenti id-pswd autorizz. interfaccia studenti prenota app. selez. appello gestore appelli ecc… Tecnologie Web
La programmazione orientata agli oggetti - III Object-oriented design: costruisco un modello del problema (anziché un modello della procedura per risolverlo) Object-oriented programming (programmazine orientata agli oggetti): il programma si adatta ai termini (al “gergo”) del problema, creando gli oggetti necessari a rappresentarlo Pes es [Eckel, cap.1]: un buon modo per cominciare un semplice progetto per un programma orientato agli oggetti è quello di chiedersi “se potessi estrarli da un cappello magico, quali oggetti risolverebbero correttamente il mio problema?” (in altri termini: “quali attori interagiscono nello scenario che descrive il mio problema?”) Tecnologie Web
La programmazione orientata agli oggetti - IV Le 5 caratteristiche principali di Smalltalk (il “papà” dei linguaggi di programmazione orientata agli oggetti) - by Alan Kay: • Ogni cosa è un oggetto (qualsiasi componente concettuale del problema può essere considerata un “oggetto”) • Un programma è un insieme di oggetti che si inviano l’un l’altro dei messaggi • Ogni oggetto ha una memoria (contenente altri oggetti) • Ogni oggetto ha un “tipo” • Tutti gli oggetti di un certo tipo possono rispondere agli stessi messaggi Tecnologie Web
La programmazione orientata agli oggetti - V Secondo Grady Booch un oggetto è un’entità caratterizzata da: • un'identità: possibilità di identificare univocamente l'oggetto • uno stato: l'insieme dei valori dei suoi attributi, in un certo tempo t • un comportamento: l'insieme delle operazioni (funzionalità) offerte dall'oggetto, cioè le cose che l'oggetto è in grado di fare Tecnologie Web
La programmazione orientata agli oggetti - VI Per capire che cos'è un oggetto è necessario introdurre il concetto di “classe” Aristotele introduceva il concetto di “tipo” parlando della classe dei pesci e della classe degli uccelli: tutti gli oggetti appartenenti ad una classe (pur essendo diversi gli uni dagli altri) hanno caratteristiche e comportamenti comuni (determinati appunto dall’appartenenza a quella classe) • Una classe è un’astrazione (un modello) che rappresenta le proprietà comuni (struttura e comportamento) ad un insieme di oggetti concreti (istanze) • Tutti i membri (oggetti, istanze) appartenenti ad una classe avranno caratteristiche e comportamenti comuni, (ma saranno caratterizzati da un proprio stato e una propria identità) Tecnologie Web
La programmazione orientata agli oggetti - VII Quando definisco una classe (tipo) ne definisco: • l’interfaccia = la “vista esterna”, il comportamento, l’insieme di operazioni che i suoi membri (le sue istanze) possono fare, l’insieme di richieste che possono gestire • l’implementazione = la “vista interna”, la definizione dei meccanismi che realizzano le operazioni definite nell’interfaccia implementazione interfaccia Tecnologie Web
La programmazione orientata agli oggetti - VIII Per esempio in una Biblioteca, consideriamo il ruolo del Bibliotecario: • quali servizi (operazioni) offre al pubblico? prestito(libro) questi servizi restituzione(libro) (operazioni) sono prenotazione(libro)accessibili al pubblico = interfaccia • Come li implementa (realizza)? prestito(libro) procedura queste procedure per trovare il libro, prenderlo, sono "segrete", darlo all'utente, registrare il non sono visibili prestito sulla scheda, ... al pubblico = implementazione Tecnologie Web
La programmazione orientata agli oggetti - IX Talvolta si parla di design by contract: L'interfaccia può essere vista come un contratto tra l'oggetto e il mondo esterno; nel nostro esempio, tra il Bibliotecario e il pubblico (Utente) Questo contratto definisce quali servizi l'oggetto (il nostro Bibliotecario) deve offrire (definisce cioè la sua interfaccia), ma non dice nulla in merito all'implementazione (quali procedure vengono eseguite per realizzare il servizio); nel nostro esempio, il Bibliotecario deve garantire i servizi come da contratto, ma può realizzarli come vuole (la realizzazione è una questione privata) Tecnologie Web
La programmazione orientata agli oggetti - X L'interfaccia definisce dunque il comportamento di un oggetto: nell'esempio, i servizi, cioè le operazioni di prestito(libro), restituzione(libro), prenotazione(libro) definiscono il comportamento dei bibliotecari (cioè di tutti i membri, le istanze della classe Bibliotecario) L'interazione avviene inviando un messaggio all'istanza (oggetto), con il quale gli si chiede il servizio desiderato; nell'esempio di deve parlare o scrivere al bibliotecario per avere un libro in prestito, o per restituirlo, o prenotarlo NB: l'interazione (in linea di massima…) avviene con un'istanza (con un membro specifico, un certo bibliotecario) e non con la classe Tecnologie Web
La programmazione orientata agli oggetti - XI I principi fondamentali dell’object-oriented: • Astrazione DISEGNO DI BOOCH, p. 39 Un’astrazione rappresenta le caratteristiche essenziali e distintive di un oggetto, dal punto di vista di chi lo guarda [Grady Booch, Object Oriented Design, Benjamin/Cummings, 1991 p. 39] Tecnologie Web
La programmazione orientata agli oggetti - XII • Incapsulamento (information hiding) DISEGNO DI BOOCH, p. 46 L’incapsulamento (o information hiding) è il principio secondo cui la struttura interna, il funzionamento interno, di un oggetto non deve essere visibile dall’esterno Tecnologie Web
La programmazione orientata agli oggetti - XIII ogni oggetto è costituito da 2 parti: • l’interfaccia (vista “esterna”) visibile • l’implementazione (vista “interna”) nascosta L’incapsulamento (o information hiding) è il processo che nasconde quei dettagli, relativi al funzionamento di un oggetto, che non costituiscono le sue caratteristiche essenziali e distintive [BOOCH, p. 46] Tecnologie Web
La programmazione orientata agli oggetti - XIV • Modularità DISEGNO DI BOOCH, p.50 La modularità consiste nella suddivisione di un sistema in una serie di componenti indipendenti, che interagiscono tra loro per ottenere il risultato desiderato definizione dell’architettura del sistema scelta dei moduli e delle loro interazioni Tecnologie Web
La programmazione orientata agli oggetti - XV ogni oggetto (modulo) è specializzato in un certo compito: tutti gli altri oggetti (moduli) possono rivolgersi a lui (inviandogli un messaggio) se hanno bisogno dei suoi servizi (in cui lui è specializzato) Per esempio: pensate a ciò che avviene nella vita reale, in una società organizzata come la nostra; all'inizio, per sopravvivere e soddisfare i propri bisogni, ogni uomo cercava di realizzare tutte ciò che gli serviva (costruiva utensili, cacciava, si curava, ecc...). Con il miglioramento del tenore di vita e la maggiore complessità dei bisogni da soddisfare, come si è organizzata la società? Attraverso la modularizzazione delle funzioni e la collaborazione di una grande quantità di individui, ognuno specializzato in un compito specifico: se stiamo male ci rivolgiamo ad un medico, per la spesa a verdurieri, macellai, ecc..., Tecnologie Web
La programmazione orientata agli oggetti - XVI • Struttura gerarchica DISEGNO DI BOOCH, p. 55 Una gerarchia è un ordinamento di astrazioni [BOOCH, p. 54] Tecnologie Web
corso data ora aula Appello ereditate da appello ereditate da appello IS-A IS-A corso data ora aula ordine candidati … corso data ora aula testo durata … AppelloScritto AppelloOrale + + La programmazione orientata agli oggetti - XVII Gerarchia di classi e sotto-classi La principale proprietà di una tale gerarchia è l’ereditarietà: • se S è una sotto-classe di C, allora S eredita tutte le proprietà di C - ed eventualmente ne definisce altre; per es: Tecnologie Web
appello-orale-di-TW del-15/1/05 La programmazione orientata agli oggetti - XX • un membro di S sarà automaticamente anche un membro di C; per es. l'appello-orale-di-TW-del-15/1/05, membro della classe AppelloOrale è anche un membro della classe Appello, così come Snoopy, che è un membro della classe Cane, è anche un membro della classe Mammifero l'istanza appello-orale-di-TW-del-15/1/05 è di tipo AppelloOrale, ma è anche di tipoAppello (più generico) Appello instance-of IS-A instance-of AppelloOrale Tecnologie Web
La programmazione orientata agli oggetti - XXI I vantaggi fondamentali dell’approccio object-oriented: • Riuso • Maggiore leggibilità • Estensione e modifica più semplici • Portabilità • Manutenzione del software semplificata • Migliore gestione del team di lavoro Tecnologie Web
Il linguaggio Java - I • Java è un linguaggio orientato agli oggetti, nato all’inizio degli anni ‘90 presso la Sun Microsystems • E’ stato pensato sin dall’inizio per Internet ed è quindi particolarmente adatto per la programmazione Web • Grazie alla compilazione del codice sorgente in un linguaggio intermedio (bytecode) indipendente dal S.O. Java è estremamente portabile (si può sviluppare su Unix ed eseguire su Windows e viceversa!) • Java possiede inoltre moltissime librerie, cioè programmi scritti in Java che implementano varie funzionalità (grafica, interfacce utente, connessioni di rete, sicurezza, ecc…) e che possono essere utilizzati dai programmatori Tecnologie Web
Il linguaggio Java - II Scrivere un programma in Java significa: • Definire un certo numero di classi • Per ogni classe, definire • Le proprietà della classe, cioè le strutture-dati necessarie • Uno o più “costruttori”, cioè meccanismi per costruire oggetti (elementi, membri) di quella classe • Uno o più servizi pubblici, cioè operazioni offerte dalla classe L'insieme dei costruttori e delle operazioni pubbliche rappresenta l'interfaccia della classe In Java, quando vogliamo definire una classe, per es. la classe Biblioteca, creiamo un file con lo stesso nome della classe e l’estensione “.java”, per es. Biblioteca.java Tecnologie Web
Il linguaggio Java - V Dopo aver scritto le classi, dobbiamo compilarle (tradurre il codice sorgente in bytecode) e poi interpretarle (eseguire il bytecode); per fare queste operazioni abbiamo bisogno di: • Un editor generico di testo (per es. il Blocco Note di Windows), oppure un editor dedicato (per esempio TextPad) • Un ambiente di sviluppo: J2SE (Java 2 Platform, Standard Edition) 1.4.2 si può scaricare da sito della Sun (java.sun.com/) e contiene: • compilatore • JRE (Java Runtime Environment): • Java Virtual Machine (interprete) • Java API (le classi Java predefinite, le librerie) Tecnologie Web
Alcune caratteristiche di Java: GUI Interfaccia utente = meccanismo attraverso il quale utente e applicazione comunicano. Possono essere… Java offre una serie di librerie per la costruzuione e la gestione di GUI (Graphical User Interfaces) testuali grafiche Tecnologie Web
Alcune caratteristiche di Java: javadoc - I Commentare il codice: E’ importantissimo che il codice sia leggibile (modificabile) anche a distanza di tempo e da parte di persone diverse dall’autore Per questo è necessario inserire nel codice commenti significativi, che spieghino le funzionalità dei vari metodi, le scelte fattte e quant’altro l’autore ritiene utile per la comprensione del programma Tecnologie Web
Alcune caratteristiche di Java: javadoc - II In Java, esiste una forma standard per commentare il codice, a partire dalla quale è possibile generare in modo automatico ladocumentazione (i cosiddetti API, cioè le interfacce) del programma: /** Questo metodo cancella il numero di matricola indicato dalla lista degli iscritti @param matricola il numero di matricola da cancellare @return void */ public void cancellaPrenotaz(Integer matricola) { ... } Tecnologie Web
Alcune caratteristiche di Java: javadoc - III Se il programma è documentato secondo queste convenzioni, è possibile utilizzare javadoc per generare automaticamente la documentazione: > javadoc Nomefile.java Questo comando genera una serie di file .html (+ un .css e un file package-list) Aprendo index.html con un normale browser (per es. Microsoft Explorer) viene visualizzata la documentazione Tecnologie Web
Alcune caratteristiche di Java: javadoc - IV Tecnologie Web
Alcune caratteristiche di Java: javadoc - V Tecnologie Web
Alcune caratteristiche di Java: javadoc - VI Tecnologie Web
Java e Internet Java su Internet server-side client-side Servlet (e JSP) Applet Tecnologie Web
Java e Internet: Applet Applet = piccolo programma Java che viene scaricato automaticamente insieme ad una pagina Web e viene eseguito sul client dal browser, o da un plug-in (interprete Java) installato nel browser Attenzione! Differenza principale tra Javascript e Applet: • gli script client-side (es. Javascript) sono • interpetati (tradotte ed esguite) dal browser (sul client) • le applet sono • compilate (tradotte) sul server • eseguite sul browser viene scaricato (sul client) solo il bytecode • il codice sorgente non è visibile • sono più efficienti Tecnologie Web
Java e Internet: Servlet - I Ricordiamoci che… • Il Web è basato su un’architettura client-server • Server = processo (programma in esecuzione) che • resta “in ascolto” (in attesa di richieste) su una macchina server • ad ogni richiesta esegue un’azione per gestirla (recuperare una pagina web, eseguire un programma, …) • restituisce al chiamante risultato (pagina richiesta, risultato di esecuzione del programma, …) • Client = programma che effettua richieste al server • Il protocollo applicativo utilizzato dal Web è HTTP, che è basato su due tipi di azioni • richiesta (request) da client a server • risposta (response) da server a client Tecnologie Web
Java e Internet: Servlet - II La richiesta del client è espressa mediante un URL (identificatore univoco di una risorsa sul Web), può richiedere: • La visualizzazione, sul client, di una pagina statica: http://www.di.unito.it/people/goy.html • La visualizzazione, sul client, di una pagina dinamica, frutto di un’elaborazione precedentemente avvenuta sul server: http://www.di.unito.it/negozio/prezzo.jsp • L’esecuzione, sul server, di un programma, un’applicazione Web: http://www.di.unito.it/negozio/calcolaPrezzo Tecnologie Web
Java e Internet: Servlet - III In questi ultimi due casi (pagina dinamica o programma) è possibile includere nella richiesta dei dati (parametri) su cui la pagina dinamica o il programma potranno lavorare: http://www.di.unito.it/negozio/prezzo.jsp?prec=100&spesa=25 http://www.di.unito.it/ negozio/calcolaPrezzo?prec=100&spesa=25 I programmi che appartengono ad un’applicazione web server-side sono programmi come altri ma: • li si deve poter invocare attraverso il web server • il web server deve poter passare al programma la HTTP request contenente i dati (parametri), affinchè il programma la interpreti • quando il programma ha ottenuto il risultato, lo “impacchetta” e lo invia al web server che lo spedisce al client via HTTP response Tecnologie Web
Java e Internet: Servlet - IV • Le servlet “girano” nel processo del web server e agiscono come livello intermedio tra: • richieste provenienti dai client (browser) • database e altre sorgenti informative gestite dal server • Le servlet “caricate” nel processo del server, “vivono” (restano in esecuzione) finché non vengono esplicitamente “scaricate” (l’esecuzione viene terminata) possono gestire innumerevoli richieste da parte dei client Tecnologie Web
Java e Internet: Servlet - V Java Servlet = tecnologia server-side offerta in ambiente Java = programma Java che gestisce HTTP request e restituisce HTTP response estende le funzionalità del web server Vantaggi delle Servlet: • essendo programmi duraturi • permettono a web server di gestire interazioni complesse con i client (non solo singole risposte a singole richieste, ma anche sequenze di request-response) • essendo scritte in Java • sono indipendenti dalla piattaforma su cui devono girare (portabilità) • possono sfruttare tutti i vantaggi dati dalla disponibilità delle librerie Java Tecnologie Web
Web Container HTTP request HTTP Server client (browser) HTTP response contenuti statici (pag. html, immagini) Java e Internet: Servlet - VI Per costruire un’applicazione web basata sull’uso di servlet è necessario un Web Container (o Servlet Container o Servlet Engine); il Web Container: • “carica” le servlet nel processo del web server (alla prima invocazione della servlet) • supporta il protocollo HTTP (per gestire il flusso request/response) • gestisce al suo interno più applicazioni, ognuna identificata da un servlet context (nome univoco) Tecnologie Web
Java e Internet: Servlet - VII Tipi di Web Container: • Web Container incluso nel web server: web server scritti in Java includono Web Container; per es: Jakarta Tomcat (di Apache) • Web Container in J2EE application server: application server che gestiscono Enterprise Java Beans includono anche web server e web container • Web Container in runtime separato: web servers come Apache e Microsoft IIS necessitano di runtime separato per gestire le servlets, più un plug-in che gestisce la comunicazione tra web server e Web Container Tecnologie Web
Java e Internet: Servlet - VIII Invocazione di un’applicazione basata su Java Servlet (“ANDATA”) 2: il web server identifica l’applicazione (attraverso servlet context) e delega la gestione della richiesta Applicazione web Web Container Servlet/JSP web server 3: il Web Container identifica il tipo di applicazione (JSP, servlet), delega la richiesta e passa i dati (parametri) contenuti in HTTP request) 1: il browser invia una richiesta HTTP request browser Tecnologie Web
Java e Internet: Servlet - IX Invocazione di un’applicazione basata su Java Servlet (“RITORNO”) Applicazione web Web Container Servlet/JSP 5: il Web Container invia la risposta al web server • 4: la servlet: • interpreta la HTTP request • gestisce la richiesta • invia il risultato al • Web Container attraverso • HTTP response web server 6: il web server invia la risposta al browser HTTP response browser Tecnologie Web