Parte V: la classe JAMAgent
In questa parte del laboratorio incominceremo a realizzeremo la
classe JAMAgent utilizzata nell'esempio dell'asta per definire
la classe Banditore e ClientAgent.
Si definisca la classe JAMAgent contenente i campi:
- myMessageBox: di tipo MessageBox;
- myID: di tipo AgentID;
- asdl: di tipo ADSL;
- ip: di tipo String,
contenente l'indirizzo IP dello rmiregistry;
- port: di tipo int, contiene il numero della porta su cui è
disponibile lo rmiregistry all'indirizzo ip.
Si scelgano gli opportuni qualficatori di visibilità e
si definiscano, se lo si ritiene necessario, i metodi get e set.
Si definiscano inoltre i seguenti metodi (scegliendo l'opportuno qualificatore
di visibilità):
- void init():
effettua la lookup presso lo rmiregistry
all'indirizzo ip/port dell'oggetto
ADSL di nome ADSL e memorizza tale riferimento
remoto in adsl, quindi, se tutto è
andato bene, iscrive presso l'ADSL l'oggetto
di tipo MessageBox myMessageBox.
- void destroy():
effettua la rimozione della casella myMessageBox dall'ADSL;
- boolean isThereMessage():
restituisce true se vi sono messaggi in myMessageBox,
false altrimenti;
- void send( ...):
richiede all'ADSL mediante il metodo getRemoteMessageBox(es)
l'oggetto/i di tipo RemoteMessageBox il cui proprietario
è specificato dal receiver del messaggio message,
su tali oggetti invoca la writeMessage di message.
Si noti che esistono almeno tre diversi metodo send, uno per ogni tipo
di messaggio inviato (Message4You, Message4Some e Message4All).
ATTENZIONE nel caso si fosse adottata la semplificazione suggerita
nella realizzazione del metodo getRemoteMessageBoxes;
- Message receive( ...):
legge della propria casella myMessageBox un messaggio mediante
il metodo readMessage() con le caratteristiche specificate
dai parametri (nessuna, tipo messaggio, sender, categoria, sender e tipo, categoria e tipo).
Si definiscano quindi i seguenti costruttori:
- public JAMAgent(String name, String role, String ip, int port):
dove name è il nome dell'agente, role il suo ruolo,
ip contiene l'indirizzo IP dello rmiregistry e port la porta
dello rmiregistry, il costruttore inizializza gli opportuni campi
creando l'oggetto myID e myMessageBox;
- public JAMAgent (String name, String role):
come sopra ma si assume per l'IP il valore 127.0.0.1 e 1099 per
la porta;
- public JAMAgent(AgentID agentID):
come sopra dove però l'oggetto myID è passato come parametro.
baldoni
2005-01-13