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.