Tecnologie dei Linguaggi di Programmazione

Tecnologie dei
Linguaggi di Programmazione
a.a. 2013/2014
Romina Eramo
[email protected]
http://www.di.univaq.it/romina.eramo/tlp
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Goal
•  Object Oriented Programming (OOP)
–  Conoscere il paradigma di programmazione orientato agli
oggetti (OO)
•  JAVA
–  Conoscere il linguaggio di programmazione JAVA che
implementa tale paradigma
–  Acquisire esperienza con JAVA e alcuni design patterns
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Calendar
from
26/02/2014
day
mercoledì
day
to
14/06/2014
start time
end time
14:00
start time
venerdì
14:00
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
16:00
end time
16:00
location
type
A 1.6
location
lecture
type
A 1.1
lecture
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Web
web site del corso
www.di.univaq.it/romina.eramo/tlp
news
https://twitter.com/EramoTLP
codice
http://tlp.googlecode.com
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Ricevimento
[email protected]
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Cosa tratta questo corso?
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Cosa NON tratta questo corso
• 
• 
• 
• 
Corso di programmazione Java
Corso di sintassi Java
Corso di Java Base/Avanzato
Corso su ambienti di sviluppo Java
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Cosa tratta questo corso
–  Conoscere la metodologia OO
–  Imparare come scrivere codice OO
–  Andare oltre lo specifico linguaggio
–  Acquisire la capacità di sviluppare
codice in qualsiasi linguaggio OO
Thinking in
Java
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
Thinking in OO
–  Imparare Java
–  Sviluppare in modo avanzato
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Perché paradigmi diversi?
•  Esistono numerose metodologie per lo
sviluppo di software
–  studiate in ingegneria del software
–  la scelta dipende dalle applicazioni
•  La scelta opportuna di un linguaggio di
programmazione può favorire l’adozione di una
metodologia e facilitare la soluzione di un
problema
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Linguaggi ad oggetti
•  I linguaggi di programmazione ad oggetti
consentono di applicare metodologie di
sviluppo di programmi “object oriented”, ossia
basate su oggetti che il sistema software
manipola
•  Questa metodologia si contrappone a quella
più tradizionale di sviluppare un programma
secondo un approccio funzionale
(programmazione strutturata)
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
L'attività del programmatore
…è come quella di un
ingegnere
che costruisce un
ponte.
La cosa più importante è che il ponte non crolli, ovvero
che il programma funzioni.
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Garanzie?
La programmazione a oggetti permette di costruire ponti
che non crollano?
Qualsiasi tecnica di
costruzione
programmi usiamo,
non ci garantisce il
successo del
programma.
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Risultato
Il successo del programma è dovuto solo all'abilità
del programmatore.
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Allora a cosa serve l’OO?
•  Fornisce un supporto naturale alla
modellazione software degli oggetti del
mondo reale o del modello astratto da
riprodurre
•  Permette una più facile gestione e
manutenzione di progetti di grandi dimensioni
•  Favorisce la modularità e il riuso di codice
attraverso l'organizzazione del codice sotto
forma di classi
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Vantaggi?
Bene, se siamo
riusciti a costruire
un programma
funzionante in
qualche modo,
come seconda cosa
importante,
vorremmo che il
programma sia di
facile
manutenzione
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Vantaggi?
Infine vorremmo
poterlo usare per
costruire “altri ponti
che non cadono”.
Riuso.
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Vantaggi.
•  La programmazione a oggetti spezza il programma in tanti
oggetti indipendenti facilitando operazioni di manutenzione e
riuso
•  Per tornare alla nostra metafora ingegneristica, ora stiamo
costruendo ponti con moduli prefabbricati in modo da rendere
più facile la costruzione di altri ponti simili
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Timeline
26 Feb
inizio lezioni
28 Feb
introduzione OOP
12 Mar
fondamenti Java
30 Apr
tecniche avanzate
28 Mag
design patterns
14 Giu
fine lezioni
Giu - Lug
esame J
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
metodologia
tecnologie di base
programmazione Java
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Overview
inizio lezioni
introduzione OOP
fondamenti Java
metodologia
•  Introduzione ai linguaggi di programmazione
•  Introduzione al paradigma di programmazione
Object- Oriented
•  Introduzione al linguaggio
tecnologie di base
tecniche avanzate
design patterns
programmazione Java
fine lezioni
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Overview
inizio lezioni
introduzione OOP
fondamenti Java
metodologia
tecnologie di base
tecniche avanzate
design patterns
programmazione Java
fine lezioni
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
•  Il primo programma Java
•  Tipi primitivi
•  Array
• •Strutture di controllo decisionali
•  Strutture di controllo iterative
•  I metodi
•  Le classi
•  Ereditarietà
•  Polimorfismo
•  Overriding
•  Binding dinamico
•  Classi astratte
• • Le interfacce e i package
•  Modificatori di accesso
•  Interfacce e classi annidate
• • Le classi standard
•  La classe “class”
•  La classe “Object”
•  Le stringhe
•  La classe “Vector”
•  Le classi involucro
•  Funzioni matematiche
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Overview
inizio lezioni
introduzione OOP
fondamenti Java
metodologia
tecnologie di base
tecniche avanzate
design patterns
programmazione Java
fine lezioni
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
•  La gestione delle eccezioni
•  I thread in Java
• •L’ambiente di esecuzione
• •La gestione dell’I/O
•  La classe File
•  Flussi di input e output
•  Design Patterns
• •Introduzione ai design patterns
• •Catalogo
• •Alcuni patterns
•  Creazione: Singletone,
Abstract Factory
•  Strutturali: Decorator
•  Comportamentali: Observer
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Modalità di esame
•  L’esame consiste in una prova scritta ed un progetto
da svolgersi in gruppi di al più 2 persone, con
relativa discussione orale
•  Come esercitazione gli studenti possono considerare
il materiale disponibile sul sito del corso
–  http://www.di.univaq.it/romina.eramo/tlp/esercizi.html
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
J2SE References
•  J2SE
–  http://www.oracle.com/technetwork/java/index.html
•  Java Language specification 2.0
–  http://docs.oracle.com/javase/specs/
•  Docs
–  http://www.oracle.com/technetwork/java/javase/
documentation/index.html
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
J2SE Books
•  Thinking in Java 4 ed. Volume 1
I fondamenti Autore: Bruce Eckel Casa Editrice: Pearson ISBN:
8871923030
•  Thinking in Java 4 ed. Volume 2
Tecniche avanzate Autore: Bruce Eckel Casa Editrice: Pearson
ISBN: 8871923049
•  Thinking in Java 4 ed. Volume 3
Concorrenza e interfacce grafiche Autore: Bruce Eckel Casa
Editrice: Pearson ISBN: 8871923057
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
Other Books
•  Java 2 Volume I e II – settima edizione
Cay S. Horstmann, Gary Cornell
Prentice Hall
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
J2SE Resources
Integrated Development Environment (IDE)
•  Free:
–  NetBeans (http://www.netbeans.org/)
–  Eclipse (http://www.eclipse.org/)
•  Commercial:
–  Intellij IDEA (http://www.jetbrains.com/idea/)
–  JBuilder (http://www.borland.com)
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche
C++ Resources
•  Books:
–  Introduzione a C++ per le scienze e l’ingegneria, di Derek
M. Capper, McGraw-Hill.
–  C++, terza edizione. Di Bjarne Stroustrup, Addison-Wesley.
•  IDEs:
–  Eclipse (http://www.eclipse.org/)
Romina Eramo
Tecnologie dei Linguaggi di Programmazione
DISIM - Dipartimento di Ingegneria e
Scienze dell’Informazione e Matematiche