Insegnamento PROGRAMMAZIONE ORIENTATA AGLI OGGETTI CON LABORATORIO
Nome del corso | Informatica |
---|---|
Codice insegnamento | A002059 |
Curriculum | Comune a tutti i curricula |
Docente responsabile | Stefano Marcugini |
Docenti |
|
Ore |
|
CFU | 9 |
Regolamento | Coorte 2023 |
Erogato | Erogato nel 2023/24 |
Erogato altro regolamento | |
Attività | Caratterizzante |
Ambito | Discipline informatiche |
Settore | INF/01 |
Tipo insegnamento | Obbligatorio (Required) |
Tipo attività | Attività formativa monodisciplinare |
Lingua insegnamento | ITALIANO |
Contenuti | PROGRAMMAZIONE AD OGGETTI Modello degli oggetti per riferimento; Incapsulamento; Ereditarietà; Polimorfismo. INTRODUZIONE AL LINGUAGGIO JAVA Istruzioni strutturate; Array; Classi e metodi; Programmi stand-alone; Applet; Librerie Java; Eccezioni; Multithreading; Input ed Output; Istruzioni, espressioni, operazioni; Programmazione orientata agli eventi. Socket; Applicazioni client-server. ESEMPI DI ALGORITMI Ricorsione |
Testi di riferimento | Libri di testo: Concetti di informatica e fondamenti di Java settima edizione per Java 8, 9, 10 e 11 di Cay Horstmann Maggioli Editore Core Java 2 vol.2 di Cay S. Horstmann, Gary Cornell - Pearson - 2005 Di questo libro tratteremo solo due capitoli: Multithreading e Programmazione di rete; Altri libri che possono essere consultati: Java 2 Guida completa - L.Lemay, C.L. Perkins, Edizioni Sams net Java 2 i fondamenti - Cay S. Horstmann e Gary Cornell - Mc Graw Hill 2005; in Inglese: Core Java Volume I--Fundamentals, 9th Edition, Cay S. Horstman, Prentice Hall. Part of the Pearson Custom Library: Computer Science series. Core Java, Volume II--Advanced Features, 9th Edition, Cay S. Horstman, Prentice Hall. Part of the Pearson Custom Library: Computer Science series. Tutti i testi sono disponibili in Biblioteca. |
Obiettivi formativi | Comprensione dei concetti riguardanti la programmazione orientata agli oggetti ed agli eventi. Capacità di realizzare applicazioni. Capacità di comparare più soluzioni possibili per poter scegliere la migliore. Capacità di applicare schemi di soluzione classici a nuovi problemi. Capacità di progettare la gerarchia di oggetti adatta al problema specifico. Capacità di realizzare programmi con interfacce di tipo professionale. |
Prerequisiti | E' utile aver sostenuto l'esame di Programmazione procedurale. In particolare è importante avere familiarità con i seguenti concetti: puntatori, gestione dinamica della memoria, algoritmi elementari. |
Metodi didattici | lezioni frontali, esercitazioni al calcolatore. |
Altre informazioni | Sito del Corso: www.unistudium.unipg.it Calendario esami: consultare il sito www.informatica.unipg.it |
Modalità di verifica dell'apprendimento | Prova scritta e prova orale. Sono previste prove in itinere esoneranti per lo lo scritto finale. La prova scritta prevede la soluzione di tre esercizi a stimolo chiuso e risposta aperta ed è finalizzata a verificare la capacità di applicare correttamente le conoscenza teoriche e la capacità di comprensione delle problematiche proposte. Il tempo di svolgimento previsto è di tre ore. La prova orale consiste in una discussione della durata di circa 30 minuti finalizzata a accertare il livello di conoscenza e di comprensione sui contenuti teorici del corso raggiunto dallo studente. Inoltre la prova orale consentirà di verificare la capacità di comunicazione dello studente con proprietà di linguaggio ed organizzazione autonoma dell'esposizione. Su richiesta dello studente l'esame può essere sostenuto anche in lingua Inglese. Per informazioni sui servizi di supporto agli studenti con disabilità e/o DSA visita la pagina http://www.unipg.it/disabilita-e-dsa |
Programma esteso | Compilazione ed interpretazione. PROGRAMMAZIONE ORIENTATA AGLI OGGETTI Modello di oggetti per riferimento. Ereditarietà Incapsulazione. Polimorfismo dati. Typecasting. Polimorfismo metodi. Eary e late binding. Sovraccarico (overloading) e riscrittura metodi. Costruttori. Classi astratte INTRODUZIONE AL LINGUAGGIO JAVA Tipi di dato. Espressioni, Istruzioni Istruzioni semplici blocco Istruzioni condizionali if switch ? : Istruzioni iterative while for do while Istruzioni di interruzione return break continue Array. Classi e metodi; Librerie Java; Modificatore final e costanti. Metodi e campi statici. Ricorsione Gestione memoria in ricorsione. Ricorsione di coda. Parametri main. Garbage collection e finalizzazione. Programmazione orientata agli eventi. Eventi mouse e tastiera Listener e Adattatori Realizzazione applicazioni grafiche Metodi di disegno. Font e Colori. Componenti grafici principali: etichette, bottoni, campi di testo. Evento azione. Disposizione componenti. Classe JDialog, Menu Eccezioni, definizione e gestione eccezioni definite dall'utente. Flussi di input e flussi di output Thread e multithreading Scheduling thread. Gruppi di thread. Sincronizzazione thread. Applicazioni client-server Produzione di documentazione Javadoc. ESEMPI DI ALGORITMI Introduzione complessità Ricerca binaria ricorsiva e iterativa e loro complessità. Complessità Fibonacci esponenziale Fibonacci lineare. Liste concatenate Algoritmi elementari su liste ed array ricerca conteggio somma elementi media massimo e minimo Pile e code. Algoritmi di ordinamento Bubblesort e sua complesstità Quicksort ricorsivo e sua complessità Quiksort non ricorsivo. Torri di Hanoi. NOTA In particolare i seguenti argomenti sono descritti nei testi indicati che sono reperibili in biblioteca: Passaggio dei parametri Java1 I fondamenti C. S. Horstmann - G. Cornell cap 4 (Parametri dei metodi) Thread Java2 Tecniche avanzate C. S. Horstmann - G. Cornell cap 1 (fino a sincronizzazione inclusa) Programmazione in rete Java2 Tecniche avanzate C. S. Horstmann - G. Cornell cap 3 (Connessione a Server, Implementazione server, Programmazione avanzata dei socket) |