Introduzione a OOP e Java Introduzione a OOP e Java Sommario

Introduzione a OOP e Java
Introduzione a OOP e Java
[email protected]
Claudio Mirolo
Cristian Del Fabbro
www.dimi.uniud.it/claudio/teaching/prog_oo
Mauro
www.dimi.uniud.it/claudio/
teaching/programmazione
Lorenzutti
Dipartimento di Matematica e Informatica
dell'Università di Udine
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
www.dimi.uniud.it/nid/
Diapositiva 1
Università di Udine
Dipartimento di Matem atica e Informatica
Sommario
Diapositiva 2
Settembre 2005,
Diapositiva 4
Sommario
Impostazione del corso
Impostazione del corso
Didattica della programmazione
Didattica della programmazione
Brevissima cronologia storica
Brevissima cronologia storica
Riferimenti bibliografici
Riferimenti bibliografici
Al lavoro...
Al lavoro...
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Settembre 2005,
Diapositiva 3
Università di Udine
Dipartimento di Matem atica e Informatica
Impostazione del corso
Astrazione
Approccio didattico
Programmazione orientata agli oggetti
ruolo centrale dell'astrazione
strumenti linguistici
per rappresentare operativamente
discussione a partire da esempi
forme raffinate di astrazione
scelta dei primi strumenti di sviluppo
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 5
Università di Udine
Dipartimento di Matematica e Informatica
Astrazione
Settembre 2005,
Diapositiva 6
Astrazione
Astrazione procedurale
Astrazione sui tipi
astrazione sul processo computazionale
eredità
concetto chiave: funzione
relazioni fra modelli correlati
condivisione di protocollo e codice
Astrazione sui dati
rilievo del protocollo
oggetti immutabili
Astrazione relativa agli schemi di elaborazione
polimorfismo
modularizzazione
Astrazione relativa allo stato
incapsulamento
oggetti che evolvono (OOP)
Università di Udine
Dipartimento di Matematica e Informatica
condivisione del codice ad alto livello
Settembre 2005,
Diapositiva 7
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 8
Sommario
Astrazione e apprendimento
Basi della programmazione per:
Impostazione del corso
1. comprendere operativamente
un modello computazionale
Didattica della programmazione
Brevissima cronologia storica
2. comprendere e progettare
strategie risolutive (algoritmi)
Riferimenti bibliografici
3. comprendere e modellare sistemi
in termini di componenti interagenti
Al lavoro...
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 9
Astrazione e apprendimento
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 10
Astrazione e apprendimento
Didatticamente
le capacità di astrazione sono un nodo centrale
Uno studente debole tende a concentrare gli sforzi
per capire il modello computazionale (obiettivo 1)
e rischia di fermarsi a quel punto
Gli obiettivi (1), (2) e (3) sono diversi e
presuppongono diverse capacità di astrazione
[ 2, 3 > 1 ]
Le sue spiegazioni procedono bottom-up
e si perdono nei dettagli...
Gli strumenti OOP non sono i più adatti
al fine di perseguire l'obiettivo (1)
...mentre l'utilizzo di strumenti OO
presume necessariamente un approccio top-down
e la capacità di prescindere dai dettagli
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 11
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 12
Didattica della programmazione
Diversi punti di vista su quali siano i primi passi
nell'insegnamento della programmazione
(dell'informatica?)
Le impostazioni generali che ne conseguono
riflettono le diverse priorità associate a (1), (2) e (3)
Didattica della programmazione
Impostazioni generali (ACM/IEEE 2001)
imperative first
hardware first
functional first
algorithms first
object first
altri
(p. es. logic programming)
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 13
Università di Udine
Dipartimento di Matematica e Informatica
Sommario
Diapositiva 14
Un po' di cronologia: OOP
Impostazione del corso
Didattica della programmazione
Brevissima cronologia storica
anni '60
Simula
anni '70
Smalltalk consapevolezza della potenza
e generalità dell'approccio OOP
anni '80
Estensioni OO di vari linguaggi
(C, Pascal, Lisp, ...)
1988
Eiffel
(Meyer)
1991
Oak
(Gosling) Java in embrione
1994
C++
(Stroustrup)
Riferimenti bibliografici
Al lavoro...
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Settembre 2005,
Diapositiva 15
Università di Udine
Dipartimento di Matematica e Informatica
introduzione principali concetti
Settembre 2005,
Diapositiva 16
Cronologia e non solo: Java
1991
Cronologia e non solo: Java
Oak: linguaggio per dispositivi domestici
collegati alla rete telefonica (Sun)
conseguenze:
- linguaggio semplice e compatto
punti importanti:
- eliminazione di costrutti
che sono frequenti cause di errori
dimensioni (piccoli processori)
- perfezionamento del meccanismo
di gestione delle eccezioni
stabilità e affidabilità
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 17
Cronologia e non solo: Java
metà '90
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 18
Cronologia e non solo: Java
WWW: obiettivi del progetto Java
da programmazione di elettrodomestici
a programmazione in rete
fine '90
Java cresce ed evolve come linguaggio
di programmazione general purpose
+ client-side computing (applet)
+ server-side computing (servlet)
punti importanti:
sicurezza
anni '00
indipendenza dalla piattaforma
Java diventa uno degli strumenti di
programmazione più ricchi e potenti
valido didatticamente e professionalmente
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 19
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 20
Sintesi caratteristiche di Java
semplicità
semplicità del modello, pulizia semantica,
senza variabili globali, senza goto,
senza puntatori espliciti
OO
intrinsecamente OO: classe = unità base
per organizzare dati e computazioni
Sintesi caratteristiche di Java
robustezza necessità di gestire le eccezioni,
abbandono si costrutti che causano errori
sicurezza
controllo forte dei tipi, verifica bytecode,
regolamentazione accessi al file system
e connessioni con altre macchine
WWW / JVM
multithreading (p.es. gestione eventi)
portabilità
dinamicità
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 21
Università di Udine
Dipartimento di Matematica e Informatica
Sommario
Settembre 2005,
Diapositiva 22
Riferimenti bibliografici
Impostazione del corso
J. Lewis, W. Loftus
Java
Didattica della programmazione
Fondamenti di progettazione software
Addison-Wesley, 2000 (Ed. italiana 2001)
Brevissima cronologia storica
D. Arnow, G. Weiss
Riferimenti bibliografici
Introduction to Programming Using Java:
Al lavoro...
An Object-Oriented Approach
Addison-Wesley, 1998
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 23
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 24
Riferimenti bibliografici
Riferimenti bibliografici
B. Liskov, J. Guttag
D.J. Barnes, M. Kölling
Programmare in BlueJ
Introduzione alla programmazione a oggetti
Addison-Wesley, 2003 (Ed. italiana)
Program Development in Java
Addison-Wesley, 2000
T. Budd
J. Graba
Introduction to Network Programming with Java
Addison-Wesley, 2004
Understanding Object-Oriented Programming with Java
Addison-Wesley, 2000
T. Budd
B. Eckel
Thinking in Java
Prentice Hall, 2000 (Ed. italiana APOGEO)
Introduction to Object-Oriented Programming
Addison-Wesley, 2002
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 25
Università di Udine
Dipartimento di Matematica e Informatica
Riferimenti bibliografici
Settembre 2005,
Diapositiva 26
Settembre 2005,
Diapositiva 28
Sommario
Impostazione del corso
X. Jia
Object Oriented Software Development Using Java
Didattica della programmazione
Addison-Wesley, 2002
Brevissima cronologia storica
P. Kuchana
Software Architecture Design Patterns in Java
Riferimenti bibliografici
Auerbach Publications, 2004
Al lavoro...
Università di Udine
Dipartimento di Matematica e Informatica
Settembre 2005,
Diapositiva 27
Università di Udine
Dipartimento di Matematica e Informatica