Skip to content

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