CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A....
-
Upload
erminia-spano -
Category
Documents
-
view
213 -
download
0
Transcript of CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A....
CdL Ingegneria Elettronica, Telecomunicazionied Automazione
Fondamenti di Informatica LBA.A. 2007-08
25/02/2008 Alessandra Toninelli [email protected]
Definire una classe Java Una classe contiene solo due categorie di
elementi
1. Variabili di classe o di istanza (fields o campi)2. Metodi (il costruttore è un metodo speciale)
Tutto il codice che scriviamo deve appartenere aduna di queste due categorie
Java è un linguaggio OO – non procedurale!25/02/2008 2
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
Il costruttore
25/02/2008 3Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
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 super();
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 Ad es. un boolean è false, un nuovo oggetto è
null25/02/2008
Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08 4
private Counter ore;
public Clock (){ ore = new Counter();}
Esempio
25/02/2008Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08 5
private Counter ore = new
Counter();
public Clock (){ }
Inizalizzazione nel
costruttore
Dichiarazione +
inizalizzazione
private Counter ore;
ore = new Counter();
public Clock (){ }
NO !
E allora dove inizializzare?
25/02/2008 6Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
I campi con tipi di dato primitivo possono essere inizializzati insieme alla dichiarazione
Gli oggetti è opportuno inizializzarli nel costruttore
EccezioneIl caso in cui non siamo sicuri che ogni costruttore inizializzi i campi (ma è un caso raro… quindi usiamo il costruttore!!!)
JVM – Creazione di un oggetto
25/02/2008 7Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
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
JVM – Creazione di un oggetto
25/02/2008 8Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08
JVM cerca le definizioni dei campi ed eseguele inizializzazioni nell’ordine in cui sono scritte
Solo dopo aver eseguito tali inizializzazioniesegue il restante codice del costruttore Eventuale re-inizializzazione dei campi
Restituisce il riferimento all’oggetto creato