20810075 - PROGRAMMAZIONE ORIENTATA AGLI OGGETTI

Presentare gli aspetti fondamentali della programmazione orientata agli oggetti, con una enfasi sui concetti di modularizzazione e di riuso del codice e gli aspetti avanzati del paradigma di programmazione orientato agli oggetti. Lo studente che abbia superato il corso dovrà essere in grado di scrivere autonomamente componenti (classi e moduli) per lo sviluppo di applicazioni software di media complessità, nonché partecipare al progetto e alla realizzazione di applicazioni software di grande complessità.

Curriculum

scheda docente | materiale didattico

Programma

Programma
Il corso si articola in sette parti, svolte in quest'ordine nel semestre; ogni parte comprende lezioni ed esercizi di verifica al calcolatore.

Parte 1: Il Paradigma Orientato agli Oggetti

Il linguaggio di programmazione Java

Classi e Oggetti

Costruttori

Information Hiding

Parte 2: Qualità del codice

Coesione e accoppiamento

Testing

Parte 3: Polimorfismo

Interfacce

Principio di sostituzione, polimorfismo

Ereditarietà

Parte 4: Collezioni

Generics

Mappe, insiemi, liste

Iteratori

Parte 5: Riuso del codice

Ereditarietà: approfondimenti

Classi astratte

Tipi enumerati

Classi nidificate

Java Record

Tipi sealed

Parte 6: stream, eccezioni, riflessione, annotazioni

Gestione delle Eccezioni

Stream

Riflessione

Annotazioni

Parte 7: Introduzione alla programmazione concorrente

Java Thread, definizione, creazione, terminazione

Interferenza

Speed-up e problemi di decomposizione parallela

Un modello multi-thread per le applicazioni grafiche

Prerequisiti

Conoscenza dei fondamenti della programmazione imperativa in C (tipi, variabili, strutture di controllo, funzioni, array, puntatori), come acquisita nell'insegnamento di Fondamenti di informatica.

Testi Adottati

Claudio De Sio Cesari , Programmazione Java, Hoepli

Bibliografia Di Riferimento

Dispense del docente, esercizi di verifica, studio di caso e testi d'esame degli anni precedenti, pubblicati sul sito del corso (sites.google.com/view/rm3-poo). Il materiale è lo stesso per frequentanti e non frequentanti.

Modalità Frequenza

La frequenza non è obbligatoria. Le lezioni si tengono in presenza, tre volte a settimana. Il percorso HQ richiede di partecipare alle prove in itinere in laboratorio e di consegnare gli homework nei tempi indicati.

Modalità Valutazione

L'esame si compone di due prove individuali, svolte al calcolatore nel laboratorio didattico, senza poter consultare alcun materiale. Per superare l'esame occorre la sufficienza in entrambe le prove; alla seconda prova si accede solo superando la prima. - Prima prova (peso circa 12/31, durata circa un'ora): quiz a risposta chiusa ed esercizi di programmazione corretti automaticamente con il sistema di quiz del corso. I quiz sono ispirati agli esercizi di verifica pubblicati sul sito del corso, sul quale ci si può esercitare con lo stesso sistema. - Seconda prova (peso circa 19/31, durata circa un'ora e mezza): esercizi di ristrutturazione di codice, progettazione e implementazione di piccole applicazioni e scrittura di casi di test, svolti con l'ambiente di sviluppo Eclipse. In alternativa alla prima prova, durante il corso si può seguire il percorso HQ (homework e quiz): tre prove in itinere a quiz, svolte con le stesse modalità della prima prova, e alcuni homework in coppia da consegnare nei tempi indicati. Chi ottiene la sufficienza in tutte le prove in itinere e consegna tutti gli homework accede direttamente alla seconda prova; il punteggio della prima prova è allora 1 + (punteggio ottenuto / punteggio massimo) × 12. Il voto finale è la somma dei punteggi delle due prove. Nella seconda prova si valutano la correttezza e la completezza delle soluzioni, la qualità del codice (leggibilità, coesione, accoppiamento, uso appropriato del linguaggio) e l'adeguatezza dei casi di test. I testi d'esame degli anni precedenti, dal 2019, sono disponibili sul sito del corso.

scheda docente | materiale didattico

Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER

Programma

Programma
Il corso si articola in sette parti, svolte in quest'ordine nel semestre; ogni parte comprende lezioni ed esercizi di verifica al calcolatore.

Parte 1: Il Paradigma Orientato agli Oggetti

Il linguaggio di programmazione Java

Classi e Oggetti

Costruttori

Information Hiding

Parte 2: Qualità del codice

Coesione e accoppiamento

Testing

Parte 3: Polimorfismo

Interfacce

Principio di sostituzione, polimorfismo

Ereditarietà

Parte 4: Collezioni

Generics

Mappe, insiemi, liste

Iteratori

Parte 5: Riuso del codice

Ereditarietà: approfondimenti

Classi astratte

Tipi enumerati

Classi nidificate

Java Record

Tipi sealed

Parte 6: stream, eccezioni, riflessione, annotazioni

Gestione delle Eccezioni

Stream

Riflessione

Annotazioni

Parte 7: Introduzione alla programmazione concorrente

Java Thread, definizione, creazione, terminazione

Interferenza

Speed-up e problemi di decomposizione parallela

Un modello multi-thread per le applicazioni grafiche

Prerequisiti

Conoscenza dei fondamenti della programmazione imperativa in C (tipi, variabili, strutture di controllo, funzioni, array, puntatori), come acquisita nell'insegnamento di Fondamenti di informatica.

Testi Adottati

Claudio De Sio Cesari , Programmazione Java, Hoepli

Bibliografia Di Riferimento

