Fondamenti della Programmazione Orientata agli Oggetti in Java

Classificato in Informatica

Scritto il in italiano con una dimensione di 4,76 KB

Modificatori Final e Static

  • Classe final: non può essere estesa.
  • Metodo final: non è possibile effettuarne l'overriding.
  • Attributo final: non può variare, rappresenta una costante.
  • Attributi statici: sono condivisi tra tutti gli oggetti della classe e sono accessibili senza dover istanziare l'oggetto.

Tipi di Dati

Tipi Primitivi

  • char, int, double, float, boolean.

Tipi Puntatore (Riferimento)

  • String, Object, vettori, Vector.

Casting e Operatori di Tipo

  • Downcasting: possibile se il riferimento è un oggetto della stessa classe (passaggio da superclasse a sottoclasse).
  • Upcasting: sempre possibile (passaggio da sottoclasse a superclasse).
  • Casting implicito: avviene senza perdita di dati (es. da int a float).
  • Casting esplicito: può comportare una perdita di dati (es. int = (int)float).
  • instanceof: operatore che determina il tipo di un oggetto.

Binding e Invocazione dei Metodi

Il binding è il meccanismo che determina quale metodo deve essere invocato.

Binding Statico

  • Attuato a tempo di compilazione.
  • PRO: maggiore efficienza.
  • CONTRO: se si modifica un metodo, è necessario ricompilare.

Binding Dinamico

  • Attuato a tempo di esecuzione.
  • PRO: favorisce la riusabilità del codice.
  • CONTRO: minore efficienza.

Classi e Metodi Astratti

  • Classi astratte: classi che non possono essere istanziate e possiedono almeno un metodo abstract.
  • Metodo astratto: metodo definito solo dal suo prototipo, senza implementazione.

Ereditarietà e Classi Wrapper

  • Ereditarietà: in Java è consentita solo l'ereditarietà singola.
  • Wrapper: classi che trasformano un tipo primitivo in un oggetto (tipo riferimento).
  • Boxing: inserimento del valore primitivo all'interno di un oggetto (es. valueOf()).
  • Unboxing: estrazione del valore primitivo dall'oggetto (es. intValue()).
  • Autoboxing: operazioni di boxing e unboxing eseguite automaticamente (disponibile nelle versioni recenti di Java).

Gestione delle Eccezioni

  • NumberFormatException: errore nel formato dell'input.
  • NullPointerException: riferimento a un oggetto nullo (null).
  • ArithmeticException: errori aritmetici (es. divisione per zero).
  • IndexOutOfBoundsException: errore dell'indice in un array.
  • IOException: errore di input/output che deve essere obbligatoriamente gestito (eccezione controllata).

Enumerazioni e Modificatori di Visibilità

  • Enum: elenco di costanti (implicitamente sia static che final).

Livelli di Accesso

  • private: visibile solo all'interno della classe stessa.
  • public: visibile sia nella propria classe che nelle altre classi.
  • protected: visibile dalle classi estese e all'interno dello stesso package.
  • package (default): visibile nella propria classe e all'interno del suo package.

Polimorfismo e Sviluppo del Codice

Il polimorfismo si verifica se un metodo è in grado di adattare il suo comportamento allo specifico oggetto su cui deve operare.

  • 1° forma: stesso metodo applicato su diversi oggetti.
  • 2° forma: stesso metodo con codice differente.

Overriding vs Overloading

  • Overriding: (modificatori public o protected) stesso nome e stessa firma, ma con uno sviluppo (implementazione) diverso.
  • Overloading: metodi con lo stesso nome ma con firma (parametri) diversa.

Concetti Avanzati

  • Overflow: si verifica quando il numero di bit necessari per rappresentare un valore è superiore a quelli disponibili.
  • Incapsulamento: proprietà degli oggetti di contenere al proprio interno tutto ciò che si riferisce ad essi (attributi e metodi), proteggendo i dati dall'accesso esterno diretto.

Voci correlate: