Corso di specializzazione Programmazione Orientata

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