Insegnamento PROGRAMMAZIONE II CON LABORATORIO

Nome del corso di laurea Informatica
Codice insegnamento GP004145
Sede PERUGIA
Curriculum Comune a tutti i curricula
Docente responsabile Stefano Marcugini
Docenti
  • Stefano Marcugini
Ore
  • 78 Ore - Stefano Marcugini
CFU 9
Regolamento Coorte 2017
Erogato Erogato nel 2017/18
Erogato altro regolamento
Attività Caratterizzante
Ambito Discipline informatiche
Settore INF/01
Periodo Secondo Semestre
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 Java "Dai fondamenti alla programmazione avanzata"
di Karsten Samaschke
edizioni Apogeo

Disponibili in biblioteca:
Java 1.2 - L.Lemay, C.L. Perkins, Edizioni Sams net
Java 2 i fondamenti - Cay S. Horstmann e Gary Cornell - Mc Graw Hill;
Java 2 tecniche avanzate - Cay S. Horstmann e Gary Cornell - Mc Graw Hill;

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.
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 I. 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 PROGRAMMAZIONE AD OGGETTI
Modello degli oggetti per riferimento;

Linguaggio Java
Compilazione ed interpretazione.

Programmazione ad oggetti in Java
Classi ed oggetti. Attributi e comportamento. Ereditarietà, interfacce e packages

Elementi del linguaggio
Commenti.Variabili. Tipi di dato. Valori costanti. Espressioni. Operatori, precedenza, associativita'. Operatori di assegnamento.
Tipi array. Istruzione semplici. Istruzione composta. Istruzioni condizionali o di selezione. Istruzioni iterative. Istruzioni di interruzione.

Manipolazione degli oggetti
Creazione di un oggetto. Modi per assegnare un valore ad un oggetto. Costanti.
Campi di classe. Metodi di classe. Confronto fra oggetti. Verifica della classe di appartenenza ed introspezione. La libreria delle classi. Incapsulazione. Polimorfismo sui dati. Casting (sui dati primitivi). Typecasting fra oggetti. Conversione fra tipi. Definizione di una classe. Definizione dei metodi.
La parola chiave this. Visibilità.
Passaggio dei parametri. Applicazioni Java. Argomenti della linea comandi.
Overloading di metodi (sovraccarico). Costruttori. Ridefinizione di metodi (overriding). Metodi finalizzatori. Chiamata dei metodi (polimorfismo).
Classi e metodi astratti. Finalizzazione (modificatore final).


Cenni di complessità computazionale

Ricorsione
Fattoriale. Definizioni ricorsive di funzioni. Numeri di Fibonacci.
Elevamento a potenza. Ricerca binaria. Ordinamento di un vettore: algoritmo quicksort. Implementazione non ricorsiva di quicksort. Il problema delle torri di Hanoi.

Applet
Struttura di un applet. Archivi. Parametri delle applet.


Grafica, font e colori
Disegno. Testo e font. Colori. Animazioni, immagini e suoni. Sfarfallio. Immagini. Doppio buffering.

Il modello degli eventi
Eventi del mouse e della tastiera.

Interfaccia AWT e Swing
Componenti di base: Label, Button, Check box, Radio button, Menù di scelta, Campi di testo, Pannelli. Disposizione dei componenti. Focus. Eventi associati ai componenti. Finestre: Frames, Dialoghi, File Dialog. Eventi delle finestre. Menu.
Applicazioni grafiche standalone.

Eccezioni
Protezione dalle eccezioni. Dichiarazione di metodi che possono sollevare eccezioni. Creazione e sollevamento di eccezioni

Flussi di input e di output
Classi astratte per l’input. Flussi concreti di input. Classi astratte di filtri. Classi concrete di filtri. Classe scanner. Classi astratte per l’output. Flussi concreti di output. Classi astratte di filtri. Classi concrete di filtri. File ad accesso casuale.

Multithreading
Creazione e uso di thread. Canali di comunicazione (pipe). Scheduling.
Gruppi di thread. Sincronizzazione. Il modificatore volatile.

Programmazione di rete
Indirizzi Internet. Connessioni tramite socket. Implementazione server.
Applicazioni client-server. Esempi di applicazioni con server che rispondono contemporaneamente a piu' client: Trivia e Chat.

Produzione di documentazione Javadoc.
Condividi su