PROGRAMMAZIONE ORIENTATA AGLI OGGETTI A - L

ING-INF/05 - 6 CFU - 2° semestre

Docente titolare dell'insegnamento

ANTONELLA DI STEFANO


Obiettivi formativi

Conoscenza e comprensione

Il corso introduce alla programmazione ad oggetti, mostrandone le principali caratteristiche e prendendo come principale linguaggio di riferimento Java.
lo scopo è che l'allievo acquisisca le competenze per poter programmare ad oggetti, applicando coerentemente ed efficacemente gli strumenti messi a disposizione dal linguaggio.

Il corso ha l'obiettivo primario di fornire allo studente i concetti base di classe e oggetto e i principi fondamentali di encapsulation, polimorfismo, ereditarietà e i meccanismi di gestione delle ecccezioni.

obiettivo del corso è fornire allo studente i concetti base di classe e oggetto e i principi fondamentali di encapsulation, polimorfismo, ereditarietà e i meccanismi di gestione delle eccezioni, ma anche i concetti di programmazione parametrica e multithread e di programmazione ad eventi (cenni).

Capacità di applicare conoscenza e comprensione

l'approccio by example mira a sviluppare nello studente la capacita di organizzare un software ad oggetti. Il corso, fornisce allo studente le tecniche e gli strumenti per lo sviluppo di programmi applicativi adottando Java come linguaggio di programmazione ad oggetti di riferimento. Utilizzando alcuni package universalmente noti per la gestione dei flussi di I/O e alle Collection e Map, e analizzando e applicando concetti di programmazione parametrica e multithread l'allievo avrà modo di cominciare ad apprendere le best practice di strutturazione codice ad oggetti. L'uso di un IDE sin dai primi passi del corso mira a sollecitare nello studente la capacità di definire e organizzare gli oggetti, le loro resposabilità e relazioni.

Autonomia di giudizio (Ability of making judgements)

Lo studente sarà in grado di valutare il funzionamento di un programma scritto utilzzando un linguaggio per la programmazione orientata agli oggetti, di comprendere eventuali problemi e possibili soluzioni canoniche.

Abilità comunicative (Communication skills)

Il corso fornisce la conoscenza della programmazione orientata agli oggetti e del vocabolario tecnico ad essa associato.

​​Capacità di apprendimento (Learning skills)

Il corso fornisce la capacità di apprendere i concetti propri del paradigma di programmazione orientato agli oggetti, necessari per intraprendere futuri studi di diversi linguaggi OOP in autonomia.


Modalità di svolgimento dell'insegnamento

Il metodo di insegnamento principale è la didattica frontale e le attività di laboratorio.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.


Prerequisiti richiesti

Concetti di programmazione strutturata, il linguaggio C per istruzioni e tipi di dati,

Conoscenze delle principali struttura dati statiche e dinamiche. File, liste, pile, code hash table e alberi e i relativi algoritmi classici di manipolazione

Concetti di base di sistema operativo e sw di base (es. variabili ambiente) e comandi di sistema, i concetti di interrupt e ed eccezioni, processi e multithreading, concorrenza, semafori e monitor.



Frequenza lezioni

la frequenza non è obbligatoria ma fortemente incoraggiata per sostenere la prova di esame.

la frequenza (70%) è necessaria solo per gli studenti che intendano sostenere le prove in itinere



Contenuti del corso

Il corso presenta la programmazione ad oggetti, mostrandone le principali caratteristiche e prendendo come principale linguaggio di riferimento Java.


Vengono trattati i concetti base di classe e oggetto e i principi fondamentali di encapsulation, polimorphism, inheritance, exception handling. Questi aspetti vengono applicati alla programmazione java.

Vengono approfonditi i concetti di programmazione parametrica e generics, multithreading

Vengono applicati anche alcuni package fondamentali quali quelli per la gestione dei flussi di IO, Collection, Map

 

argomenti di programma

  1. 1 (*) Concetto di ''oggetto''. Relazione tra oggetti. Concetto di ''classe'' e di ''interfaccia''. Contratto di una classe.

  2. 2 (*) Principi di base della programmazione ad oggetti: incapsulamento, ereditatietà e polimorfismo.

  3. 3 Cenni di UML e regole di progettazione del software

  4. 4 Uso di un IDE per la programmazione Java: es. NetBeans

  5. 5 (*) Il linguaggio di programmazione ad oggetti di riferimento: Java

  6. 6 (*) Incapsulamento e modificatori di accesso

  7. 7 (*) Ereditarietà e polimorfismo

  8. 8 (*) Classi astratte ed interfacce e Package

  9. 9 (*) Gestione delle eccezioni

  10. 10 Gestione delle stringhe

  11. 11 I/O package

  12. 12 (*) Programmazione parametrica

  13. 13 Enumerazioni autoboxing

  14. 14 Collections

  15. 15 (*) Multithreading

  16. (*) indica conoscenze minime irrinunciabili per il superamento dell'esame.

  17. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.



Testi di riferimento

"Concetti di informatica e fondamenti di Java" di Cay S. Horstmann

"Java. La guida completa" di Herbert Schildt

"Programmazione di base ed avanzata con Java " di Walter Savitch


Altro materiale didattico

reperibile su Studiun (area dell'anno in corso)



Programmazione del corso

 ArgomentiRiferimenti testi
1(*)Concetto di ''oggetto''. Relazione tra oggetti. Concetto di ''classe'' e di ''interfaccia''. Contratto di una classe. 
2(*)Principi di base della programmazione ad oggetti: incapsulamento, ereditatietà e polimorfismo. 
3Cenni di UML e regole di progettazione del software 
4Uso di un IDE per la programmazione Java: es. NetBeans 
5(*)il linguaggio di programmazione ad oggetti di riferimento: Java 
6(*)Incapsulamento e modificatori di accesso 
7(*)Ereditarietà e polimorfismo 
8(*)Classi astratte ed interfacce e Package 
9(*)Gestione delle eccezioni 
10I/O package 
11(*)Programmazione parametrica -Generics  
12classi wrapper 
13(*)Collections, Collection e Map 
14ordinamento: Comparator<> e Comparable<> 
15Enumerazioni 
16(*)Multithreading  
17cenni sulle classi e le interfacce di rete: i socket 
18gli argomento contrassegnati con (*) indica conoscenze minime irrinunciabili per il superamento dell'esame: la loro conoscenza è condizione necessaria ma non sufficiente per il superamento dell'esame 


Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO

1) una prova pratica al calcolatore:
programma in linguaggio Java)

2) una successiva prova orale, in caso di superamento della prova precedente in base ad una soglia minima di ammissione 



ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI

es. domande orali:

discutere polimorfismo, encapsulation, concorrenza nei thread, tipi parametrici, mappe, exception

es. di prove pratiche reperibili su studium




Apri in formato Pdf English version