La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A. 2007-08 25/02/2008 Alessandra Toninelli

Presentazioni simili


Presentazione sul tema: "CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A. 2007-08 25/02/2008 Alessandra Toninelli"— Transcript della presentazione:

1 CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A. 2007-08 25/02/2008 Alessandra Toninelli alessandra.toninelli@unibo.it

2 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 ad una di queste due categorie Java è un linguaggio OO – non procedurale! 25/02/20082Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08

3 Il costruttore 25/02/20083Costruttori 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();

4 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. Allinterno di un metodo (tipicamente il costruttore) Java fornisce una inizializzazione di default Ad es. un boolean è false, un nuovo oggetto è null 25/02/2008Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-084

5 private Counter ore; public Clock () {ore = new Counter(); } Esempio 25/02/2008Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-085 private Counter ore = new Counter(); public Clock () {} Inizalizzazione nel costruttore Dichiarazione + inizalizzazione private Counter ore; ore = new Counter(); public Clock () {} NO !

6 E allora dove inizializzare? 25/02/20086Costruttori 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 Eccezione Il caso in cui non siamo sicuri che ogni costruttore inizializzi i campi (ma è un caso raro… quindi usiamo il costruttore!!!)

7 JVM – Creazione di un oggetto 25/02/20087Costruttori 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 linvocazione ad un altro costruttore, JVM esegue quel costruttore Se il costruttore inizia con linvocazione al costruttore di una superclasse, JVM esegue quel costruttore

8 JVM – Creazione di un oggetto 25/02/20088Costruttori ed Inizializzazione– Fondamenti di Informatica LB – A. A. 2007-08 JVM cerca le definizioni dei campi ed esegue le inizializzazioni nellordine in cui sono scritte Solo dopo aver eseguito tali inizializzazioni esegue il restante codice del costruttore Eventuale re-inizializzazione dei campi Restituisce il riferimento alloggetto creato


Scaricare ppt "CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A. 2007-08 25/02/2008 Alessandra Toninelli"

Presentazioni simili


Annunci Google