CAPPELLI FEDERICO 107405 ESPERIENZA DI LABORATORIO N°1 Lo scopo dell'esperienza è di prendere confidenza con i fondamentali strumenti di java, il compilatore javac e la macchina virtuale java. I file sorgente per java sono dei semplici file di testo, e per poterli compilare è sufficiente utilizzare il comando javac: javac nomefile.java. per quanto riguarda l’esecuzione di classi java (N.B. solo le classi che contengono il main possono essere eseguite) è sufficiente invocare: java nomefile. In analogia con le librerie viste nel linguaggio C in java è possibile definire dei package, pacchetti che contengono un gruppo di classi che costituiscono un’ unità concettuale. La dichirazione di package viene fatta all’inizio di un file nella forma: package <nome package>. La classe pubblica Counter fa parte del package esp1. Quando si vanno a compilare le classi all'interno del package è necessario specificare il percorso: javac esp1\nomefile.java . Una volta compilati i file.java per eseguire java , bisogna sostituire alla \ il punto e non indicare l'estensione: java esp1.nomefile In sostanza vi è una vincolante corrispondenza tra il nome del package e il nome della directory nella quale ci stanno le classi interessate. Si vuole creare un oggetto, in particolare un contatore, in grado di incrementare il proprio valore o di un’unità o di un valore dato o con un determinato passo di incremento (decremento) . Bisogna rendere possibile anche il decremento del contatore e inoltre potrebbe essere importante inizializzarlo a nostro piacimento. In ogni momento deve esser possibile azzerare il conteggio. Si è scelta una soluzione che adopera l’utilizzo di ADT (Astract Data Tipe) in modo da poter definire una classe chiamata Counter che potrà poi generare tutti i contatori che saranno necessari per l’applicazione specifica. La classe pubblica Counter contiene la “descrizione” del contatore: comprende la definizione dei costruttori con tre possibilità differenti a seconda dei parametri specificati, nessun parametro per il “classico” funzionamento, un parametro per definire lo step, due parametri che indicano lo step e il valore iniziale del contatore. Si nota come venga sfruttata la possibilità di overloading, definire più funzioni con lo stesso identico nome che hanno comportamenti differenti a seconda dei parametri opzionali. La possibilità di overloading viene sfruttata anche per creare le funzioni di incremento e decremento. Vi è la possibilità di sapere in ogni momento lo stato di step e eventualmente modificarlo ( getStep, setStep), conoscere il valore corrente del contatore (getValue). Può inoltre essere utile definire la possibilità di stabilire se due contatori sono uguali nel senso che hanno lo stesso valore se confrontati nel medesimo istante. Per la definizione di questo metodo è importante notare la differenza rispetto al linguaggio C dove è necessario definire il tipo di dato boolean cosa che non è necessaria in java. Le funzioni specificate come pubbliche possono essere accessibili per chiunque è quindi possono essere modificate, si è scelto di definire private le funzioni step e value di modo che nessuno nel corso dell’applicazione possa andare a turbare i valori delle due grandezze fondamentali del contatore garantendo così l’incapsulamento del problema.