Il corso è disponibile in modalità on-line all'indirizzo http://www.didatticaonline.unitn.it/insegnamenti/ronchettiII02/ Per l'accesso è richiesta una password ottenibile previa registrazione presso il Laboratorio d'Ateneo Innovazione Didattica, e-mail: didatticaonline@unitn.it.
Il corso introduce le tecniche e costrutti della programmazione ad oggetti in C++ come una evoluzione necessaria per affrontare il problema della crescente complessità degli artefatti software.
Prerequisito per seguire con successo il corso è una buona conoscenza degli elementi di base del C++ (in particolare vettori, puntatori, strutture e modello di memoria). Le prime lezioni offriranno comunque una breve rivisitazione dei prerequisiti.
Alla fine del corso lo studente dovrà aver acquisito familiarità con i concetti di classe, oggetto, ereditarietà, aggregazione, polimorfismo, information hiding, binding statico e dinamico.
On line lo studente troverà una sintesi delle lezioni e suggerimenti per esercitazioni.
- Il modello di memoria del C++
- Puntatori
- Reference
- Funzioni
- Scope delle variabili
- Passaggio di parametri
- Funzioni ricorsive
Slides in formato stampabile
- Arrays
- Funzioni ed arrays
- Stringhe
- Allocazione dinamica di memoria
- new e delete
- memory leaks
- Puntatori a strutture
- Costrutti idiomatici del C++
Slides in formato stampabile
- Il problema dello spazio dei nomi delle funzioni
- Metodi costruttori e distruttori
- Il problema della visibilità delle variabili
- Principio di Parna
- Polimorfismo
Slides in formato stampabile
- La copia di oggetti
- Il copy constructor
- Chiamate implicite al copy constructor e al distruttore
- Shallow vs. Deep copy
- Overloading degli operatori
- Overloading dell'operatore uguale
- Overloading dell'operatore di output
- Concetto di friend
- Uguaglianza e identità di oggetti
Slides in formato stampabile Esercizio sulle stringhe -Slides in formato stampabile
- Overloading e overriding
- Metodi virtuali
- Metodi virtuali puri
- Static and dynamic binding
- Ereditarietà e aggregazione
- Upcasting e downcasting
- Static and dynamic downcasting
- Distruttori virtuali
- Cenni di modellazione UML
Ereditarietà - slides Esempio: Fischietti -Slides in formato stampabile Esempio: Object Oriented Design -Slides in formato stampabile
- Indipendenza dal tipo
- Soluzione con i template
- Soluzione con le gerarchie di classi
- Ereditarietà multipla
Templates - slides Esempio: liste linkate - slides Downcasting -Slides in formato stampabile Ereditarietà multipla -Slides in formato stampabile
La valutazione finale consisterà nella stesura di un elaborato scritto suddiviso in due parti: la prima richiederà di determinare l’output di frammenti di codice, la seconda sarà più articolata e prevederà domande di carattere teorico, e la scrittura di brevi programmi. Esempi di testo di esame sono disponibili presso http://latemar.science.unitn.it/Didattica/aa_2000_2001/Laurea_In_Informatica/Programmazione2/Esami/
Per iscriversi agli esami gli studenti del corso di laurea in Informatica dovranno usare la procedura on-line http://esami.science.unitn.it. Eventuali studenti di altri corsi di laurea dovranno contattare il docente per concordare la modalità di iscrizione.
Il corso offre sei crediti formativi, che sono acquisibili con un impegno valutabile in circa 150 ore di lavoro, incluse le 48 ore di lezione in aula. Va dunque inteso che per ogni ora di aula lo studente dovrebbe spendere circa due ore di studio, da suddividere in:
Per le esercitazioni pratiche è sufficiente disporre di un compilatore C++ (ANSI Standard).
Bruce Eckel, “Thinking in C++: Introduction to Standard C++, Volume One”, Prentice Hall PTR (2000) ISBN: 0139798099, disponibile on-line all’indirizzo http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
Per materiale di riferimento vario, si veda la sezione Biblioteca e Useful tools (link accessibili solo dall'interno dell'Università)