Nuova ricerca

Giacomo CABRI

Professore Ordinario
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Insegnamento: Programmazione a oggetti

Informatica (D.M.270/04) (Offerta formativa 2021)

Obiettivi formativi

L’obiettivo dell’insegnamento è di fornire i concetti di base della programmazione orientata agli oggetti per la costruzione di programmi modulari, riusabili e manutenibili.
Al termine dell’insegnamento lo studente dovrebbe essere in grado di sfruttare le caratteristiche della programmazione orientata agli oggetti per sviluppare i programmi.

Prerequisiti

Conoscenze di base di programmazione.
Aver superato l'esame di Programmazione 1 (propedeutico)

Programma del corso

L'insegnamento affronta i seguenti argomenti:
1. Programmazione ad Oggetti (1 CFU): verranno illustrati i concetti generali, quali incapsulamento, ereditarietà e polimorfismo; verranno accennati i concetti di riusabilità e di composizione dei componenti software, illustrando il passaggio dalla programmazione modulare alla programmazione ad oggetti.
2. Il linguaggio Java: verrà utilizzato come esempio di linguaggio ad oggetti, spiegando come i concetti generali sono implementati in Java (2 CFU); verrà inoltre spiegato come Java può essere sfruttato per lo sviluppo di interfacce grafiche (3 CFU); infine verranno spiegati argomenti aggiuntivi come le strutture dati in Java e la programmazione dei thread (3 CFU).

Metodi didattici

Lezioni frontali (6 CFU) e esercitazioni in laboratorio (3 CFU), entrambi in presenza.
La frequenza non è obbligatoria.
L'insegnamento è in italiano
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.

Testi di riferimento

G. Cabri, F. Zambonelli, "Programmazione a oggetti in Java: dai fondamenti a Internet", Pitagora editrice, 2003.
Slide presentate a lezione messe a disposizione all'inizio dell'insegnamento.

Verifica dell'apprendimento

La valutazione avverrà tramite due prove.

Una prova scritta della durata di circa 1 ora in cui si richiede di modellare e implementare in Java delle semplici entità per verificare che lo studente abbia acquisito le nozioni di astrazione, classificazione, ereditarietà e polimorfismo. Durante la prova è possibile consultare materiale. L'esito della prova verrà pubblicato su ESSE3 circa 7-10 giorni dopo la prova.

Una prova orale di presentazione di un progetto sviluppato in Java su traccia data dal docente per verificare le capacità di sviluppare una applicazione a oggetti; la prova durerà circa 20 minuti.

Entrambe le prove verranno valutate in trentesimi. Il voto complessivo è dato dato dalla media pesata 1/3 la prova scritta e 2/3 la prova orale.
Orientativamente si terranno 2 prove scritte e 3 prove orali nella sessione invernale, 1 prova scritta e 3 orali nella sessione estiva, 1 prova scritta e 2 orali nella sessione autunnale.

Risultati attesi

Conoscenza e comprensione
Gli studenti apprendono:
- caratteristiche della programmazione a oggetti;
- linguaggio Java;
- sviluppo di interfacce grafiche;
- strutture dati Java.

Capacità di applicare conoscenza e comprensione
Lo studente avrà le capacita' di:
- modellare entità del mondo reale;
- implementare tali entità in Java;
- applicare le caratteristiche di incapsulamento, ereditarietà e polimorfismo del linguaggio Java;
- scrivere programmi anche complessi;
- sviluppare interfacce grafiche;
- usare strutture dati.

Autonomia di giudizio
Lo studente avrà una buona capacità di reperire dati e informazioni utili allo svolgimento del proprio lavoro, in particolare nella formulazione di problemi e nella definizione di strategie di risoluzione dei medesimi. Sarà in grado di fornire giudizi autonomi sulle scelte operate e di valutare criticamente i risultati ottenuti, anche in funzione di tali scelte.

Abilità comunicative
Lo studente sa organizzare e presentare con chiarezza e sinteticità, oltre che con linguaggio tecnico appropriato (ove necessario), il software sviluppato per il progetto.

Capacità di apprendimento
Gli studenti devono acquisire elevate capacità di apprendimento continuo e autonomo anche a causa delle caratteristiche della disciplina, l'Informatica, in continua e rapida evoluzione.