Abbiamo voluto con questo articolo tenere in considerazione anche chi si avvicina per la prima volta a Java. Questa semplice applet darà un'idea su come si utilizzano i suoni e le funzioni matematiche java.
L'applet consiste di una semplice calcolatrice che parla dichiarando il numero quando si digita sulla tastiera numerica.
Inoltre esiste la possibilità di cambiare il formato dei caratteri, i colori e la lingua (italiano o inglese).
L'Applet prende dei parametri in input da due file sequenziali :
calcolatrice.ita per i dati italiani e calcolatrice.eng per i dati inglesi.
Il bottone viene attivato quando viene chiusa la finestra della Calcolatrice. Quando a questo punto ci si clicca sopra la Calcolatrice viene riattivata e il bottone disabilitato.
Introduzione.
Questa pagina è rivolta a tutti coloro che faticosamente stanno prendendo confidenza con questo linguaggio, ed ha come scopo di fornire un'idea su come viene sviluppato un Applet Java.
L'articolo è comosto dei seguenti passi:
In questo capitolo si danno i concetti generali sui termini che vengono utilizzati nel documento e che costituiscono la base della programmazione ad oggetti.
Nel capitolo Classi e Metodi utilizzati per la realizzazione viene presentata una tabella dove vengono elencati e documentate tutte le classi e i metodi (costruttori e non) appartenenti ai vari package del JDK 1.0.2. che sono stati utilizzati per la realizzazione della calcolatrice.
Le colonne della tabella riguardano:
\- Il package utilizzato
- La classe o interfaccia usata
- La descrizione della classe o interfaccia usata.
- Il Metodo / Costruttore usato
- La desrizione del Metodo / Costruttore usato
Nel capitolo Classi e Metodi componenti l'applicazione viene presentata una tabella dove vengono elencati e documentate tutte le classi e i metodi (costruttori e non) appartenenti al programma Calcolatrice.java.
Le colonne della tabella riguardano:
\- Il package utilizzato
- La classe o interfaccia usata
- La descrizione della classe o interfaccia usata.
- Il Metodo / Costruttore usato
- La desrizione del Metodo / Costruttore usato
Nel capitolo Note documentative viene spiegata come è stata realizzata una documentazione del programma in pagine HTML secondo le specifiche Sun.
Cominciamo quindi a prendere confidenza con alcuni termini che verranno utilizzati in questo documento, cioè :
- Linguaggio orientato agli oggetti. Tale è Java (come il C++). Un linguaggio orientato agli oggetti fornisce una descrizione astratta dell'oggetto preso in considerazione (un pannello, un grafico, un formato numerico, ecc.) che comprende uno stato ed una funzionalità. In parole povere i linguaggi orientati agli oggetti descrivono le interazioni tra gli oggetti. Il prodotto di questo tipo di linguaggio non è quindi un programma che semplicemente realizza una sequenza di istruzioni, ma che realizza un insieme di funzioni associate agli oggetti necessari all'applicazione.
- Classe (Class). Nome dell'oggetto nel linguaggio Java e C++.
- Proprietà. Rappresentano lo stato di un oggetto comprendente elementi di dati con i rispettivi valori (per esempio il colore, il formato dei caratteri, ecc.).
- Metodi (Method). Rappresentano la funzionalità di un oggetto cioè l'insieme delle funzioni che operano sugli elementi di dati dello stato (per esempio il metodo per cambiare colore).
- Costruttore (Constructor). Metodo speciale che inizializza un tipo oggetto chiamato al momento di una definizione o quando si utilizza l'operatore new. Questo significa che quando si ha bisogno di un oggetto, sorge la necessità di "costruirne un'istanza", per poterlo usare e magari (ma non è necessario) dargli un nome (esattamente come dichiariamo gli interi con nomi a, b, ecc. possiamo dichiarare per esempio l'oggetto bottone con nomi a, b, ecc.) .
- Evento (Event). Azione proveniente dal mondo esterno (Clic su un tasto o su un menu, arrivo di un messaggio, ecc.) che può essere intercettata al fine di cambiare il corso del programma.
- Genitore e Figlio. Nella terminologia della programmazione ad oggetti un genitore (in java superclasse e si referenzia con super)è un oggetto che ne genera altri, mentre un figlio (in java si referenzia con this) deriva da un altro oggetto ereditandone tutte le proprietà e i metodi e mantenendo la possibilità di avere proprietà e metodi suoi.
- Eccezione (Exception). Condizione di errore che può verificarsi durante l'esecuzione di un Applet (Per esempio il tentativo di creare un array con dimensione negativa genera l'eccezione NegativeArraySizeException).
- Interfaccia (Interface). Insieme di metodi normalmente non appartenenti all'oggetto in questione ma necessari in determinati casi (si usa la terminologia "l'oggetto implementa l'interfaccia"). In questo modo si può creare un'interfaccia di metodi comuni a più oggetti, evitandone la duplicazione (per esempio se l'oggetto a e l'oggetto b possiedono i metodi m1, m2 e m3 si può creare un'interfaccia che includa questi 3 metodi, togliendoli ad a e b ; così i metodi si riducono da 6 a 3).
- Package. Raccolta di classi ed interfacce. Di solito sotto un nome astratto si usa raccogliere classi ed interfacce che trattano un determinato argomento, questo anche al fine di evitare nomi che si potrebbero ripetere, generando conflitti. Per potere utilizzare le classi e le interfacce di un package, occorre importarle nel proprio programma. La Sun Microsystem ha messo a disposizione dei programmatori Java i seguenti package (senza i quali esisterebbe solo la classe degli oggetti, padre di tutte le classi ; pensate un po' a ricreare da soli tutti gli elementi del linguaggio Java, per esempio Integer, String, e così via !) :
java.applet
Package che tratta gli applet, cioè piccole applicazioni che girano "incastrate" nella pagina Web. java.awt Abstract Window Toolkit. Si tratta di un package che tratta tutti gli oggetti grafici che possiamo trovare in una finestra, come bottoni, pannelli, menù, ecc. java.awt.image Estensione particolare dell'Abstract Window Toolkit che tratta la gestione delle immagini. java.awt.peer Raccolta di interfacce per la gestione degli oggetti dell'Abstract Window Toolkit. java.io Package che tratta la gestione di input/output dei files. java.lang Package che tratta la gestione di tutti gli elementi del linguaggio java come interi, stringhe, ecc. java.net Package che tratta la gestione della rete. Ci si trovano oggetti come Socket e URL. java.util Package per le operazioni di utilità.
Classi e metodi utilizzati per la realizzazione
| Package usato | Classe / Interfaccia usata | Descrizione Classe / Interfaccia | Metodo / Costruttore usato | Descrizione Metodo / Costruttore | |---|---|---|---|---| | java.applet | Applet | Classe base per gli applet | URL getDocumentBase() | Metodo. Ottiene l' URL del documento dove si trova l'Applet | | | | | URL getCodeBase() | Metodo. Ottiene l' URL del path dove si trova il documento che contiene l'Applet. | | | | | String getParameter(String name) | Metodo. Ottiene il valore del parametro name passato dalla pagina HTML. | | | | | AudioClip getAudioClip(URL url, String name) | Metodo. Carica un suono audio clip prendendo dall' url specificato con il nome name | | | | | Component add(Component comp) | Metodo ereditato. Aggiunge al riquadro il componente grafico comp. . | | | AudioClip | Interfaccia per la gestione dei suoni. | void play() | Metodo. Attiva il suono. | | java.awt | Button | Classe. Bottone | Button(String label) | Costruttore. Costruisce un bottone con etichetta label . | | | Checkbox | Classe. Oggetto grafico di scelta a 2 stati (true e false) | Checkbox(String label, CheckboxGroup group, boolean state) | Costruttore. Costruisce un Checkbox associandolo al gruppo di Checkbox group e. assegnandogli lo stato iniziale state. | | | | | void setBackground(Color c) | Metodo ereditato dalla classe Component . Imposta il colore di sfondo c . | | | CheckboxGroup | Classe. Gruppo di CheckBox. Uno solo dei CheckBox appartenenti al gruppo può essere impostato a true. | CheckboxGroup() | Costruttore. | | | CheckboxMenuItem | Classe. Elemento di menu a 2 stati (true o false) | CheckboxMenuItem(String label) | Costruttore. Costruisce un CheckboxMenuItem assegnandogli l'etichetta label. | | | | | boolean getState() | Metodo. Restituisce lo stato true o false. | | | | | void setState(boolean t) | Metodo. Imposta lo stato t. | | | | | void setLabel(String label) | Metodo ereditato. Imposta la scritta del Menù a label . | | | Color | Classe. Colore | Color(int r, int g, int b) | Costruttore. Costruisce un colore impostando la quantità di rosso r , la quantità di verde g e la quantità di blu b . | | | Component | Classe. Generico componente di Abstract Window Toolkit. | | | | | Event | Classe. Evento. | | | | | Font | Classe. Formato Carattere. | Font(String name, int style, int size) | Costruttore. Costruisce un carattere con famiglia name , stile style e grandezza size. | | | | | String getFamily() | Metodo. Restituisce la famiglia di appartenenza del Font. | | | | | String getStyle() | Metodo. Restituisce lo stile del Font. | | | Frame | Classe. Riquadro (finestra) contenitore di oggetti grafici. | Frame() | Costruttore. Costruisce un riquadro vuoto. . | | | | | Frame(String title) | Costruttore. Costruisce un riquadro con titolo title . . | | | | | setTitle(String title) | Metodo. Imposta il titolo del riquadro. | | | | | void setMenuBar(MenuBar mb) | Metodo. Imposta una barra dei menù mb. | | | | | void remove(MenuComponent m) | Metodo. Rimuove la barra dei Menù o un Menù o una voce di Menù dal riquadro. | | | | | void remove(MenuComponent m) | Metodo. Rimuove la barra dei menù o l'elemento di menù m. | | | | | void resize(int width, int height) | Metodo ereditato. Ridimensiona l'area del riquadro | | | | | void resize(int width, int height) | Metodo ereditato. Ridimensiona l'area del riquadro | | | | | void reshape(int x, int y, int width, int height) | Metodo ereditato. Ridimensiona e sposta l'area del riquadro | | | | | void setLayout(LayoutManager mgr) | Metodo ereditato. Imposta un Layout per la disposizione degli oggetti. | | | | | Color setBackground(Color c) | Metodo ereditato. Imposta il colore c per lo sfondo. | | | | | void hide() | Metodo ereditato. Nasconde il riquadro. | | | | | void show() | Metodo ereditato. Mostra il riquadro. | | | | | Component add(Component comp) | Metodo ereditato. Aggiunge al riquadro il componente grafico comp. . | | | GridLayout | Classe. Griglia da associare ad un riquadro o finestra. Questa griglia permette la disposizione degli oggetti secondo un modulo reticolare del quale è possibile specificare numero di righe e di colonne. Gli oggetti contenuti nelle celle assumono le dimensioni della cella stessa. | GridLayout(int rows, int cols) | Costruttore. Costruisce una griglia con un numero righe pari a rows ed un numero di colonne pari a cols. | | | GridBagConstraints | Classe. Insieme di regole da associare ad un oggetto inserito in una cella della griglia GridBagLayout. | GridBagConstraints () | Costruttore. | | | GridBagLayout | Classe. Griglia da associare ad un riquadro o finestra. Questa griglia estende le caratteristiche della GridLayout, permettendo l'inserimento di oggetti più piccoli delle celle. | GridBagLayout() | Costruttore. | | | | | void setConstraints(Component comp, GridBagConstraints constraints) | Metodo. Associa al componente grafico comp le regole constraints | | | Insets | Classe. Bordo da associare ai pannelli. | | | | | Label | Classe. Etichetta. | Label(String label, int alignment) | Costruttore. Costruisce una label e gli associa una scritta label allineata a alignment. | | | MenuBar | Classe. Barra dei Menù | MenuBar() | Costruttore. | | | | | Menu add(Menu m) | Metodo. Aggiunge un menu m alla barra di menù. | | | Menu | Classe. Menù. | Menu(String label) | Costruttore. Costruisce un Menù e gli associa una scritta label | | | | | MenuItem add(MenuItem mi) | Metodo. Aggiunge una voce di menu mi al menù. | | | | | void setLabel(String label) | Metodo ereditato. Imposta la scritta del Menù a label . | | | MenuItem | Classe. Voce di Menù. | MenuItem(String label) | Costruttore. Costruisce una voce di Menù e gli associa una scritta label | | | | | void setLabel(String label) | Metodo. Imposta la scritta della voce di Menù a label . | | | Panel | Classe. Pannello. | | | | Java.io | FileNotFoundException | Classe. Eccezione che si verifica in caso di tentativo di apertura di file non esistente. | | | | | IOException | Classe. Eccezione che si verifica in caso di errore di input/output su un file. | | | | Java.lang | Double | Classe. Numero Doppia Precisione | String toString(double d) | Metodo. Trasforma un numero in doppia precisione d in una stringa. | | | | | Double valueOf(String s) | Metodo. Trasforma una stringa s in una classe numero doppia precisione. | | | | | Double(String s) | Costruttore. Costruisce un'istanza di classe numero doppia precisione da una stringa s . | | | | | double doubleValue() | Metodo. Restituisce il valore in doppia precisione. | | | Integer | Classe. Numero Intero | int parseInt(String s) | Metodo. Trasforma una stringa s in un numero intero. | | | Math | Classe. Libreria delle funzioni matematiche. Il costruttore Math() è privato e quindi non si può creare nessuna istanza di questa classe. | double sqrt(double a) | Metodo. Effettua la radice quadrata di un numero in doppia precisione a e restituisce il numero in doppia precisione b . | | | String | Classe. Stringa di caratteri statica | int length() | Metodo. Restituisce la lunghezza della stringa. | | | | | | |
