Fase 2 – Programmazione Orientata agli Oggetti (2–3 mesi)
Classi, Oggetti, Attributi e Metodi
- Struttura della classe
- Istanziazione degli oggetti
- Uso di this
- Migliori pratiche: denominazione, organizzazione del codice
Incapsulamento, Ereditarietà, Polimorfismo e Astrazione
- Incapsulamento: private, getters/setters, validazione
- Ereditarietà: extends, overriding (@Override)
- Polimorfismo: sottotipo, sovraccarico dei metodi
- Astrazione: panoramica, preparazione per interfacce e classi astratte
Interfacce e Classi Astratte
- Interfacce: implements, default methods
- Classi astratte: metodi astratti e concreti
- Differenze tra interfaccia e classe astratta
Costruttori, Inizializzatori e Blocchi Statici
- Costruttori predefiniti e con parametri, chiamate con this()
- Blocchi di inizializzazione ({}) e blocchi statici (static {})
Enumerazioni
- Creazione e utilizzo di enum
- Metodi e attributi negli enum
Collezioni di Base
- ArrayList: aggiunta, rimozione, iterazione (for, forEach, Iterator)
- HashMap: chiave-valore, operazioni comuni
- HashSet: eliminazione dei duplicati
- Introduzione a Queue e Stack (es. LinkedList come queue/stack)
- Introduzione al Java Collections Framework
Algoritmi di Base
- Ricerca lineare e binaria
- Ordinamento: Bubble Sort, Collections.sort()
- Ricorsione: concetti ed esempi semplici (es. fattoriale, Fibonacci)
- Introduzione alla complessità (O(n), O(log n))
Generics
- Sintassi (), collezioni generiche, metodi generici
- Limiti (extends, super)
Stream API (Introduzione)
- Operazioni di base: filter, map, collect
- Esempi con ArrayList
Test Unitari (Introduzione)
- Uso base di JUnit
- Scrittura di test cases per classi e metodi
- Introduzione a TDD (Test-Driven Development)
Progetto Finale
- Sistema di Biblioteca
- Classi: Book, User, Library
- Ereditarietà: DigitalBook e PhysicalBook
- Collezioni: ArrayList per i libri, HashMap per i prestiti
- Incapsulamento: validazione dei dati
- Git: commit per ogni funzionalità (es.
feature/book-management
)
- Pubblicazione su GitHub con README esplicativo
Risorse Aggiornate