Estratto del documento

ISTANCEOF

Quando si effettua un cast verso il basso è buona

norma verificare la validità del cast utilizzando

l’operatore istanceof. Questo previene eccezioni a

runtime come la ClassCastException (si verifica quando

il cast non è valido).

Il compilatore non permette di fare un cast se non esiste

alcuna possibilità che esso sia valido (si può effettuare

solo all’interno di una gerarchia di classi e solo se è

logicamente valido).

Array di riferimenti e casting

In Java, si può convertire un array di subclass in un array

di superclass senza bisogno di un cast esplicito.

Tuttavia, è da tenere a mente che gli array in Java

conservano l’informazione del tipo di oggetto con cui

sono stati creati e monitorano l’inserimento di tipi

differenti.

La superclass OBJECT

In Java, la classe object è la superclasse di tutte le

classi. Ogni classe (anche se non specificato

esplicitamente) estende la classe object. Si possono

usare variabili di tipo object per riferirsi a qualsiasi tipo

di oggetto (solo i tipi primitivi non estendono object).

Il metodo equals

Il metodo equals di object permette di confrontare due

riferimenti per verificare se puntano allo stesso oggetto.

Proprietà del metodo equals:

1) Riflessiva, x.equals(x) deve restituire sempre true;

2) Simmetrica, x.equals(y) deve restituire true se e

solo se y.equals(x) restituisce true;

3) Transitiva, se x.equals(y) e y.equals(z) allora

x.equals(z) deve restituire true;

4) Consistente, se gli oggetti non cambiano, chiamate

ripetute a equals() devono restituire lo stesso

risultato;

5) Confronto con null, qualsiasi confronto con null

deve restituire false.

Il metodo tostring

Il metodo toString restituisce una rappresentazione

testuale dell’oggetto. Di default, Object.toString()

stampa il nome della classe e l’hash code dell’oggetto.

Utilizzando metodi accessori (get) il metodo toString

può essere reso più flessibile e funzionare per le

sottoclassi.

Altri metodi di object sono:

1) getClass(), che restituisce un oggetto Class che

contiene informazioni sulla classe dell’oggetto;

2) hashCode(), che restituisce un valore hash

del’oggetto.

Classi astratte

Una classe astratta è una classe che non può essere

istanziata direttamente ma serve come base per altre

classi. Viene utilizzata per rappresentare concetti

generali che verranno specializzati nelle subclass.

Utilizzo delle classi astratte:

1) In una gerarchia di classi, alcune classi diventano

così generali da non avere un’implementazione

completa. Queste classi esistono solo per essere

estese da classi più specifiche.

2) Le classi astratte sono utili per condividere attributi

e metodi comuni tra classi senza creare istanze

della classe astratta.

Metodi astratti

Un metodo astratto è un metodo che non ha

un’implementazione nella classe astratta e deve essere

implementato dalle subclass. Per dichiarare un metodo

o una classe come astratti si usa la keyword abstract.

Una classe astratta può avere sia metodi astratti che

metodi concreti (con implementazione) e attributi.

Inoltre, le classi astratte non possono essere istanziate

direttamente, cioè non si possono creare oggetti di quel

tipo.

Classi astratte ed ereditarietà

Una subclass concreta che eredita da una classe

astratta deve implementare tutti i metodi astratti della

classe genitore altrimenti deve essere definita come

astratta.

Classi astratte e polimorfismo

Le classi astratte facilitano l’uso del polimorfismo

perché permettono di trattare oggetti di subclass

concrete come se fossero del tipo astratto.

Generics

Generalmente, le classi ordinarie ed i metodi sono

vincolati a lavorare con tipi specifici (tipi primitivi o

classi come string) e quando si vuole scrivere codice

che può funzionare con più tipi di dati questo diventa un

problema. Una soluzione è il polimorfismo, per rendere

il codice più generico:

1) Si definisce un metodo che accetta un parametro di

tipo classe base o derivata;

2) Questo permette di usare il metodo con tutte le

classi derivate (limitato alla gerarchia di classi).

Programmazione generica

La programmazione generica permette di scrivere

codice che può essere riutilizzato per oggetti di diversi

tipi. I generics introducono il concetto di tipo

parametrizzato, permettendo di generalizzare il codice

per più tipi senza perdere sicurezza.

Vantaggi del generics:

1) Type safety, errori di tipo vengono rilevati a tempo

di compilazione;

2) Riutilizzabilità, le classi e i metodi generi possono

essere riutilizzati per diversi tipi di dati (si riduce la

duplicazione del codice).

Prima di generics si poteva utilizzare la classe pair

(tuttavia accetta solo le stringhe).

Con i generics si può scrivere una classe che acceetta

un tipo qualsiasi (si specificherà quando si crea

l’oggetto). La sintassi è public class Pair<T> (dove t è un

tipo generico). Così, la classe Pair può essere utilizzare

per qualsiasi tipo di dati, rendendola più flessibile e

riutilizzabile.

Parametri di tipo multiplo

E’ possibile definire una classe con più parametri di tipo

(ad esempio public class Pair<T, U>). Con due parametri

di tipo (T e U) si possono rappresentare una coppia di

oggetti di tipi diversi.

Vantaggi principali dei generics:

1) Flessibilità, si possono creare classi e metodi che

funzionano con qualsiasi tipo di dato;

2) Sicurezza, gli errori di tipo vengono rivelati a tempo

di compilazione;

Anteprima
Vedrai una selezione di 3 pagine su 8
Programmazione ad oggetti e Java (4)  Pag. 1 Programmazione ad oggetti e Java (4)  Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti e Java (4)  Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher mdi03 di informazioni apprese con la frequenza delle lezioni di Programmazione ad oggetti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università Politecnica delle Marche - Ancona o del prof Corradin Enrico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community