CdL Ingegneria Elettronica, Telecomunicazioni
ed Automazione
Fondamenti di Informatica LB
A.A. 2007-08
25/02/2008
Alessandra Toninelli
alessandra.toninelli@unibo.it
Definire una classe Java
Una classe contiene solo due categorie di elementi
1.
2.
Variabili di classe o di istanza (fields o campi)
Metodi (il costruttore è un metodo speciale)
Tutto il codice che scriviamo deve appartenere ad
una di queste due categorie
Java è un linguaggio OO – non procedurale!
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
2
Il costruttore
E’ possibile definire più costruttori per una stessa
classe (overriding del metodo)
E’ possibile chiamare un costruttore della stessa classe
dentro un altro costruttore
this.costruttore();
Ma deve essere la prima istruzione
E’ possibile chiamare il costruttore della superclasse
25/02/2008
super();
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
3
Inizializzazione dei campi
Dove si inizializzano i campi di una classe?
Due possibili alternative:
1. Nella dichiarazione del campo (ma in una sola
istruzione!)
2. All’interno di un metodo (tipicamente il costruttore)
Java fornisce una inizializzazione di default
25/02/2008
Ad es. un boolean è false, un nuovo oggetto è null
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
4
Esempio
Inizalizzazione
nel costruttore
private Counter ore;
public Clock ()
{
ore = new Counter();
}
private Counter ore;
ore +
= new Counter(); NO !
Dichiarazione
inizalizzazione
public Clock ()
private Counter ore =
{
}
new Counter();
public Clock ()
{
}
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
5
E allora dove inizializzare?
I campi con tipi di dato primitivo possono essere
inizializzati insieme alla dichiarazione
Gli oggetti è opportuno inizializzarli nel costruttore
Eccezione
Il caso in cui non siamo sicuri che ogni costruttore
inizializzi i campi
(ma è un caso raro… quindi usiamo il costruttore!!!)
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
6
JVM – Creazione di un oggetto
JVM assegna gli argomenti passati con il costruttore ai
campi del nuovo oggetto creato
Cerca il costruttore e ne legge la prima istruzione
Se il costruttore inizia con l’invocazione ad un altro
costruttore, JVM esegue quel costruttore
Se il costruttore inizia con l’invocazione al costruttore
di una superclasse, JVM esegue quel costruttore
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
7
JVM – Creazione di un oggetto
JVM cerca le definizioni dei campi ed esegue
le inizializzazioni nell’ordine in cui sono scritte
Solo dopo aver eseguito tali inizializzazioni
esegue il restante codice del costruttore
Eventuale re-inizializzazione dei campi
Restituisce il riferimento all’oggetto creato
25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
8