Offerta Didattica

 

INFORMATICA

OBJECT ORIENTED PROGRAMMING

Classe di corso: L-31 - Scienze e tecnologie informatiche
AA: 2022/2023
Sedi: MESSINA
SSDTAFtipologiafrequenzamoduli
ING-INF/05CaratterizzanteLiberaLiberaNo
CFUCFU LEZCFU LABCFU ESEOREORE LEZORE LABORE ESE
96037236036
Legenda
CFU: n. crediti dell’insegnamento
CFU LEZ: n. cfu di lezione in aula
CFU LAB: n. cfu di laboratorio
CFU ESE: n. cfu di esercitazione
FREQUENZA:Libera/Obbligatoria
MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli
ORE: n. ore programmate
ORE LEZ: n. ore programmate di lezione in aula
ORE LAB: n. ore programmate di laboratorio
ORE ESE: n. ore programmate di esercitazione
SSD:sigla del settore scientifico disciplinare dell’insegnamento
TAF:sigla della tipologia di attività formativa
TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio

Obiettivi Formativi

l corso mira a fornire solide basi in merito alla programmazione dei calcolatori elettronici per risoluzione di problemi con il paradigma ad oggetti. L’obiettivo è dunque la programmazione ad oggetti, i cui concetti verranno prevalentemente spiegati attraverso l’approfondimento del linguaggio Java.

Learning Goals


Metodi didattici

Lezioni frontali in aula e laboratorio: il corso si svolge prevalentemente attraverso lezioni frontali e seminari su specifici aspetti disciplinari. Parte delle lezioni verteranno su aspetti pratici/di laboratorio, espletato prevalentemente in aula attraverso sessioni “hands on” su propri dispositivi (BYOD – Bring Your Own Device)

Teaching Methods


Prerequisiti

Conoscenza dei concetti base della programmazione, la programmazione strutturata ed i costrutti e le strutture dati principali.

Prerequisites


Verifiche dell'apprendimento

L’esame finale si focalizzerà sul progetto pratico sviluppato dallo studente e su un esame orale. L’elaborazione del progetto dovrà incentrarsi su OOP, sviluppando un programma utilizzando strettamente la programmazione ad oggetti documentata da relazione scritta e discussione dei risultati e degli argomenti teorici relativi al progetto. L'idea progettuale, sulla quale lo studente dispone di massima libertà, deve tuttavia superare un processo di validazione da parte del docente. - NO: interfacce a DB - NO: "programmazione web", non bisogna implementare un mashup di servizi di terze parti, librerie o middleware e framework - Un progetto basato unicamente su un'applicazione Android non è sufficiente per raggiungere gli obiettivi minimi Alcuni tra gli elementi utili in un progetto OOP (JAVA) sono: - Forte connotazione e strutturazione OOP - Modularità, gerarchia, incapsulamento, subtyping, information hiding, astrazione, specializzazione, ereditarietà (is-a), composizione (has-a), polimorfismo, gestione delle eccezioni - Sviluppato in java - IL PROGETTO DEVE IMPLEMENTARE IN PRATICA TUTTI I CONCETTI OOP - LA RELAZIONE DEVE CONTENERE 1 SEZIONE PER CIASCUNO DEI CONCETTI SOPRA CHE DESCRIVA TRAMITE ESEMPI TRATTI DAL CODICE IMPLEMENTATO NEL PROGETTO LA SPECIFICA PROPRIETÀ Il progetto dovrà essere consegnato 1 settimana prima della data d’esame e sarà discusso durante l’esame orale, nel quale verranno approfonditi gli aspetti teorici a partire dagli spunti dal progetto. L’esame sarà valutato in trentesimi complessivamente, pesando il progetto per un 70% e l’orale per il 30%

Assessment


Programma del Corso

Introduzione al corso: contenuti, testi di riferimento e modalità esami. Linguaggi di programmazione. Tipi di linguaggi: imperativi, dichiarativi, funzionali, logici, orientati agli oggetti. Linguaggi macchina. Limiti della programmazione in linguaggio macchina. Dal linguaggio macchina ai linguaggi ad alto livello. Compilatori e interpreti. Richiami sulla programmazione strutturata: condizioni, loop, array, files, thread. Dalla programmazione strutturata alla programmazione a oggetti: tipi astratti di dato, encapsulation, stato e comportamento, information hiding, interfaccia ed implementazione. Concetti base ed introduzione alla programmazione ad oggetti: riuso, ereditarietà, astrazione e specializzazione. Classi e oggetti. Vista interna (developer) ed esterna (user-client). Tipi e sottotipi, interfacce, subtyping e polimorfismo (universale, parametrizzato, per inclusione, ad-hoc, overloading, casting). Linguaggi ad oggetti e loro proprietà OOP: principi SOLID, caratteristiche OOP, caratterizzazione principali linguaggi OOP. Il linguaggio Java: storia di Java e principali caratteristiche. Il compilatore Java ed il bytecode. La Java Virtual Machine: interprete Java, Class loader, Bytecode Verifier, Memoria, Execution Engine, JIT compiler Programmazione ad oggetti in Java: struttura del programma java, variabili, condizioni e cicli. Attributi e metodi di classe e d’istanza, il metodo main e le classi driver, primo programma java. Java API. Classi ed oggetti, modificatori d’accesso, interfacce, ereditarietà, subtyping e polimorfismo. Gestione delle Eccezioni: eccezioni in Java, try-catch-finally, checked e unchecked, politiche catch or declare. Files, Streams, Channels e Sockets: gestione di files, streams via java.io e java.nio Threads: programmazione multithreading, modelli di programmazione multithreading, generazione e gestione di thread, inter thread communication, thread pooling

Course Syllabus


Testi di riferimento: Java How To Program (Early Objects) by Paul Deitel (Author), Harvey Deitel (Author) - Pearson

Elenco delle unità didattiche costituenti l'insegnamento

Docente: SALVATORE DISTEFANO

Orario di Ricevimento - SALVATORE DISTEFANO

GiornoOra inizioOra fineLuogo
Lunedì 11:00 12:00Ingegneria, Piano 7, Blocco B
Note: Il ricevimento è previa appuntamento, si prega di contattare il docente e concordare la data e l'ora di ricevimento, non necessariamente il lunedi'.
  • Segui Unime su:
  • istagram32x32.jpg
  • facebook
  • youtube
  • twitter
  • UnimeMobile
  • tutti