PROGRAMMAZIONE II

Informatica PROGRAMMAZIONE II

0512100010
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2015/2016



OBBLIGATORIO
ANNO CORSO 2
ANNO ORDINAMENTO 2008
PRIMO SEMESTRE
CFUOREATTIVITÀ
756LEZIONE
330LABORATORIO


Obiettivi
- CONOSCENZA E CAPACITÀ DI COMPRENSIONE: ACQUISIZIONE DELLE COMPETENZE DI BASE PER LA PROGETTAZIONE OBJECT-ORIENTED ATTRAVERSO LA COMPRENSIONE DEI CONCETTI DI ASTRAZIONE SUI DATI, DI INCAPSULAMENTO DELL’INFORMAZIONE, DI COESIONE E ACCOPPIAMENTO, E DI RIUTILIZZO DEL CODICE. COMPRENDERE LE DIFFERENZE TRA QUESTO PARADIGMA E IL PARADIGMA PROCEDURALE. SINTASSI COMPLETA DEL LINGUAGGIO DI PROGRAMMAZIONE JAVA. UTILIZZO DEL LINGUAGGIO JAVA PER LA DEFINIZIONE DI CLASSI E PER LA PROMOZIONE DEL RIUTILIZZO DEL SOFTWARE. CONOSCENZA DELLE PRINCIPALI CLASSI MESSE A DISPOSIZIONE DALL’AMBIENTE JDK 7. CONOSCENZA DEI FONDAMENTI TEORICI DEL POLIMORFISMO E DEL MECCANISMO DELL’EREDITARIETÀ. CONOSCENZA E PADRONANZA DEI CONCETTI DI CLASSI ASTRATTE, INTERFACCE E DEL MECCANISMO DI GESTIONE DELLE ECCEZIONI. RUDIMENTI DI PROGRAMMAZIONE GRAFICA E AD EVENTI IN JAVA. REALIZZAZIONE E CONSULTAZIONE DI DOCUMENTAZIONE DI UN PROGRAMMA.

-CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: CAPACITÀ DI ANALISI DI PROBLEMI, DI SPECIFICA DEI REQUISITI E DI DEFINIZIONE DI UNA STRATEGIA RISOLUTIVA CON UN APPROCCIO ORIENTATO AGLI OGGETTI, CON LA SUA IMPLEMENTAZIONE NEL LINGUAGGIO JAVA, GARANTENDO IL GIUSTO EQUILIBRIO TRA QUALITÀ ED EFFICIENZA DEL SOFTWARE. SVILUPPO DI PROGETTI CON ATTIVITÀ INDIVIDUALI E DI GRUPPO.

-AUTONOMIA DI GIUDIZIO: DISCUSSIONE DEI PRO E I CONTRO DELLE TECNICHE E SOLUZIONI STUDIATE. ANALISI CRITICA DEI LAVORI PROGETTUALI.

-ABILITÀ COMUNICATIVE: PARTECIPAZIONE ALLA FORMULAZIONE DELLE STRATEGIE RISOLUTIVE RISPETTO AI PROBLEMI PROPOSTI. PRESENTAZIONE E DISCUSSIONE DELLE SOLUZIONI INDIVIDUATE.

-CAPACITÀ DI APPRENDERE: CONSULTAZIONE INDIVIDUALE DELLA DOCUMENTAZIONE DELLE LIBRERIE JAVA. RICERCA DI CLASSI ESISTENTI E INDIVIDUAZIONE DI NUOVI METODI PER LA SOLUZIONE DEI PROBLEMI PROPOSTI.
Prerequisiti
LO STUDENTE DOVREBBE AVERE UNA BUONA CONOSCENZA DEL LINGUAGGIO C, DELLE TECNICHE DI PROGRAMMAZIONE PROCEDURALE E DELLE PROBLEMATICHE RELATIVE ALLA CODIFICA IN CODICE DI ALGORITMI SEMPLICI. CONOSCENZE DI BASE E DISCRETA FAMILIARITÀ CON UN SISTEMA OPERATIVO (WINDOWS, LINUX,...).
Contenuti
INTRODUZIONE ALLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI E AI CONCETTI DI ASTRAZIONE DEI DATI E DI INCAPSULAMENTO. INTRODUZIONE A JAVA E AL PROCESSO DI COMPILAZIONE. INTRODUZIONE AL TOOLKIT DI PROGRAMMAZIONE JDK 5.0. OGGETTI, VARIABILI, RIFERIMENTI; CLASSI E METODI, COMUNICAZIONE FRA OGGETTI, PARAMETRI ESPLICITI E IMPLICITI; IL RIFERIMENTO THIS.

