Java EE 4. Laboratorio di Ingegneria del software. Andrea Bei
|
|
- Gennaro Abbate
- 6 anni fa
- Visualizzazioni
Transcript
1 Java EE 4 Laboratorio di Ingegneria del software Andrea Bei
2 Java EE Pattern Web Tier Model 1 e Model 2 (MVC) Front Controller Service To Worker Business Tier Data Access Object (Integration Tier) Business Delegate Service Locator Risorse Understanding JavaServer Pages Model 2 architecture Core J2EE Pattern J2EE Pattern Catalog
3 Model 1 (*) (*) I JavaBean possono interfacciarsi al DB direttamente o mediante oggetti DAO (scelta migliore) Architettura Model 1: Le pagine JSP processano le richieste, creano e usano JavaBean per elaborare le risposte La logica di business è incapsulata nei JavaBean la presentazione è implementata dalle pagine JSP La separazione presentazione/logica di business non è netta: le chiamate ai metodi dei JavaBean sono effettuate all interno delle pagine JSP Ciò comporta che le pagine JSP sono poco manutenibili dai web designer ed è difficile distinguere nettamente le responsabilità tra web designer e developer E un modello adatto solo per applicazioni semplici
4 Model View Controller Il Pattern Model View Controller (MVC) prevede la progettazione dell applicazione in 3 componenti 1. Model: Logica Di Business 2. View: Logica di Presentazione 3. Controller: Logica di Controllo Il controller ha la responsabilità di Trasformare le interazioni dell'utente sulla View in azioni sul modello Selezionare le View richieste ( pagine nel caso di web application)
5 Model 2 (*) (*) I JavaBean possono interfacciarsi al DB direttamente o mediante oggetti DAO (scelta migliore) Architettura Model 2: E una implementazione di MVC Il Controller è una Servlet che esegue le seguenti azioni per ogni request Riceve la request e in base all azione codificata nella request Crea i bean contenenti i dati visualizzati dalla pagina JSP di destinazione e li inserisce in sessione o nell oggetto request (scelta migliore) (2) Decide la JSP a cui inoltrare la richiesta ed esegue il forward della request (inoltro) (3) La View è una JSP E responsabile di recuperare i bean creati dal controller (4), estrarne il contenuto creando dinamicamente la pagina Il Model è un JavaBean
6 Model 1: caso di studio libreria Architettura di tipo Model 1 Presentation, Application, Services Java Bean JSP,HTML Domain Data transfer object DAO Collection di Data transfer object Persistence DB
7 Model 1: caso di studio libreria Realizzazione caso d uso Inserimento Autore (Architettura) Presentation, Application, Services Autore Bean insautore.html insautore.jsp Domain Autore Libreria Persistence DB
8 Model 1: caso di studio libreria Dati inviati tramite un form. insautore.html <html> <head> <title>inserimento Autore</title> </head> <body> <form method="post" action= insautore.jsp"> <p>nome:<input type="text" name="nome" size="20"></p> <p>cognome: <input type="text" name="cognome" size="20"></p> <p>data di Nascita: <input type="text" name= data" size="20"></p> <p>luogo di Nascita: <input type="text" name= luogo" size="20"></p> <p><input type="submit" value="invia" name="b1"> </form> </body> </html>
9 Model 1: caso di studio libreria <html> <head> <title>inserisciautore</title> </head> page import= AutoreBean"%> <body> <%=request.getparameter("nome")%><br> <%=request.getparameter("cognome")%><br> <%=request.getparameter( data")%><br> <%=request.getparameter( luogo")%><br> <jsp:usebean id= autore" class= AutoreBean" scope="page"> <jsp:setproperty name= autore" property="nome value="<%=request.getparameter("nome")%>"/> <jsp:setproperty name= autore " property="cognome" value="<%=request.getparameter("cognome")%>"/> <jsp:setproperty name= autore " property= datadinascita" value="<%=request.getparameter(" datadinascita ")%>"/> <jsp:setproperty name= autore " property= luogodinascita" value="<%=request.getparameter(" luogodinascita ")%>"/> <% autore.inserisci(); %> </jsp:usebean> </body></html> insautore.jsp
10 Model 1: caso di studio libreria public class AutoreBean { private String nome; private String cognome; private String datadinascita; private String luogodinascita; AutoreBean.java public void setnome(string nome){ this.nome=nome; public String getnome(){ return nome; // altri metodi getter e setter per cognome, datadinascita, luogodinascita public void inserisci(){ Libreria libreria=new Libreria ( libreria, libreria, libreria ); Autore autoredto=new Autore(nome,cognome, datadinascita, luogodinascita); libreria.inserisciautore(autoredto);
11 Model 2: caso di studio libreria Realizzazione caso d uso Seleziona il genere (navigazione) Ricerca.html (1) request GET action=listageneri public class ricerca extends HttpServlet { private processrequest(...,...) { Servlet ricerca Impl. processrequest SelezioneGenere.jsp public void doget(..,..) { processrequest(...,...) public void dopost(..,..) { processrequest(...,...) SelezioneLibro.jsp
12 Model 2: caso di studio libreria <html> Ricerca.html <head> <title>ricerca</title> </head> <body> <p align="center"><font SIZE="+3" COLOR="#800000" FACE="Tahoma"><b>Seleziona il tipo di ricerca</b></font> <table BORDER="0" align="center"> <tr><td> <a href=" </td></tr> <tr><td> <a href=" </td></tr> <tr><td> <a href=" action=listatitoli">titolo</a> </td></tr> </table></p> </body> </html>
13 Model 2: caso di studio libreria import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; import Libreria; Servlet ricerca public class ricerca extends HttpServlet { Libreria l; public void init(servletconfig config) throws ServletException { l=new Libreria("libreria","libreria","libreria"); super.init(config);
14 Model 2: caso di studio libreria protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; String action = request.getparameter("action"); if (action.equals( listageneri ) { // (1) // vengono recuerati i dati e resi disponibile alla JSP Collection listageneri = l.getlistageneri(); request.setattribute(" listageneri ", listageneri ); Servlet ricerca // si decide la JSP a cui forwardare la richiesta page= SelezioneGenere.jsp ; //(2) //. Il codice relativo alle altre action sarà descritte in seguito dispatch(request, response, page); protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dispatch(httpservletrequest request, HttpServletResponse response, String page) throws javax.servlet.servletexception, java.io.ioexception { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(page); dispatcher.forward(request, response);
15 Model 2: caso di studio libreria page session ="true" %> <html> <title>selezione Nome</title> <body><p align="center"> <font SIZE="+3" COLOR="#800000" FACE="Tahoma"> <b>seleziona il genere</b></font></p> <% Collection c= (Collection) request.getattribute("listageneri"); %> <form method="post" action="/servlet/libreria/ricerca"> <input type="hidden" name="action" value= listalibri"> <center> <select name="genere" size="1"> <% Iterator i=c.iterator(); while (i.hasnext()) { String genere = (String) i.next(); %> <option value="<%=genere%>"><%=genere%></option> <% %> </select> <input type="submit" value="invia" name="b1"></center>" </form> </html> SelezioneGenere.jsp
16 Model 2: caso di studio libreria Servlet ricerca protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; String action = request.getparameter("action"); if (action.equals( listageneri ) { //(1) // vengono recuerati i dati e resi disponibile alla JSP Collection listageneri = l.getlistageneri(); request.setattribute(" listageneri ", listageneri ); // si decide la JSP a cui forwardare la richiesta page= SelezioneGenere.jsp ; //(2) if (action.equals( listalibri ) { //(3) // vengono recuerati i dati e resi disponibile alla JSP Collection listalibri = l.getlistalibri(); request.setattribute(" listalibri ", listalibri ); // si decide la JSP a cui forwardare la richiesta page= SelezioneLibro.jsp ; //(4) //. codice relativo ad altre Action dispatch(request, response, page);
17 Model 2: caso di studio libreria page session ="true" %> <html> <title>seleziona Libro</title> <body><p align="center"> <font SIZE="+3" COLOR="#800000" FACE="Tahoma"> <b>seleziona il Libro</b></font></p> <% Collection c= (Collection) request.getattribute("listalibri"); %> <form method="post" action="/servlet/libreria/ricerca"> <input type="hidden" name="action" value= schedalibro"> <center> <select name= libro" size="1"> <% Iterator i=c.iterator(); while (i.hasnext()) { String libro = (String) i.next(); %> <option value="<%=libro%>"><%=libro%></option> <% %> </select> <input type="submit" value="invia" name="b1"></center>" </form> </html> SelezioneLibro.jsp
18 Front Controller Contesto La gestione delle richieste dello strato di presentazione può essere centralizzata (una sola servlet) o decentralizzata (più servlet) Problema l sistema può avere un punto di accesso centralizzato per supportare: Servizi tecnici (autenticazione, autorizzazione, logging, tracciamento della navigazione dell utente, ) Il recupero dei dati La gestione delle viste e della navigazione Se non si ha un accesso centralizzato: Ogni View fornisce i propri servizi tecnici (codice duplicato) La logica di navigazione è lasciata alle View. Non si supporta High Coesion perché le View dovrebbero essere responsabili solo della presentazione Forze Sono necessari dei servizi tecnici centralizzati Esistono molte View che possono essere create con la stessa logica di business La logica dei servizi tecnici e della navigazione è complessa
19 Front Controller Soluzione: si usi un controller come punto iniziale di accesso per la gestione di richieste. Il controller gestisce le richieste Invocando i servizi tecnici Delegando i processi di business Gestendo la scelta della View opportuna (logica di navigazione) Gestendo gli errori Gestendo la strategia di creazione dei contenuti (DAO, EJB,..)
20 Front Controller public class EmployeeController extends HttpServlet { public void init(servletconfig config) throws ServletException { super.init(config); protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; /*preleva le configurazioni di sistema es: pagina di errore **/ ApplicationResources resource = ApplicationResources.getInstance(); try { // Un oggetto helper preleva il valore dei parametri RequestHelper helper = new RequestHelper(request); Command cmdhelper= helper.getcommand(); page = cmdhelper.execute(request, response); // viene eseguita l azione catch (Exception e) {page = resource.geterrorpage(e); dispatch(request, response, page); // inoltra la richiesta alla View
21 Front Controller protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dopost(httpservletrequest request,httpservletresponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dispatch(httpservletrequest request,httpservletresponse response,string page) throws javax.servlet.servletexception, java.io.ioexception { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(page); dispatcher.forward(request, response);
22 Front Controller Strategia Command e Controller Basato sul Command Pattern [GoF] Suggerisce di fornire una interfaccia comune ai componenti helper (*) Supporta Protected Variation rispetto all aggiunta o modificare dei componenti helper non ha impatto sul controller E un approccio valido per tutti i tipi di client (non solo Web) Facilita la creazione di comandi composti (Composite [Gof]) Il termine Action ed il termine Command sono usati spesso come sinonimi (*) COMPONENTI HELPER Sono Pure Fabrication di supporto ( Helper ) In questo caso il supporto è fornito al controller per individuare il comando/azione da eseguire in base ai parametri della request
23 Front Controller Strategia Command e Controller protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String resultpage; try { RequestHelper helper = new RequestHelper(request); /** il getcommand() internamente usa un factory per recuperare i command objects come segue: Command command = CommandFactory.create(request.getParameter("op")); **/ Command command = helper.getcommand(); // delega la richiesta ad un helper di tipo command object resultpage = command.execute(request, response); catch (Exception e){resultpage = ApplicationResources.getInstance(). geterrorpage(e); dispatch(request, response, resultpage);
24 Service To Worker Contesto Il sistema controlla il flusso di esecuzione ed accede ai dati di business con cui crea dinamicamente le viste Problema La combinazione dei problemi di Front Controller e View Helper Forze Si eseguono le fasi di Autenticazione e Autorizzazione per ogni richiesta Il codice delle Scriptlet nelle View deve essere minimizzato La logica di business deve essere incapsulata in componenti Il flusso di controllo è complesso La logica di gestione delle viste e della navigazione è complessa Soluzione Si creino un controller e un dispatcher combinati con View ed Helper Il controller delega a classi Helper il recupero di dati dallo strato di business Il dispatcher è responsabile per la gestione delle View e la navigazione e può essere incapsulato direttamente nel controller o in un altraclasse
25 Service To Worker autenticazione, autorizzazione, recupero dei contenuti, validazione dell input, navigazione, dispatch View (statica o dinamica)
26 Service To Worker Strategia dispatcher nel controller Quando la logica di dispatching non è complessa (es: è statica) è possibile inserirla direttamente nel controller
27 Data Access Object Contesto I componenti di accesso ai dati variano a seconda della fonte dati (RDBMS, Flat File, ODBMS, ) Problema I componenti di accesso ai dati sono dipendenti dalla tecnologie delle sorgenti di dati: JDBC (per DB relazionali) EJB (per applicazioni Business 2 Businss) Web Services Quando la sorgente dei dati cambia tali componenti devono essere cambiati per gestire il nuovo tipo di sorgente Forze Tutti i casi in cui è necessario supportare Protected Variations rispetto alla sorgent dei dati Soluzione Usare un Data Access Object (DAO) per astrarre ed incapsulare la logica di accesso alla sorgente dei dati. Il DAO gestisce la connessione con la sorgente dei dati e ottiene e memorizza I dati
28 Data Access Object BusinessObject E un qualsiasi Client che richiede dati al DAO
29 Data Access Object
30 Data Access Object Strategia DAO Factory Quando la tecnologia usata per la persistenza non cambia è possibile usare un solo factory per tutti i DAO necessari alla applicazione
31 Data Access Object Strategia DAO Factory Quando la tecnologia usata per la persistenza cambiaè possibile usare il Pattern Abstract Factory (Gof)
32 Data Access Object Esempio (DAO Factory)
33 Data Access Object Esempio (DAO Abstract Factory)
34 Data Access Object Esempio (DAO Abstract Factory) public abstract class DAOFactory { public static final int CLOUDSCAPE = 1; public static final int ORACLE = 2; public static final int SYBASE = 3; // Un metodo per ogni DAO public abstract CustomerDAO getcustomerdao(); public abstract AccountDAO getaccountdao(); public abstract OrderDAO getorderdao();... public static DAOFactory getdaofactory(int whichfactory) { switch (whichfactory) { case CLOUDSCAPE: return new CloudscapeDAOFactory(); case ORACLE : return new OracleDAOFactory(); case SYBASE : return new SybaseDAOFactory(); default :
35 Data Access Object Esempio (DAO Abstract Factory) public class CloudscapeDAOFactory extends DAOFactory { public static final String DRIVER= "COM.cloudscape.core.RmiJdbcDriver"; public static final String DBURL jdbc:cloudscape:rmi://localhost:1099/j2eedb"; public static Connection createconnection() { // Qui ci va il codice di creazione della connection public CustomerDAO getcustomerdao() { return new CloudscapeCustomerDAO(); public AccountDAO getaccountdao() { return new CloudscapeAccountDAO(); public OrderDAO getorderdao() { return new CloudscapeOrderDAO();...
36 Data Access Object Esempio (DAO Abstract Factory) public interface CustomerDAO { public int insertcustomer(...); public boolean deletecustomer(...); public Customer findcustomer(...); public boolean updatecustomer(...); public RowSet selectcustomersrs(...); public Collection selectcustomersto(...);...
37 Data Access Object Esempio (DAO Abstract Factory) public class CloudscapeCustomerDAO implements CustomerDAO { public CloudscapeCustomerDAO() { // initialization public int insertcustomer(...) { // implementazione public boolean deletecustomer(...) { // implementazione public Customer findcustomer(...) { public Collection selectcustomersto(...) { // Implementazione: ritorna una Collection di DTO...
38 Data Access Object Esempio (DAO Abstract Factory) public class Customer implements java.io.serializable { int CustomerNumber; String name; String streetaddress; String city;... // metodi getter e setter......
39 Data Access Object Esempio (DAO Abstract Factory) // creo il DAO Factory DAOFactory cloudscapefactory = DAOFactory.getDAOFactory(DAOFactory.DAOCLOUDSCAPE); // Creo un DAO CustomerDAO custdao = cloudscapefactory.getcustomerdao(); // creo un nuovo customer int newcustno = custdao.insertcustomer(...); // cerco un customer. Mi viene restituito un DTO Customer cust = custdao.findcustomer(...); cust.setaddress(...); // modifico il DTO cust.set (...); // aggiorno le informazioni custdao.updatecustomer(cust); // cancello un customer... custdao.deletecustomer(...);
40 Business Delegate Contesto Un sistema prevede l invocazione di servizi I client devono gestire la complessità dell accesso ai servizi Problema Se i componenti dello strato di presentazione invocano direttamente i servizi di business distribuiti Forze I componenti dello strato di presentazione sono fragili rispetto ai cambiamenti dell implementazione dei servizi di business Potrebbe esserci un basso livello di performance per mancanza di caching I componenti dello strato di presentazione devono accedere a servizi di business Le API dei servizi di business potrebbero cambiare con l evoluzione dei requisiti E opportuno implementare dei meccanismi di caching per ridurre il traffico di rete tra i client ed i servizi di business
41 Business Delegate Soluzione Usare un Business Delegate per ridurre l accoppiamento tra strato di presentazione e i servizi di business. Il Business Delegate nasconde i dettagli di implementazione di lookup e accesso di servizi di business Il LookupService può essere parte del BusinessDelegate o un Componente separato (come propone il Pattern Service Locator)
42 Business Delegate
43 Service Locator Contesto Necessità di incapsulare il lookup di servizi di business Problema Delocalizzare il servizio Disaccoppiare il client dal problema di recuperare un riferimento del servizio
44 Service Locator Soluzione Si usi un Service Locator per nascondere la complessità del lookup di oggetti service Più client possono riusare il Service Locator per ridurre la complessità, avere un unico punto di controllo e migliorare le performance con meccanismi di caching
45 Service Locator
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
DettagliProgrammazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti
Programmazione Java Avanzata MVC Model, View,, Controller Ing. Gianluca Caminiti Uso di JSP: complessità crescente Invocare codice Java direttamente. Posizionare tutto il codice Java in una pagina JSP
DettagliBasi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008
Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di
DettagliIntroduzione alla programmazione Http lato server in Java
Introduzione alla programmazione Http lato server in Java Tito Flagella Laboratorio Applicazioni Internet - Università di Pisa Slide API Java Titleper il Protocollo Http Programmazione Client java.net.url
DettagliPRIMO MODULO. DURATA: 80 ore CONTENUTI
0 PRIMO MODULO DURATA: 80 ore CONTENUTI 1. Introduzione alla programmazione a. Cosa è la programmazione strutturata b. Strutture dati c. Come si affronta una problematica da risolvere d. Quali sono i passi
Dettagli1 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
DettagliCORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,
DettagliLaboratorio 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
DettagliSoluzione 1: controller per la pagina di dettaglio delle categorie
Soluzione 1: controller per la pagina di dettaglio delle categorie @WebServlet("/category") public class CategoryDetailsServlet extends HttpServlet { public void doget( HttpServletRequest request, HttpServletResponse
Dettagli1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet
1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso
DettagliServlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:
e JDBC Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino e : estensioni del Java API permettono di scrivere
DettagliCorso di Applicazioni Telematiche
Corso di Applicazioni Telematiche A.A. 2008-09 Lezione n.12 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Una Servlet è un componente software scritto in Java,
DettagliJava Enterprise Edition - JEE. Autore: Agostino Sorbara ITIS M. M. Milano
Java Enterprise Edition - JEE Autore: Agostino Sorbara ITIS M. M. Milano Indice Introduzione 2 Il modello Client Server. 2 La piattaforma di sviluppo JEE... 3 Application Server... 3 Servlet. 4 JSP (Java
DettagliSERVLET & JSP DISPENSE
SERVLET & JSP DISPENSE PROGRAMMAZIONE LATO SERVER Un server deve rispondere alle richieste del client e permettere di visualizzare le pagine Web. Questo compito è svolto da un software ben definito, il
DettagliCorso Programmazione Java Avanzato
Corso Programmazione Java Avanzato Codice: ITJA0113 Durata: 40 ore Descrizione corso Questo corso fornisce una panoramica sulle tecnologie impiegate per la realizzazione di applicazioni web basate sulla
DettagliLaboratorio di reti II: Java Server Pages
Laboratorio di reti II: Java Server Pages Stefano Brocchi brocchi@dsi.unifi.it 6 aprile, 2009 Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 1 / 34 JSP - Java Server Pages Le
DettagliProgrammazione server-side: Java Servlet
Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos
DettagliAccesso Web a Data Base
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Accesso Web a Data Base Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei -
DettagliVerso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le
DettagliCapitolo 7. Soluzione: <P align= center > Form di invio nome e cognome </P> <FORM action= nomecognome.exe method= post >
Capitolo 7 Esercizio 7.1 Commentare le caratteristiche di HTTP come protocollo client-server, evidenziando gli aspetti differenti rispetto ai protocolli client-server tradizionali. La caratteristica che
DettagliFramework di Middleware. per Architetture Enterprise
Framework di Middleware per Architetture Enterprise Corso di Ingegneria del Software A.A.2011-2012 Un po di storia 1998: Sun Microsystem comprende l importanza del World Wide Web come possibile interfaccia
DettagliAlma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione Riepilogo
Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T Esercitazione 09 Riepilogo Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica:
DettagliAlma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 09 Riepilogo
Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T Esercitazione 09 Riepilogo Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica:
DettagliArchitettura MVC-2 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Verso l architettura MVC-2
Architettura MVC-2 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Verso l architettura MVC-2 2 Il secondo passo verso l architettura MVC-2 è quello di separare il controllo dell esecuzione, che rimane alla
DettagliProgramma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC
Programma didattico Sviluppare Applicazioni Distribuite in ambiente Spring MVC Programma del corso 1.Progettazione e Sviluppo Database Relazionali Questa competenza permette di Progettare e Sviluppare
DettagliTecnologie 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
DettagliLuca Cabibbo. Persistenza di oggetti
AP Analisi S Analisi e Progettazione del Software Persistenza di oggetti aprile 2004 1 Persistenza di oggetti Motivazioni e contenuti Contesto applicazioni sviluppate mediante le moderne tecniche di OOA/OOD/OOP
DettagliArchitettura MVC-2. Alberto Belussi. Anno accademico 2006/2007
Architettura MVC-2 Alberto Belussi Anno accademico 2006/2007 Verso l architettura MVC-2 Il secondo passo verso l architettura MVC-2 è quello di separare il controllo dell esecuzione, che rimane alla servlet,
DettagliTecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web con Servlet e JSP: Concetti Avanzati G. Mecca mecca@unibas.it Università della Basilicata Applicazioni Web J2EE >> Sommario Concetti Avanzati Preliminari
DettagliProgrammazione Java Avanzata PATTERN
Programmazione Java Avanzata PATTERN Anno 2011/2012 Pattern Una soluzione progettuale generale a un problema ricorrente Elementi per il riuso di software ad oggetti Vantaggiosi e obbligatori da usare Pattern
DettagliMODEL-VIEW-CONTROLLER PROBLEMA
MODEL VIEW CONTROLLER DESIGN PATTERN MODEL-VIEW-CONTROLLER INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it
DettagliUn contatore di accessi
Un contatore di accessi Scriviamo una servlet che conta il numero di accessi e lo visualizza. Sfruttiamo il fatto che Tomcat, quando riceve la richiesta di una servlet, crea un istanza della classe corrispondente.
DettagliLezione di Basi di Dati 1 18/11/2008 - TECNOLOGIE PER IL WEB: CGI - AJAX SERVLETS & JSP
EVOLUZIONE DEL WEB: PAGINE STATICHE vs PAGINE DINAMICHE Il Web è nato a supporto dei fisici, perché potessero scambiare tra loro le informazioni inerenti le loro sperimentazioni. L HTTP è nato inizialmente
DettagliLe JavaServer Pages - Lezione 7 I JavaBean
Le JavaServer Pages - Lezione 7 I JavaBean A cura di Giuseppe De Pietro (depietro_giuseppe@yahoo.it) Contenuti Nelle lezioni precedenti abbiamo visto gli elementi principali delle Java Server Pages, come
DettagliVerso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le parti statiche sono scritte in
DettagliGestire le sessioni con le Servlet
PROGETTO Gestire le sessioni con le Servlet Con il termine sessione si intende un insieme di attività correlate, con una o alcune di queste che sono preliminari ad altre. Si pensi, per esempio, a un qualsiasi
DettagliCORSO DI PROGRAMMAZIONE JAVA
CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi
DettagliTrasformare 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
DettagliArchitettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3
Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 Verso l architettura MVC-2 2 Il secondo passo verso l architettura MVC-2 è quello di separare il controllo dell
DettagliLaboratorio di Basi di Dati
Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata
DettagliStateless Session Bean
Stateless Session Bean 1 Esempio Stateless Session bean per il calcolo della somma di due numeri reali 2 Struttura del sistema calcolo della somma di due numeri reali Sum implementato con uno stateless
DettagliIntroduzione a Java Servlet Technology
Introduzione a Java Technology SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi Chi ha conosciuto quella forma del principio di ragione che apparisce nel tempo puro in quanto
DettagliSiti 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
Dettagliscrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore
In genere il metodo alert() è usato per verificare il valore delle variabili durante la fase di correzione degli errori (debugging), fase che può essere svolta anche con l ausilio di appositi programmi
DettagliLaboratorio 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
DettagliServlet API. Programmazione in Ambienti Distribuiti A.A. 2003-04
Servlet API Programmazione in Ambienti Distribuiti A.A. 2003-04 Servlet Interfaccia Java che modella il paradigma richiesta/elaborazione/risposta tipico delle applicazioni lato server Presuppone l esistenza
DettagliIngegneria del Software Model View Controller
Ingegneria del Software 1 07 - Model View Controller Martedì, Aprile 4, 2016 Claudio Menghi, Alessandro Rizzi April 5, 2017 1 Contents Ingegneria del Software 1 (Claudio Menghi, Alessandro Rizzi ): 07
DettagliApplicazioni web. Sommario. Parte 7 Java Server Pages. Applicazioni web - JSP. Alberto Ferrari 1 JSP. JavaBeans JSTL. Architettura e sintassi di base
Applicazioni web Parte 7 Java Server Pages Alberto Ferrari 1 Sommario JSP JavaBeans JSTL Architettura e sintassi di base Concetti fondamentali Beans in pagine JSP Linguaggio di espressione Azioni principali
Dettagli3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni
IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................
DettagliApplicazioni web. Parte 2 JSP. Michele Tomaiuolo tomamic@ce.unipr.it
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 2 JSP Michele Tomaiuolo tomamic@ce.unipr.it Sommario JSP: sintassi di
DettagliArchitettura 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
DettagliLe tecnologie software Internet
Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B B2_1 V1.7 Le tecnologie software Internet Standard aperti / Sun Java Il contenuto del documento è liberamente utilizzabile dagli studenti,
DettagliMVC - Principio. MVC Model View Controller. MVC - Terminologia. MVC - Funzionamento. Richiesta. Controller. Model. Risposta. View
MVC View Controller! Si tratta di un pattern di progettazione introdotto originariamente con Smalltalk (1980 Xerox)! Si basa su astrazioni presenti in tutte le applicazioni dotate di interfaccia grafica!
DettagliJDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico
JDBC Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JDBC JDBC (Java Database Connectivity) è una API Java per accedere ed elaborare dati in una sorgente dati (di solito un db
DettagliUniversità di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi C1_1 V3.
Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE Paolo Salvaneschi C1_1 V3.4 Componenti Il contenuto del documento è liberamente utilizzabile
DettagliObject-Relational Mapping
Object-Relational Mapping Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2009-2010 Approccio
Dettagli19 - 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
DettagliArchitettura Model-View-Controller (MVC)
Laboratorio a o o di Basi di Dati e Web Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere
DettagliLaboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 8 Java Server Pages Java Server Pages è essenzialmente un modo più comodo per il programmatore dell applicazione web di scrivere una Servlet.
DettagliOsservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1
Osservazioni Nell esempio della precedente lezione del contatore di accessi persistente il nome del file in cui memorizzare il numero di hit ed il valore iniziale del contatore sono codificati direttamente
DettagliLe tecnologie software Internet
Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B2_1 V1.7 Le tecnologie software Internet Standard aperti / Sun Java Il contenuto del documento è liberamente utilizzabile
DettagliLaboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata
DettagliI file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1
I file WAR WAR è una contrazione di Web ARchive. I file WAR consentono di archiviare un intera applicazione web in un unico file. Tomcat fornisce (tramite il Tomcat Manager) un interfaccia grafica per
DettagliSvantaggi delle servlet
Svantaggi delle servlet Le servlet sono la tecnologia principale di J2EE per comunicare con i browser dei client. Tuttavia ci sono degli inconvenienti per gli sviluppatori di applicazioni web: le servlet
DettagliLaboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 6 Servlet Servlet: classi java che estendono le funzionalità di un server Web generando dinamicamente le pagine Web. Riferimento: http://java.sun.com/products/servlets
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliLaboratorio di Basi di dati
Laboratorio di Basi di dati Docente: Alberto Belussi Lezione 6 Servlet Servlet: classi java che estendono le funzionalità di un server Web generando dinamicamente le pagine Web. Riferimento: http://www.oracle.com/technetwork/java/javaee/servlet/index.html
DettagliNote pratiche sullo sviluppo di servlet (I)
Note pratiche sullo sviluppo di servlet (I) Nel caso in cui sulla macchina locale (PC in laboratorio/pc a casa/portatile) ci sia a disposizione un ambiente Java (con compilatore) e un editor/ambiente di
DettagliLaboratorio di Progettazione di Sistemi Software Design Patterns
TITLE Laboratorio di Progettazione di Sistemi Software Design Patterns Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali Strutturali Comportamentali
DettagliProgrammazione 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
DettagliSERVLET & JSP DISPENSE
SERVLET & JSP DISPENSE PROGRAMMAZIONE LATO SERVER Un server deve rispondere alle richieste del client e permettere di visualizzare le pagine Web. Questo compito è svolto da un software ben definito, il
DettagliJ2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.
Il Pattern MVC J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser. Il famework Sun J2EE Component, Container e Connector:
DettagliSOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria
Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito
DettagliProgetto di Gestione Documenti in Ambiente Web
Progetto di Gestione Documenti in Ambiente Web Sessione Febbraio 2013 Marco Taddei 726523 Federico Valentini 726584 Il progetto SharesShop simula un portale web di una banca che mette a disposizione dei
DettagliJava Server Pages. Corso di Applicazioni Telematiche. A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico
Java Server Pages Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Java Server Pages (JSP) Java Server
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client
DettagliLe conversazioni. Dott. Doria Mauro
Hibernate Le conversazioni Dott. Doria Mauro doriamauro@gmail.com Introduzione alle conversazioni In una applicazione reale le operazioni sono organizzate in classi controller con le funzioni di business
DettagliFramework. Impianti Informatici. Web application - tecnologie
Framework Web application - tecnologie Web Application: tecnologie 2 Java-based (J2EE) Sviluppata inizialmente da Sun Cross-platform e open source Gestire direttamente le funzionalità dell applicazione
DettagliL architettura MVC (Model- View-Controller) Introduzione
L architettura MVC (Model- View-Controller) Introduzione Architettura MCV L architettura MVC è un insieme di regole per strutturare un sito-web dinamico. Queste regole complicano la struttura del sito,
DettagliIl problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.
Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli
DettagliArchitetture Web: un ripasso
Architetture Web: un ripasso Pubblicazione dinamica di contenuti. Come si fa? CGI Java Servlet Server-side scripting e librerie di tag JSP Tag eseguiti lato server Revisione critica di HTTP HTTP non prevede
DettagliModelli e strumenti per la generazione automatica di codice
tesi di laurea Anno Accademico 2005-2006 relatore Ch.mo prof. Porfirio Tramontana candidato Valerio Lombardi Matr. 534/237 Contesto e Contributo Fusione tra il mondo della modellazione e della programmazione
DettagliINTRODUZIONE A J2EE 1.4 E AI SERVIZI WEB ENTERPRISE
00-PRIME PAGINE 2-07-2003 10:04 Pagina V Indice Prefazione XI PARTE PRIMA INTRODUZIONE A J2EE 1.4 E AI SERVIZI WEB ENTERPRISE 1 Capitolo 1 Le ragioni di tanto interesse 3 1.1 Enterprise in J2EE 3 Definizione
DettagliBasi di Dati. JDBC - Esercitazione n. 4 Quaderno n. 4. Passi preliminari per lo svolgimento delle esercitazioni
Basi di Dati JDBC - Esercitazione n. 4 Quaderno n. 4 La finalità di questa esercitazione è scrivere le parti mancanti di una semplice applicazione Java che utilizza JDBC per accedere ad una base di dati.
DettagliTecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Struttura dell Applicazione versione 2.4 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliLaboratorio di Basi di Dati e Multimedia
Laboratorio di Basi di Dati e Multimedia Laurea in Tecnologie dell Informazione: Multimedia Docente: Alessandra Di Pierro Email: dipierro@sci.univr.it Lezione 7 Java DataBase Connectivity JDBC consente
DettagliChiamata delle funzioni JavaScript da un applet
Chiamata delle funzioni JavaScript da un applet Il codice Java delle applet può essere eseguito nei browser Web su cui è presente il Java Plug-in, un meccanismo che gestisce le interazioni tra i browser
DettagliLaboratorio di Basi di Dati
Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 10 Architettura Model-View-Controller (MVC) L'architettura MVC può essere applicata anche alla tecnologia PHP secondo diversi approcci. In questa
DettagliErrata Corrige di Manuale di Java 8
Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public
Dettagli1 EJB e Portal Component Object http://desvino.altervista.org
1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un
DettagliTomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni
Tomcat & Servlet Programmazione in Ambienti Distribuiti V 1.2 Marco Torchiano 2005 Contenuti Tomcat Applicazioni Web Struttura Sviluppo Deployment Servlet JSP Uso delle sessioni 1 Tomcat Tomcat è un contenitore
DettagliEsercitazione sui Design Pattern. lunedì 29 aprile 13
Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
DettagliSession tracking Session tracking HTTP: è stateless, cioè non permette di associare una sequenza di richieste ad un dato utente. Ciò vuol dire che, in generale, se un browser richiede una specifica pagina
DettagliLa fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo
Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E
DettagliUniversità degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria. Laurea Magistrale in Ingegneria Informatica
Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Laurea Magistrale in Ingegneria Informatica Tesi di Laurea Sistema informativo per la gestione dei processi
DettagliTener traccia del client
Tener traccia del client Raramente un applicazione web è costituita da una singola pagina (risorsa). E utile quindi tener traccia dei client che si collegano per rendere più semplice lo sviluppo dell applicazione.
DettagliFONDAMENTI 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,
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Dettagli