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