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