PROGRAMMAZIONE A OGGETTI - MOD.1

Anno accademico
2023/2024 Programmi anni precedenti
Titolo corso in inglese
OBJECT-ORIENTED PROGRAMMING - 1
Codice insegnamento
CT0372 (AF:401991 AR:250736)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di PROGRAMMAZIONE A OGGETTI
Livello laurea
Laurea
Settore scientifico disciplinare
INF/01
Periodo
I Semestre
Anno corso
2
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
L’insegnamento è una delle attività formative di base del corso di laurea in Informatica che consentono allo studente di acquisire la conoscenza e la comprensione dei principali paradigmi di programmazione e di acquisire la capacità di progettare e implementare software.
L'obiettivo dell’insegnamento è fornire conoscenze relative al paradigma di programmazione ad oggetti nonché la conoscenza specifica del linguaggio Java.
Il corso mira a sviluppare nello studente la necessaria familiarità con il paradigma della Programmazione ad Oggetti utilizzando e consolidando le basi di programmazione acquisite durante il primo anno.

Risulta fondamentale che il percorso formativo coniughi elementi metodologici e teorici a continui stimoli sperimentali, attraverso la risoluzione autonoma di esercizi e problemi applicativi.

Lo studente che frequenti con profitto il corso avrà acquisito una conoscenza approfondita del linguaggio Java e dei concetti fondamentali dei linguaggi di programmazione ad oggetti.
Per affrontare il corso è indispensabile avere una consolidata e profonda competenza di programmazione imperativa. Infatti la programmazione ad oggetti estende tale paradigma arricchendolo di meccanismi che permettono di ottenere proprietà desiderabili in termini di strutturazione, integrazione e compartimentazione del codice realizzato. Di conseguenza, e' essenziale che lo studente abbia compreso, acquisito, elaborato ed applicato i fondamenti della programmazione imperativa prima di poter affrontare questo corso con successo.
1) Encapsulation e abstraction
a. Classi e oggetti, campi e metodi
b. Static e final
c. Aliasing
d. Information hiding, attributi di visibilita'
e. Moduli
f. Documentazione del codice, Javadoc e file jar
g. Java Virtual Machine e Java bytecode
2) Polimorfismo
a. Estensione di classi, overriding e overloading
b. Abstract e final
c. Ereditarieta', subtyping, principio di sostituzione
d. Tipi statici e dinamici
e. Ereditarieta' singola e multipla
f. Classi astratte, interfacce
g. Dispatching statico e dinamico
h. Tipi generici
3) Java in action
a. Gerarchia delle classi Java, classe Object
b. Tipi native types, autoboxing, stringhe
c. Eccezioni
d. Annotazioni
e. Reflection
f. Gestione delle librerie, Gradle
g. Il pattern MVC (Model-View-Controller)
h. Spring
Dispense del docente.

Materiale aggiuntivo:
Ken Arnold, James Gosling, David Holmes: The Java Programming Language, 4th Edition
Timothy Budd, An Introduction to Object-Oriented Programming, 3rd edition
La parte di esame relativa al Modulo 1 consiste in una prova scritta da svolgere al termine del corso o in qualsiasi degli appelli successivi. Per la registrazione del voto è necessario superare anche la parte inerente al Modulo 2, per la quale si rimanda al relativo Syllabus.
La valutazione sara' basata unicamente sulla prova scritta composta da una parte teorica che valutera' le conoscenze dello studente relative al paradigma di programmazione ad oggetti con domande a risposta chiusa o aperta, e una parte pratica che valutera' la conoscenza specifica del linguaggio Java attraverso esercizi di programmazione in questo linguaggio.
Lezioni frontali alla lavagna.

Esercizi di programmazione, anche svolti in classe.
Italiano
scritto
Programma definitivo.
Data ultima modifica programma: 20/07/2023