Dispense del docente, esercizi di verifica, studio di caso e testi d'esame degli anni precedenti, pubblicati sul sito del corso (sites.google.com/view/rm3-poo). Il materiale è lo stesso per frequentanti e non frequentanti.

Modalità Frequenza

La frequenza non è obbligatoria. Le lezioni si tengono in presenza, tre volte a settimana. Il percorso HQ richiede di partecipare alle prove in itinere in laboratorio e di consegnare gli homework nei tempi indicati.

Modalità Valutazione

L'esame si compone di due prove individuali, svolte al calcolatore nel laboratorio didattico, senza poter consultare alcun materiale. Per superare l'esame occorre la sufficienza in entrambe le prove; alla seconda prova si accede solo superando la prima. - Prima prova (peso circa 12/31, durata circa un'ora): quiz a risposta chiusa ed esercizi di programmazione corretti automaticamente con il sistema di quiz del corso. I quiz sono ispirati agli esercizi di verifica pubblicati sul sito del corso, sul quale ci si può esercitare con lo stesso sistema. - Seconda prova (peso circa 19/31, durata circa un'ora e mezza): esercizi di ristrutturazione di codice, progettazione e implementazione di piccole applicazioni e scrittura di casi di test, svolti con l'ambiente di sviluppo Eclipse. In alternativa alla prima prova, durante il corso si può seguire il percorso HQ (homework e quiz): tre prove in itinere a quiz, svolte con le stesse modalità della prima prova, e alcuni homework in coppia da consegnare nei tempi indicati. Chi ottiene la sufficienza in tutte le prove in itinere e consegna tutti gli homework accede direttamente alla seconda prova; il punteggio della prima prova è allora 1 + (punteggio ottenuto / punteggio massimo) × 12. Il voto finale è la somma dei punteggi delle due prove. Nella seconda prova si valutano la correttezza e la completezza delle soluzioni, la qualità del codice (leggibilità, coesione, accoppiamento, uso appropriato del linguaggio) e l'adeguatezza dei casi di test. I testi d'esame degli anni precedenti, dal 2019, sono disponibili sul sito del corso.

scheda docente | materiale didattico

Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER

Programma

Programma
Il corso si articola in sette parti, svolte in quest'ordine nel semestre; ogni parte comprende lezioni ed esercizi di verifica al calcolatore.

Parte 1: Il Paradigma Orientato agli Oggetti

Il linguaggio di programmazione Java

Classi e Oggetti

Costruttori

Information Hiding

Parte 2: Qualità del codice

Coesione e accoppiamento

Testing

Parte 3: Polimorfismo

Interfacce

Principio di sostituzione, polimorfismo

Ereditarietà

Parte 4: Collezioni

Generics

Mappe, insiemi, liste

Iteratori

Parte 5: Riuso del codice

Ereditarietà: approfondimenti

Classi astratte

Tipi enumerati

Classi nidificate

Java Record

Tipi sealed

Parte 6: stream, eccezioni, riflessione, annotazioni

Gestione delle Eccezioni

Stream

Riflessione

Annotazioni

Parte 7: Introduzione alla programmazione concorrente

Java Thread, definizione, creazione, terminazione

Interferenza

Speed-up e problemi di decomposizione parallela

Un modello multi-thread per le applicazioni grafiche

Prerequisiti

Conoscenza dei fondamenti della programmazione imperativa in C (tipi, variabili, strutture di controllo, funzioni, array, puntatori), come acquisita nell'insegnamento di Fondamenti di informatica.

Testi Adottati

Claudio De Sio Cesari , Programmazione Java, Hoepli

Bibliografia Di Riferimento

Dispense del docente, esercizi di verifica, studio di caso e testi d'esame degli anni precedenti, pubblicati sul sito del corso (sites.google.com/view/rm3-poo). Il materiale è lo stesso per frequentanti e non frequentanti.

Modalità Frequenza

La frequenza non è obbligatoria. Le lezioni si tengono in presenza, tre volte a settimana. Il percorso HQ richiede di partecipare alle prove in itinere in laboratorio e di consegnare gli homework nei tempi indicati.

Modalità Valutazione

L'esame si compone di due prove individuali, svolte al calcolatore nel laboratorio didattico, senza poter consultare alcun materiale. Per superare l'esame occorre la sufficienza in entrambe le prove; alla seconda prova si accede solo superando la prima. - Prima prova (peso circa 12/31, durata circa un'ora): quiz a risposta chiusa ed esercizi di programmazione corretti automaticamente con il sistema di quiz del corso. I quiz sono ispirati agli esercizi di verifica pubblicati sul sito del corso, sul quale ci si può esercitare con lo stesso sistema. - Seconda prova (peso circa 19/31, durata circa un'ora e mezza): esercizi di ristrutturazione di codice, progettazione e implementazione di piccole applicazioni e scrittura di casi di test, svolti con l'ambiente di sviluppo Eclipse. In alternativa alla prima prova, durante il corso si può seguire il percorso HQ (homework e quiz): tre prove in itinere a quiz, svolte con le stesse modalità della prima prova, e alcuni homework in coppia da consegnare nei tempi indicati. Chi ottiene la sufficienza in tutte le prove in itinere e consegna tutti gli homework accede direttamente alla seconda prova; il punteggio della prima prova è allora 1 + (punteggio ottenuto / punteggio massimo) × 12. Il voto finale è la somma dei punteggi delle due prove. Nella seconda prova si valutano la correttezza e la completezza delle soluzioni, la qualità del codice (leggibilità, coesione, accoppiamento, uso appropriato del linguaggio) e l'adeguatezza dei casi di test. I testi d'esame degli anni precedenti, dal 2019, sono disponibili sul sito del corso.