TIPI DI DATI FONDAMENTALI. ARITMETICA E FUNZIONI MATEMATICHE. INVOCAZIONE DI METODI STATICI. LA CLASSE STRING;L'INPUT DA FINESTRA DI DIALOGO. IMPARARE AD ACQUISIRE DATI IN INGRESSO DA CONSOLE; CONOSCERE IL TIPO DI DATI CHAR; L’INPUT DA FILE. FILE E FLUSSI. LEGGERE E SCRIVERE FILE DI TESTO; FORMATO BINARIO E FORMATO DI TESTO.

UTILIZZO DEGLI ARRAY IN JAVA. RICHIAMI SUI COSTRUTTI DI CONTROLLO. LE COLLEZIONI IN JAVA: ACQUISIRE DIMESTICHEZZA CON L’USO DI VETTORI (ARRAY LISTS) COME RACCOGLITORI DI OGGETTI; COMPRENDERE QUANDO È IL CASO DI USARE VETTORI E QUANDO ARRAY NEI NOSTRI PROGRAMMI; LE CLASSI INVOLUCRO. CENNI SUI TIPI GENERICI, SUI TIPI ENUMERATIVI E SUI MECCANISMI DI ‘AUTOBOXING’ E ‘UNBOXING’.

PROGETTAZIONE DI CLASSI. IMPARARE A SCEGLIERE LE CLASSI APPROPRIATE DA IMPLEMENTARE COMPRENDERE I CONCETTI DI COESIONE E ACCOPPIAMENTO;MINIMIZZARE L’USO DEGLI EFFETTI COLLATERALI COMPRENDERE LA DIFFERENZA TRA METODI DI ISTANZA E METODI STATICI; COMPRENDERE LE REGOLE DI PORTATA DELLE VARIABILI LOCALI E DELLE VARIABILI ISTANZA; CHIAMATA PER VALORE E CHIAMATA PER RIFERIMENTO; DOCUMENTARE LE RESPONSABILITÀ DEI METODI E DEI LORO CHIAMANTI CON PRECONDIZIONI E POSTCONDIZIONI. CENNI SULL’USO DELLE SCHEDE CRC NELLA PROGETTAZIONE DELLE CLASSI. PACCHETTI.

INTERFACCE E POLIMORFISMO. IMPARARE COSA SONO LE INTERFACCE; ESSERE IN GRADO DI CONVERTIRE TRA RIFERIMENTI A CLASSE E A INTERFACCE; COMPRENDERE IL CONCETTO DI POLIMORFISMO; APPREZZARE COME LE INTERFACCE POSSANO ESSERE USATE PER RIDURRE L’ACCOPPIAMENTO TRA LE CLASSI; LE CLASSI INTERNE.

EREDITARIETÀ E RIUSO. COMPRENDERE LA RELAZIONE DI EREDITARIETÀ TRA CLASSI; LA RISCRITTURA DI METODI; LA RIDEFINIZIONE DI CAMPI; LA CONVERSIONE DI TIPO TRA SOTTOCLASSE E SUPERCLASSE. IL POLIMORFISMO E IL BINDING DINAMICO; LE CLASSI ASTRATTE; IL CONTROLLO DI ACCESSO; LA SUPERCLASSE UNIVERSALE OBJECT.

MECCANISMO DI GESTIONE DELLE ECCEZIONI. IMPARARE COSA SONO LE ECCEZIONI CONTROLLATE E NON CONTROLLATE; IL CICLO TRY-CATCH-FINALLY; PROGETTARE LE ECCEZIONI.

TESTING: VERIFICA DEL COMPORTAMENTO DEGLI OGGETTI; SCELTA DEI CASI DI TEST;. INTEGRAZIONE DI CLASSI.

