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

The Object-oriented programming course aims at providing the basic concepts on OOP, in particular focusing on Java.

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

Frontal lecturing, seminars and hands-on lab (BYOD" Bring Your Own Device)

Prerequisiti

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

Prerequisites

Basics of programming, functional programming, top-down problem solving approach, basics algorithms and data structures.

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

The final assessment is based on an OOP Project and the oral examination discussing on practical and theoretical aspects of the project. The project idea, usually proposed by the students, has to nevertheless pass a validation process. • NO: DB interfaces • NO: "web programming", no mashup of third-party services or libraries/API, middleware, framework Some requirements of an OOP project are: • Strong OOP connotation and structuring • Modularity, hierarchy, reuse, encapsulation, subtyping, information hiding, abstraction, inheritance, polymorphism + exception handling • Fully implemented and developed in java • THE PROJECT MUST IMPLEMENT ALL SUCH OOP CONCEPTS and ASPECTS • THE REPORT MUST CONTAIN 1 SECTION FOR EACH OF THE ABOVE CONCEPTS, DESCRIBED BY EXAMPLES TAKEN FROM THE PROJECT CODE The project must be delivered 1 week before the exam date and will be discussed during the oral exam, focusing on theoretical aspects starting from the project examples and implementations. The exam will be rated out of thirty overall, 70% for the project by and 30% for the oral examination.

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

Course introduction: contents, textbook and assessment. Programming languages. Types of languages: imperative, declarative, functional, logical, object-oriented. Machine language. Limits of machine language programming. From machine language to high-level languages. Compilers and interpreters. Structured programming: conditions, loops, arrays, files, threads. From structured programming to object-oriented programming: abstract data types, encapsulation, state and behavior, information hiding, interface and implementation. Basic concepts and introduction to object oriented programming: reuse, inheritance, abstraction and specialization. Classes and objects. Internal (developer) and external (user-client) views. Types and subtypes, interfaces, subtyping and polymorphism (universal, parameterized, by inclusion, ad-hoc, overloading, casting). Object-oriented languages and their properties: SOLID principles, OOP characteristics, characterization of the main OOP languages. The Java language: history of Java and main characteristics. The Java compiler and bytecode. The Java Virtual Machine: Java interpreter, Class loader, Bytecode Verifier, Memory, Execution Engine, JIT compiler Object-oriented programming in Java: structure of a java program, variables, conditions, and cycles. Class and instance attributes and methods, the main method and driver classes, the first java program. Java API. Classes and objects, access modifiers, interfaces, inheritance, subtyping and polymorphism. Exception Handling: Java exceptions, try-catch-finally, checked and unchecked exceptions, catch or declare policies. Files, Streams, Channels and Sockets: management of files, streams via java.io and java.nio Threads: multithreading programming, multithreading programming models, thread generation and management, inter thread communication, thread pooling

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