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.