MokaByte
Numero 11 - Settembre 1997
|
|||
|
|
||
Daniela Ruggeri |
Lo studio dei beans presenti nel pacchetto BDK fornito da JavaSoft è di grande utilità nella comprensione dei JavaBeans | ||
Introduzione.
Oltre alle API java.beans presenti nel JDK 1.1., JavaSoft ha messo a disposizione del programmatore Java un pacchetto, il Beans Development Kit attualmente alla versione 1.0. (BDK 1.0.). Questo pacchetto contiene oltre alle API java.beans un set di esempi funzionanti di JavaBeans in formato jar e un tool scritto in java (BeanBox) che permette di testare i javabeans e connetterli insieme.
I JavaBeans presenti nel pacchetto sono stati costruiti in modo da far capire le varie funzionalità presenti nel pacchetto java.beans. Essi sono:
Il
JavaBean BeanBox.
Quando
si lancia il file run.com presente nella directory \bdk\beanbox, che permette
di lanciare l'applicazione BeanBox, appaiono le finestre presenti in figura
1.
Figura 1.
Il BeanBox costituisce
un tool di sviluppo dove testare i JavaBeans.
La finestra
più grande (BeanBox) rappresenta l'ambiente dove accadono le azioni.
E qui che vengono testati i JavaBeans. Questa finestra è anche fornito
di un menù:
L'ultima finestra (PropertySheet) è quella delle proprietà, e permette di vedere e cambiare il valore delle proprietà associate al JavaBean che si sta testando. Poiché il BeanBox stesso è un JavaBean, ed è l'unico nella figura ad essere presente e ad essere selezionato, possiamo notare le sue proprietà ossia foreground, background, font e name.
Il BDK contiene 3 JavaBeans bottoni:
Figura 2.
Si tratta di
un JavaBean consistente in un'animazione che inizia il movimento o lo finisce
rispettivamente con i metodi start() e stop().
Questo JavaBean
è usato per testare la propagazione dell'evento ActionEvent.
Infatti se si
hanno dei componenti bean che non producono alcun effetto visivo del loro
lavoro, è possibili connetterli allo start() del Juggler quando
lavorano correttamente, per renderlo così evidente ai nostri occhi.
Nella figura
3. ci sono 2 bottoni, uno associato allo start() del Juggler e uno associato
allo stop(). Premendo quindi il primo bottone si dà il via all'animazione
e premendo il secondo la si ferma. In questo modo si rende evidente ai
nostri occhi il corretto funzionamento dell'evento ActionEvent scaturito
dai 2 bottoni.
L'esempio è stato realizzato connettendo gli eventi actionPerformed dei due bottoni rispettivamente ai metodi startJuggling e stopJuggling del bean Juggler.
Questo bean è
importante perché dimostra che un JavaBean può anche fare
a meno di un'iterfaccia GUI, cioè può anche essere totalmente
invisibile.
Naturalmente
poiché la completa invisibilità al momento dello sviluppo
risulterebbe estremamente inefficace, in questa fase il javabean è
visibile mediante una box con il suo nome, come mostrato nella figura 4.
Il JavaBean
TickTock non è altro che un timer, cioè un orologio che scandisce
impulsi.
Come un orologio
a cristalli liquidi in un ciruito elettronico, si può usare questo
Javabean per sincronizzare eventi di qualsiasi natura. Per esempio si può
utilizzare per far apparire una piccola label tipo baloon sui bottoni di
una barra di strumenti, quando il mouse passa su di essi (evento MOUSE_MOVE);
questo bean servirebbe in tal caso a far apparire la label non subito ma
dopo un certo numero di secondi.Questo esempio combina due proprietà
(intervallo e secondi), l'evento focalizzato e un thread. Notare nella
figura 5 nella finestra delle proprietà, appare solo la proprietà
intervallo (interval), questo perché il BeanBox permette solo di
vedere le proprietà aggiornabili e non quelle di sola lettura come
i secondi.
Figura 4.
Il
JavaBean ChangeReporter
Questo JavaBean
serve a visualizzare i valori delle proprietà appartenenti ad altri
bean quando si verifica un cambiamento delle stesse.Il ChangeReporter è
un'estensione della classe TextField, e per questo visualizza la
proprietà in un campo TextField.Nella figura 5. possiamo notare
un ChangeReporter che visualizza il valore della proprietà secondi
(second) del JavaBean TickTock, proprietà di sola lettura.
Figura 5.
La cosa si realizza connettendo l'evento PropertyChange del bean TickTock al metodo reportChange del bean ChangeReporter,
Il
JavaBean JellyBean
Questo Javabean
(Figura 6.) ha un speciale tipo di proprietà cioè la proprietà
condizionata (priceInCents). Il suo unico scopo è quello
di dimostrare questo tipo di proprietà.
Il suo utilizzo
è spiegato più avanti.
Figura 6.
Il
JavaBean Voter
Questo JavaBean
dimostra come proprietà condizionate dette anche con divieto (vetoable)
possano essere prevenute dai cambiamenti.Il JavaBean Voter ha una proprietà
VetoAll di tipo logico (Yes o No) mediante la quale è possibile
controllare i cambiamenti di altre proprietà condizionate.
Per esempio
nella figura 7. è mostrato come il tentativo di cambiare il valore
della proprietà priceInCents dal valore predefinito 2 al valore
4 venga impedito dal bean Voter con proprietà VetoAll impostata
a True al quale JellyBean è connesso. Se si cambia la proprietà
VetoAll da true a false, i cambiamenti della proprietà priceInCents
non vengono più impediti
Figura 7.
Questo si realizza connettendo l'evento vetoableChange del bean JellyBean all'esecuzione del metodo vetoableChange del bean Vetor.Il JavaBean Voter ha una proprietà VetoA11 di tipo logico (Yes o No) mediante la quale è possibile controllare i cambiamenti di altre proprietà condizionate. Per esempio nella figura 7. è mostrato come un JavaBean Voter con la proprietà impostata a vero possa impedire i cambiamenti della proprietà priceInCents del JavaBean JellyBean al quale è connesso.
Il
JavaBean Molecule
Questo JavaBean
visualizza una rappresentazione 3-D di una molecola. Si può ruotare
la molecola cliccando e trascinando il mouse.Si può ruotare la molecola
anche connettendo 2 Bottoni ai metodi rotateX e rotateY del JavaBean. Molecule
ha il proprio MoleculeNameEditor come PropertyEditor per la proprietà
"moleculeName". Questo PropertyEditor fa scegliere tra 6 differenti semplici
molecole da visualizzare nell'area del JavaBean. Le descrizioni delle molecole
sono lette da files descrittivi (file con estensioni xyz) che il bean carica
come suoi files risorse inizialmente e ogni volta che si cambia molecola
con il PropertyEditor.
In figura 8.
è mostrato il JavaBean
Figura 8.
Il
JavaBean EventMonitor
Questo Bean
serve per catturare ogni evento intercettato da un JavaBean.
È in
pratica una sorta di monitor di tutti gli eventi che riguardano i JavaBean
interessati, e può risultare un ottimo strumento per lo sviluppo
e il debug. Per usare EventMonitor bean bisogna
1.connettere
un evento dal bean sorgente al metodo initiateEventSourceMonitoring
di EventMonitor.
2.provocare
il verificarsi dell'evento del bean (per esempio se il bean è un
bottone cliccandovi sopra si provoca l'evento MOUSE_CLICK). Non appena
il primo evento viene ricevuto dall'EventMonitor, questo si dirige verso
il bean sorgente, lo analizza, scopre tutti i diferenti tipi di eventi
e per ognuno di essi crea e registra un event listener.
Il risultato
è mostrato in figura 9.
Figura 9.
In questo esempio il bean EventMonitor appena ricevuto l'evento actionPerformed di un bean OurButton e l'evento propertyChange di un bean TickTock si registra a tutte le liste ascoltatrici che interessano i beans (nella figura per ogni lista viene visualizzata la dicitura "Listening to:" seguita dalle informazioni sulla stessa). Dopo di che EventMonitor intercetta tutti gli eventi che interessano i bean non appena si verificano (nella figura per ogni evento intercettato viene visualizzata la dicitura numero"Source:" con numero = progressivo evento, seguita dalle informazioni sull'evento).
Questo JavaBean
è un esempio di bean che non fa uso di nessun metodo del JDK 1.1.
(e nessun metodo del package java.beans) e che quindi può tranquillamente
essere stato sviluppato in un ambiente puro java 1.0.2.
Il BridgeTester è un bean di test che supporta una gran quantità di tipi di proprietà.
Questo bean si
connette ad uno specifico database attraverso un JDBC URL , esegue un’istruzione
SQL SELECT e visualizza il risultato in una tabella a video. Bisogna avere
un accesso JDBC ad un database SQL (come Oracle or Microsoft SQL Server)
per usare questo bean.
Poiché
il bean JDBC SELECT è piuttosto complesso da configurare, esso è
accompagnato da un proprio customizer che aiuta a configurarlo.
Dopo aver trascinato
il bean nella apposita finestra del BeanBox si possono impostare direttamente
le proprietà che permettono di far funzionare il bean. Se invece
si ritiene opportuno utilizzare il customizer di aiuto, selezionare il
menù Edit/Customize....
A questo punto
appare una finestra che richiede l'URL del database, il nome di un login
e la password. Dopo di che si può usare il customizer per vedere
le tabelle del database (selezionare "User tables" o "All Tables").
Il customizer
allora mostra le varie colonne della tabella scelta in modo che sia possibile
scegliere quelle che verranno visualizzate nel bean. Dopo aver scelto le
colonne, il bean viene aggiornato con il contenuto di queste colonne corrispondente
all'opportuna istruzione SQL SELECT.
In figura 11
è mostrato un esempio del bean. Un bottone OurButton è stato
connesso attraverso l’evento actionPerformed al metodo Update
del bean JDBC SELECT.
Cliccando sul
bottone si fa partire la select impostata tra le proprietà. Il risultato
della query è mostrato nella finestra del bean.
Figura 11.
Il SorterBean
è un’applet serializzata che può girare come un bean . Essa
è creata dal programma java SorterBeanWriter.java. Cliccando sul
bean si fa partire il sort. E’ possibile impostare 3 tipi di algoritmo
di sort nella proprietà algorithm :BubbleSort, Qsort
e BidirBubbleSort. Il bean è mostrato in figura 12.
Figura 12.
Questo bean usa
Java Remote Method Invocation (RMI) per contattare un server quote remoto
e visualizzare i valori di un reale o immaginario magazzino.
Per effettuare
una prova locale posizionarsi sotto la directory bdk\demo e se il sistema
operativo è Windows digitare il comando "start nmake -f quote.mk
run", se invece è Unix digitare "gnumake -f quote.mk run &".
Conclusione.
Riassumiamo
ciò che in particolare lo studio di questi beans permette di imparare:
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|