70219 - PROGRAMMAZIONE AD OGGETTI

Anno Accademico 2018/2019

  • Docente: Mirko Viroli
  • Crediti formativi: 12
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Moduli: Mirko Viroli (Modulo 1) Danilo Pianini (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Cesena
  • Corso: Laurea in Ingegneria e scienze informatiche (cod. 8615)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente possiede le conoscenze di base del paradigma object-oriented per la costruzione del software, dei suoi principali pattern di progettazione, della sua incarnazione nel linguaggio di programmazione Java e relativo framework, includendo aspetti avanzati quali la gestione delle interfacce grafiche, del multi-threading, e degli eventi.

Contenuti

  • Elementi base di programmazione e progettazione object-oriented
  • Il caso del linguaggio Java: panoramica e tool di sviluppo
  • Funzionalità base: Classi, oggetti, mettodi, campi, istanziazione
  • Polimorfismo, ereditarietà e riuso: interfacce e classi astratte
  • Aspetti avanzati: genericità, annotazioni, eccezioni, classi innestate, lambda expressions.
  • Librerie base per la costruzione di programmi
  • La gestione dell'I/O e della grafica
  • Elementi di programmazione concorrente in Java
  • Cenno a pattern di progettazione e tecniche di programmazione efficace
  • Strumenti di sviluppo: JDK, Eclipse, Mercurial
  • Panoramica su programmazione e IDE C#

Testi/Bibliografia

Testo di riferimento per il corso:
Bruce Eckel. Thinking in Java -- Fourth Edition
Testi aggiuntivi:
Joshua Block. Effective Java -- Second Edition   Erich Gamma, Richard Elm, Ralph Johnson, John Vlissides. Design Patterns
Il corso si avvarrà anche di tutorial e documentazione tecnica disponibile in rete

Metodi didattici

9 ore di lezione alla settimana, di norma 6 in aula e 3 in laboratorio.

In aula vengono illustrate le tecniche di programmazione ad oggetti, i dettagli del linguaggio di programmazione Java, e vengono svolti esercizi stimolando la discussione critica con gli studenti.

In laboratorio, vengono illustrati i vari tool di sviluppo, e vengono assegnati task di sviluppo per esercitare le capacità pratiche degli studenti.

Modalità di verifica e valutazione dell'apprendimento

La verifica avviene in due fasi, non necessariamente ordinate:

1) Prova pratica su programmazione Java in laboratorio. Attraverso 2 esercizi di programmazione Java, che includono test automatizzati o riguardano la produzione di semplici interfacce grafiche, si verifica la capacità dello studente di concludere in tempi brevi e con competenza un semplice task di programmazione/progettazione in Java.     

2) Colloquio orale con presentazione di un progetto. A gruppi di 3 persone circa, gli studenti realizzano un progretto di sviluppo software in Java, producendo una relazione che evidenzia requisiti, progrettazione e implementazione. La valutazione di tale relazione include il controllo di qualità della soluzione, e la discussione delle scelte progettuali. In aggiunta, ogni studente presenta anche un mini-elaborato C# che propone una traduzione del proprio codice prodotto nel progetto.

Ogni prova porta ad un punteggio compreso fra 0 e 33, e il voto finale è una media ponderata 60% (migliore dei due voti) - 40% (peggiore dei due voti).

Strumenti a supporto della didattica

Slide proiettate a lezione e pubblicate sul sito del docente in anticipo   Software: Java Development Kit, Eclipse, Microsoft VisualStudio

Link ad altre eventuali informazioni

http://apice.unibo.it/xwiki/bin/view/MirkoViroli/

Orario di ricevimento

Consulta il sito web di Mirko Viroli

Consulta il sito web di Danilo Pianini