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
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
Programma
ProgrammaIl 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, HoepliBibliografia 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
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
Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER
Programma
ProgrammaIl 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, HoepliBibliografia 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
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
Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER
Programma
ProgrammaIl 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, HoepliBibliografia 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.