Link utili

 


Versione on-line del corso

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.

Presso quel sito potete anche scaricare materiale stampabile (slides delle lezioni). Copia delle slides dele lezioni è riportata anche qui per chi non avesse accesso al sito della Didattica on-line
 

Descrizione del corso

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.


Dettaglio dei contenuti

1. Richiami di C++ di base

  • 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

2. Classi e Oggetti: temi di base

  • 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

3. Classi e Oggetti: approfondimenti

  • 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

4. Ereditarietà: temi di base

  • 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

5. Ereditarietà: temi avanzati

  • 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

Modalità di esame

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.


Impegno richiesto

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:

Queste ultime andranno effettuate autonomamente: nell'ambito del corso non sono previste sessioni di esercitazioni pratiche, poichè le abilità di base (scrivere e compilare del codice) sono state maturate nei corsi precedenti.

Strumenti software

Per le esercitazioni pratiche è sufficiente disporre di un compilatore C++ (ANSI Standard).


Materiale di riferimento vario

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

 

Biblioteca

Per materiale di riferimento vario, si veda la sezione Biblioteca e Useful tools (link accessibili solo dall'interno dell'Università)