Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) Progetto Sistemi Informativi Geografici per la gestione e la modellazione di dati territoriali a 4 Edizione - 2006 Corso di specializzazione Programmazione Orientata ad Oggetti in JAVA per lo sviluppo di applicazioni GIS Open Source al servizio di soluzioni stand-alone e Web Scopo del corso Il presente corso si propone l’obiettivo di sviluppare le capacità di analisi e programmazione necessarie e funzionali allo sviluppo di applicazioni di tipo spaziale. Attraverso un percorso graduale ed ambizioso, il corso copre i concetti fondamentali alla base della programmazione OO (Orientata ad Oggetti), introducendo ed approfondendo al contempo la sintassi ed i costrutti di programmazione di JAVA nel contesto dello sviluppo di applicazioni di gestione, visualizzazione ed interrogazione di dati geografici. Linguaggio ormai consolidato nello sviluppo di applicazioni distribuite in ambito Web, anche grazie alla sua naturale vocazione multi-piattaforma (write once, run anywhere), JAVA si colloca infatti nel complesso panorama dei linguaggi di sviluppo quale candidato ideale per l’apprendimento delle moderne tecniche di programmazione. Pur condividendo con il C++ parte della filosofia e della sintassi, JAVA si caratterizza però per una ben più spiccata semplicità; ambiente ideale per l’apprendimento ed approfondimento dei concetti chiave della programmazione OO, lo studio di JAVA definisce le linee guida di sviluppo utili alla programmazione con gli altri linguaggi ad oggetti, quali ad esempio Visual Basic o PHP, e, nel contesto specifico dello sviluppo di applicazioni spaziali, fornisce una chiave di accesso più matura ad ambienti emergenti quali VBA/ArcObjects per ESRI ArcGIS 8/9. Il corso adotta quale testo di riferimento “Java Programming for Spatial Sciences” di Jo Wood (City University, Londra), condividendone di fatto struttura logica ed obiettivi. Riconoscendo a tale testo chiarezza e finalità didattiche di grande pregio, questa scelta risponde alla esigenza fondamentale di mettere a disposizione dei partecipanti la documentazione irrinunciabile per un efficace approfondimento e consolidamento dei concetti trattati e dei progetti sviluppati. Sviluppo di una applicazione in ambiente BlueJ: classi, relazioni e test di un applet JAVA senza esplicita chiamata da HTML ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) Al termine del corso i partecipanti avranno acquisito una conoscenza approfondita delle problematiche e delle opportunità offerte dal paradigma di programmazione ad oggetti, della filosofia e della sintassi del linguaggio di programmazione JAVA e delle tecniche di sviluppo di applicazioni spaziali. Attraverso un percorso articolato, teorico e pratico, i partecipanti svilupperanno gradualmente le competenze necessarie allo sviluppo autonomo di due distinti progetti di tipo spaziale, focalizzati rispettivamente sulla programmazione evolutiva, funzionale alla modellazione della natura dinamica di molti fenomeni ambientali e sociali, e sull’accesso, interrogazione e visualizzazione di coperture geografiche di tipo vettoriale e raster, sia nell’ambito di applicazioni stand-alone che distribuite in ambiente Web. Questo corso si colloca nell’ambito di un progetto ambizioso di formazione sui Sistemi Informativi Territoriali. Tali sistemi, anche noti come GIS dall’acronimo inglese Geographical Information Systems, si stanno gradualmente imponendo come strumenti di gestione, visualizzazione, interrogazione ed analisi di dati geografici nei domini professionali più disparati. Tra questi, il settore urbanistico (PRG), quello della pianificazione territoriale, quello del controllo ambientale sono solo alcuni degli esempi più rilevanti. In questo contesto, le esigenze di automazione e di personalizzazione della piattaforma software di base, ovvero di sviluppo di applicazioni stand-alone, sono sempre più rilevanti. Programma del corso Il corso verterà sui seguenti punti fondamentali, secondo un percorso teorico/pratico: Introduzione ai concetti fondamentali della programmazione OO e dell’ingegneria software Breve introduzione agli obiettivi ed alla struttura del corso; Introduzione alla programmazione procedurale ed OO da un punto di vista storico, punti di forza di JAVA e suo ruolo nello sviluppo di applicazioni distribuite in ambiente Web; Classi ed oggetti. Definizioni, progettazione , stato e comportamento di una classe, instanziazione di oggetti. JAVA ed editor BlueJ: installazione, concetti fondamentali e riferimenti bibliografici; Progettazione di applicazioni: ingegneria software, UML e linee guida di best practice nella scrittura del codice; Variabili, tipi primitivi e typecasting. Sviluppo di classi ed oggetti Classi vs. oggetti, instanziazione di oggetti, ereditarietà, metodi fondamentali (costruttori, accessor e mutator), messaggi e passaggio di parametri, metodi astratti ed interfacce.; Classi grafiche (AWT e SWING) e sviluppo del classico programma di benvenuto al nuovo ambiente di sviluppo. Progettazione della struttura delle classi, in funzione degli obiettivi di programmazione e delle esigenze di riutilizzabilità, analisi dell’architettura delle relazioni ed implementazione del codice. Caso studio A: analisi, progettazione e sviluppo di una gerarchia di classi a partire dall’osservazione ed analisi della dinamica evolutiva di una singola formica in un contesto spaziale ristretto. L’analisi e la soluzione software del problema offrono l’opportunità di introdurre efficacemente e consolidare i concetti di modellazione orientata ad oggetti ed in particolare della ereditarietà, composizione ed implementazione di interfacce. L’esempio offre peraltro la prima opportunità di introdurre alla esigenza ed alla definizione concettuale (lo sviluppo del codice è demandato a fase successiva) di una classe spaziale, che consenta di modellizzare tanto la geografia del luogo che l’ubicazione (dinamica) dell’animale. Controllo del flusso Variabili ed operatori (aritmetici, logici), regole di precedenza, precisione, controlli di flusso per la realizzazione di iterazioni (loops di tipo for, do while e while do), nested loops, arrays monodimensionali e multidimensionali (dichiarazione ed inizializzazione), modello raster quale esempio di array multidimensionale, progettazione e gestione dinamica (laying out) di componenti grafiche (Flow, Border e Grid Layout); Caso studio B: analisi, progettazione e sviluppo della GUI (Graphical User Interface) di un programma di visualizzazione di una copertura raster, previa estensione della classe nativa JPanel, analisi dei problemi ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) di trasformazione delle coordinate reali allo spazio video e della palette di colori, e gestione della disposizione degli elementi di interfaccia (display, visualizzazione metadata e comandi utente). Gestione delle decisioni Istruzioni ed operatori di gestione delle decisioni: if, if-else, nested if, switch, flowthrough, break e default, operatori condizionali e linee guida per una corretta progettazione del flusso decisionale. Breve introduzione agli algoritmi di ordinamento (sorting) e cenni a quelli di ricerca (searching). Sviluppo di una classe elementare, basata sull’algoritmo Bubble Sort. Caso studio A: sviluppo della classe spaziale (Footprint), al momento limitata alla gestione di geometrie puntuali o rettangolari ed astrazione delle caratteristiche comuni ai modelli raster e vettoriale attraverso la definizione di una interfaccia comune (SpatialModel). In questo contesto introduzione al concetto di variabile di classe e sviluppo di un algoritmo elementare di analisi delle relazioni topologiche (separazione, adiacenza esterna o interna, intersezione, contenimento e coincidenza secondo una classificazione semplificata da Molenaar, 1998 xx), sviluppato grazie all’utilizzo degli operatori di gestione delle decisioni. Condivisione e distribuzione delle classi Sviluppo applicazione: codice sorgente della classe ImagePanel Controllo dello scopo delle variabili (locali, a (fonte: Jp Wood, 2002) livello di metodo, di tipo oggetto e classe) ed utilizzo dei modificatori (modifier) private, public e protected per controllarne la visibilità. Documentazione del codice JAVA mediante Javadoc, navigazione delle librerie (packages) di JAVA (awt, swing, event, util, io ed applet). Creazione ed archiviazione di nuovi packages, convenzioni sui nomi per evitare conflitti con librerie esistenti e gestione dei percorsi (classpaths). Caso studio A: creazione della GUI mediante utilizzo del package swing, sulla base del modello di delegazione (delegation model of event handling), funzionale ai requisiti di flessibilità dettati dalle eventuali esigenze di estensione ad altri approcci applicativi (quali l’utilizzo di awt ed applets). Nel contesto di un approccio rigorosamente OO, la gestione dell’output grafico è demandata alla responsabilità delle singole classi, focalizzando l’attenzione su che cosa disegnare, dove e quando farlo. Collezioni di oggetti Modellazione di oggetti spaziali vettoriali utilizzando array. Fondamenti teorici relativi alla creazione di gruppi dinamici, iterators e collections (List, Set, Map ed il loro equivalenti ordinati, SortedSet e SortedMap), TreeMap e HashMap e fondamenti di database connectivity. Sviluppo di un modello vettoriale più efficiente mediante collezioni dinamiche, basato sullo sviluppo delle nuove classi GISVector e VectorMap. Caso studio A: integrazione e completamento del modello mediante una programmazione evolutiva che tiene conto della complessità e della dinamica del processo in analisi. Il modello è esteso, attraverso l’aggiunta di cibo, la modellazione della colonia di formiche sotto forma di collezione di oggetti e la gestione del loro comportamento ed evoluzione (es. spostamento, nutrimento, trasporto), nonché l’aggiunta di una regina. Il progetto così completato si ripropone, attraverso l’analisi e la rappresentazione grafica dell’evoluzione di una colonia, capace di interagire con l’ambiente circostante e ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) con le fonti di alimentazione e sviluppare comportamenti complessi, di focalizzare le potenzialità di JAVA quale di linguaggio di programmazione evolutiva, utile di fatto in contesti modellistica avanzati. Controllo di eventi dinamici Definizione e gestione degli eventi (Java Delegated Events), creazione di Threads e loro utilizzo nella implementazione di interfacce grafiche. Analisi dei metodi propri della interfaccia WindowListener e delegated event handling nella gestione delle interazioni con la GUI. Esempi di implementazione funzionali a chiarire le ragioni e le peculiarità della programmazione basata su Threads: caso della classe Timer per il monitoraggio di eventi ad intervalli regolari. Caso studio B: ulteriore specializzazione della GUI (Graphical User Interface), funzionale alla visualizzazione sia di cartografia vettoriale che raster ed implementazione di event listeners per mantenere traccia del ridimensionamento delle finestre e gestire operazioni elementari di interrogazione spaziale tramite mouse. Integrazione del modello complessivo con informazioni testuali di documentazione (metadata), implementazione degli algoritmi di trasformazione spaziale da coordinate geografiche a schermo e gestione dell’output vettoriale ad elevata qualità, mediante l’utilizzo delle classi JAVA2D. Gestione degli Streams, dei Files e degli errori Streams di input e di output, standard input da tastiera, catching exceptions, apertura, lettura, scrittura e chiusura di files, interazione con il file system dall’interfaccia grafica, analisi di stringhe e object serialization. Caso studio B: integrazione della gestione file nell’applicazione spaziale, importazione di files testuali, serializzazione degli oggetti spaziali ed estensione della GUI. In questa sede vengono descritti e supportati due formati ASCII, il raster GRID di ArcInfo ed il vettoriale generico di GRASS, e vengono rese serializzabili e deserializzabili entrambi le classi vettoriali e raster, implementate nell’ambito del progetto. Comunicazione in ambiente distribuito Web JAVA Applets, fondamenti di HTML (HyperText Markup Language), integrazione di Applets all’interno di pagine Web, passaggio di parametri, sicurezza e restrizioni proprie dei Browser. Sviluppo di un caso studio finalizzato alla creazione di un applet cartografico, con funzionalità elementari di interrogazione ed inserito (embedded) nel codice HTML. Fondamenti di XML (Extensible Markup Language), settaggio di JAVA per la gestione del XML, Document Object Model (DOM). Casi studio di conversione delle due applicazioni sviluppate nel corso del progetto all’ambiente Web, evidenziando le peculiarità Esecuzione della applicazione nel visualizzatore Applet di BlueJ (Composite Landsat 147 – valle del Guadalentin) Progetto didattico Il corso si inquadra nel contesto di un più ampio progetto di formazione nel settore GIS. Avvalendosi di una docenza di alto profilo, certificata da titoli universitari di specializzazione post-laurea e curriculum accademici e professionali consolidati nel settore della GIScience, il progetto affronta tematiche introduttive nel corso “Introduzione ai GIS: Dai principi e tecniche fondamentali alla filosofia di sviluppo di applicazioni reali di gestione, visualizzazione ed analisi spaziale” e nel seminario “Business Geographics & Geodemographics” , ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) e tematiche più specialistiche, focalizzate sulla personalizzazione di ambienti GIS e sulla progettazione/implementazione di applicazioni GIS nell’ambito dei due corsi “Progettazione e sviluppo di applicazioni software GIS - Ingegneria software, modelli OO e a componenti, sintassi e costrutti di programmazione in VBA/ArcObjects per ArcGIS 8.x/9” e “Programmazione OO in JAVA per l’implementazione di soluzioni GIS”. I nuovi corsi specialistici “La gestione di progetti ambientali: Aspetti legislativi, tecnici, organizzativi e comunicativi” e “Applicazione della modellistica numerica di flusso e trasporto delle acque sotterranee: Gestione delle risorse idriche a scala regionale e nell’analisi e progettazione di interventi di protezione e recupero ambientale a scala locale” estendono poi l’area di interesse del progetto al settore ambientale, che ad oggi conosce in Italia un forte impulso di crescita e pone domande di formazione e di specializzazione sempre più forti Tali iniziative si candidano a pieno diritto come estensione ed integrazione del progetto, con risvolti propri della GIScience focalizzati sulla implementazione di EISs (Environmental Information Systems) e sull’analisi di temi specialistici quali l’analisi geostatistica, la modellazione numerica e le tecniche afferenti alla disciplina della ESDA (Exploratory Spatial Data Analysis), incluse le tecniche di analisi statistica spaziale e la visualizzazione 3D e tempo-dipendente. Disegnando un percorso articolato e coerente, in linea con i principi ispiratori della formazione universitaria post-laurea del mondo anglosassone ed in particolare delle modalità di formazione part-time e a distanza (distance learning) e, non meno importante, sulla scia dell’esperienza maturata nel corso delle tre precedenti edizioni 2003-2005 del progetto, la formula didattica è quella di una alternanza di formazione breve ed intensiva, in aula, a periodi di studio in autonomia, facilitando da un lato l’accesso al corso e garantendo dall’altro i tempi necessari ad un effettivo apprendimento. Software utilizzati Suite di Office Automation MsOffice™, RDBMS MsAccess™ (www.microsoft.com), linguaggio di programmazione JAVA™ (http://java.sun.com) ed ambiente di sviluppo JBlue™ (www.jblue.org). Sia l’interprete JAVA che l’ambiente di sviluppo JBlue sono accessibili gratuitamente e sono pertanto scaricabili ed utilizzabili dagli iscritti al corso. A chi è indirizzato Il corso è indirizzato a laureati e laureandi, funzionari, responsabili e dirigenti di enti pubblici e di società private, specialisti nello sviluppo di applicazioni di gestione, analisi e modellazione di dati spaziali, il corso coinvolge i domini professionali più disparati, tra i quali quello urbanistico/architettonico, della pianificazione territoriale e geologico/ambientale sono solo alcuni degli esempi più rilevanti. E’ richiesta una conoscenza consolidata dell’ambiente PC/MsOffice , una conoscenza di base delle problematiche GIS ed uno spiccato interesse personale per lo sviluppo di applicazioni; non è richiesta alcuna conoscenza pregressa di programmazione, pur essendo utili esperienze con linguaggi procedurali tradizionali. La conoscenza ed esperienza applicativa su piattaforme GIS mature, quali la suite ESRI ArcView 3.x e/o ArcGIS 8.x/9, Geomedia, Grass o Idrisi, possono aiutare nell’analisi degli algoritmi e nello sviluppo delle applicazioni, ma non rappresenta un prerequisito richiesto. Si richiede invece un genuino interesse per i contenuti del corso ed una disponibilità ed impegno personale ad approfondirne e consolidarne gli obiettivi. Il corso offre in tal senso una forte vocazione didattica, supportata da un testo di assoluta rilevanza tecnica e scientifica e, non meno importante, una formula organizzativa che si ripropone l’obiettivo di garantire i tempi necessari ad un effettivo processo di apprendimento. ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) Sede e date Il corso si terrà presso il Centro Multimediale del Comune di Monte Porzio (PU), dotato di 12 postazioni informatiche. Il corso avrà la durata di 56 ore, con lezioni di 8 ore concentrate il Venerdì ed il Sabato, secondo un calendario che tenderà a perseguire una formula equilibrata tra esigenza di continuità didattica e necessità di approfondimento e consolidamento delle conoscenze acquisite. Il corso si svolgerà nel periodo Maggio – Ottobre, con cadenza mensile e con una interruzione per il periodo estivo, garantendo il tempo sufficiente ad un effettivo apprendimento della filosofia OO e del linguaggio di programmazione. Il calendario dettagliato è: 5-6/5, 23-24/6, 22-23/9 e 7/10. Iscrizione e modalità di pagamento I moduli di iscrizione sono disponibili presso la Segreteria dell’Associazione, possono essere scaricati in formato PDF dal sito web www.giscience.it e possono essere richiesti via Email agli indirizzi [email protected] o [email protected] . Il costo totale del corso è di 1200 + IVA, da versarsi in una unica soluzione al momento dell’iscrizione, o in alternativa di 1300 + IVA, da versarsi in due rate di 650 + IVA ciascuna, la prima al momento dell’iscrizione e la seconda a metà del corso. I partecipanti a precedenti corsi promossi dall’Associazione sulle tematiche attinenti i sistemi informativi territoriali, studenti iscritti regolarmente a corsi universitari, post-universitari e a dottorati di ricerca in Italia e all’estero, nonché istituzioni accademiche, studi associati, società ed amministrazioni pubbliche, che iscrivano più di una persona, godranno di uno sconto pari al 10%. I pagamenti potranno essere effettuati tramite bonifico (commissioni bancarie escluse) sul conto corrente bancario n. 000020111416 presso BANCA SUASA – Credito Cooperativo, Filiale di Castelvecchio, Strada Cesanense, 137 – 61040 Castelvecchio (PU). Intestato a “Associazione Monte Porzio Cultura”, ABI 08839, CAB 68451, CIN J, specificando la causale [Programmazione Orientata ad Oggetti in JAVA per lo sviluppo di applicazioni GIS] ed indicando l’eventuale sussistere delle condizioni per l’applicazione della riduzione del 10% sul costo complessivo. Il modulo, debitamente compilato, assieme alla copia del bonifico, va inoltrato via fax all’attenzione del Presidente dell’Associazione, Ing. D. Guanciarossa, al numero 0721- 862724. Il corso verrà attivato solo al raggiungimento del numero minimo di 5 partecipanti; non saranno comunque ammesse più di 10 persone. Attestato di frequenza Al termine del corso verrà rilasciato un Attestato di Frequenza per ciascun partecipante che avrà frequentato almeno il 70% delle lezioni. Materiale didattico e riferimenti bibliografici Il corso adotta e fornisce ai partecipanti un volume, che costituisce un contributo specialistico unico nel panorama dello sviluppo di applicazioni spaziali: Wood J., 2002. JAVA programming for spatial sciences. Taylor & Francis, London, UK. Esiste peraltro una ricca letteratura sulla programmazione in JAVA e molti testi, di grande valore tecnico/scientifico e didattico, contribuiscono in modo determinante nel rendere più agevole la curva di apprendimento del linguaggio e nel supportare il programmatore anche sugli aspetti più avanzati del linguaggio. ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione Associazione Monte Porzio Cultura in collaborazione con Comune di Monte Porzio (PU) Pertanto, al di là della prima tappa obbligata del sito Sun dedicato alla rete di sviluppatori JAVA (http://java.sun.com/), vogliamo indicare qui di seguito due volumi di grande utilità nel contesto di questo corso: Eckel B., 2002. Thinking in Java. Prentice-Hall, 3rd Edition, Scaricabile in forma di E-Book dal sito: http://www.mindview.net/Books/TIJ/ Barnes D.J. e Kolling M., 2003. Programmare in JAVA con BLUEJ: Introduzione alla programmazione a oggetti. Addison-Wesley. Pearson Education Italia S.r.l., Milano I partecipanti potranno peraltro trarre grande beneficio da molti altri testi classici dedicati alla programmazione procedurale o orientata ad oggetti. Per quanto riguarda la piattaforma ESRI ArcGIS 8/9, citiamo qui di seguito i due testi fondamentali: Ormsby T., Napoleon E., Burke R., Groessl C. e Feaster L., 2001. Getting to know ArcGIS desktop: basics of ArcView, ArcEditor and ArcInfo. ESRI Press (include CDROM con una copia trial a tempo valida per 180 giorni di ArcGIS) Burke R., 2003. Getting to know ArcObjects – ProgrammingArcGIS with VBA. ESRI Press, Redlands, California (include CDROM con la raccolta completa dei modelli di ArcObjects, dati e risultati degli esercizi) Informazioni Per informazioni dettagliate sul programma del corso e sulla docenza, rivolgersi al Presidente dell’Associazione, Ing. David Guanciarossa, all’indirizzo Email [email protected] o [email protected] o fare riferimento alla sezione [Contatti] del sito Web www.giscience.it . ____________________________________________________________________________________________ Questo documento è coperto da copyright. E’ vietata la riproduzione totale o parziale senza esplicita autorizzazione