PROGRAMMAZIONE GRAFICA E APPLET. INTRODUZIONE ALLE APPLET E ALLA PROGRAMMAZIONE GRAFICA: GESTIONE DELLE FORME, DEI FONT E DEI COLORI; UTILIZZO DI COMPONENTI PER L’INPUT; PRIMITIVE PER LA GESTIONE DEL CONTESTO GRAFICO; PERSONALIZZAZIONE DEI PANNELLI, GESTIONE DEL LAYOUT, GESTIONE DEI PRINCIPALI COMPONENTI SWING. PROGRAMMARE AD EVENTI: COMPRENDERE IL MODELLO A EVENTI DI JAVA; INSTALLARE (O REGISTRARE) LISTENER DI MOUSE O DI AZIONI. CENNI SUL PARADIGMA MODEL-VIEW-CONTROLLER PER LO SVILUPPO DI INTERFACCE GRAFICHE.
Metodi Didattici
LA PARTE TEORICA DEL CORSO VIENE SVILUPPATA CON LEZIONI FRONTALI IN AULA. GLI ARGOMENTI IN PROGRAMMA VENGONO PRESENTATI CON L'AUSILIO DI PRESENTAZIONI POWERPOINT O ANALOGO, E SU OGNI CONCETTO VIENE AVVIATA UNA DISCUSSIONE CRITICA CON LA CLASSE E OVE APPROPRIATO SI EFFETTUANO CONFRONTI CON SOLUZIONI ALTERNATIVE. LA PARTE PRATICA VIENE SVOLTA IN LABORATORIO CON SPERIMENTAZIONE DIRETTA SU PC DELLE TECNICHE E DEI CONCETTI PRESENTATI NELLA PARTE TEORICA. LA FORMULA SEGUITA CONSISTE NELL'ASSEGNARE UN ESERCIZIO, ANALIZZARE LA TRACCIA INSIEME, LASCIARE UN LASSO DI TEMPO BREVE PER PENSARE AD UNA SOLUZIONE INDIVIDUALMENTE, DISCUTERE LE SOLUZIONI INDIVIDUATE COLLEGIALMENTE E QUINDI PASSARE ALL'IMPLEMENTAZIONE IN JAVA INDIVIDUALMENTE ALLA PROPRIA POSTAZIONE. DURANTE IL CORSO POSSONO ESSERE ASSEGNATI DEI PROGETTI DI SVILUPPO SOFTWARE DA SVOLGERE A CASA.
Verifica dell'apprendimento
GLI STUDENTI DEVONO SUPERARE UN ESAME FINALE COSTITUITO DA UNA PROVA PRATICA IN LABORATORIO ED UNA PROVA ORALE. UNA TIPICA PROVA PRATICA RICHIEDE LA SOLUZIONE DI ESERCIZI DI PROGRAMMAZIONE IN JAVA E LA LORO IMPLEMENTAZIONE CON L'AUSILIO DI UN PC, UTILIZZANDO L'AMBIENTE INTEGRATO DI SVILUPPO SOFTWARE APPRESO DURANTE IL CORSO. LA PROVA ORALE CONSISTE IN UN COLLOQUIO SUI PROGETTI DISCUSSI AL CORSO, GLI ESERCIZI SVOLTI NELLA PROVA PRATICA E GLI ARGOMENTI IN PROGRAMMA. SONO VALUTATI POSITIVAMENTE LA CAPACITÀ DI APPLICARE OPPORTUNAMENTE LE TECNICHE DI PROGRAMMAZIONE OBJECT-ORIENTED STUDIATE, REALIZZARE PROGRAMMI CORRETTI, E INDIVIDUARE GLI ASPETTI PRINCIPALI DELLE TEMATICHE PROPOSTE, NONCHÉ LA COMPRENSIONE DEI DETTAGLI TECNICI E DELLE CONSEGUENZE PRATICHE, E LA CHIAREZZA ESPOSITIVA.
Testi
CAY S. HORSTMANN, CONCETTI DI INFORMATICA E FONDAMENTI DI JAVA, APOGEO.
Altre Informazioni
LO SVOLGIMENTO DELLE ESERCITAZIONI E LA FREQUENZA DEL CORSO SONO FORTEMENTE CONSIGLIATE. GLI STUDENTI DEVONO ESSERE PREPARATI A TRASCORRERE UNA CONGRUA QUANTITÀ DI TEMPO NELLO STUDIO AL DI FUORI DELLE LEZIONI. UNA PREPARAZIONE SODDISFACENTE RICHIEDE IN MEDIA DUE ORE DI STUDIO PER CIASCUNA ORA TRASCORSA IN AULA. PER LE CARATTERISTICHE DEL CORSO È NECESSARIO ACQUISIRE UNA SUFFICIENTE ABILITÀ CON LA PROGRAMMAZIONE IN LINGUAGGIO JAVA E CON UN AMBIENTE DI SVILUPPO INTEGRATO. CIÒ RICHIEDE UN IMPEGNO SETTIMANALE DI CIRCA 3 ORE, OLTRE ALLE NORMALI ATTIVITÀ DI LABORATORIO, PER L’INTERA DURATA DEL CORSO.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2016-09-30]