Next: Parte VI: un'interfaccia per
Up: Descrizione dettagliata delle parti
Previous: ADSLMonitor osservatore di ADSLImpl
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 areThereMessages():
restituisce true se vi sono messaggi in myMessageBox,
false altrimenti;
- void send(Message message):
richiede all'ADSL mediante il metodo getRemoteMessageBox l'oggetto di tipo
RemoteMessageBox il cui proprietario è il destinatario del messaggio
message, su tale oggetto restituito invoca la writeMessage di message.
- Message receive():
legge della propria casella myMessageBox un messaggio mediante
il metodo readMessage() e lo restituisce;
- Message receive(AgentID agentID):
come per il metodo receive ma il messaggio letto ha come sender
agentID;
- Message receive(int type):
come per il metodo receive ma il messaggio letto ha tipo type;
- Message receive(int type, AgentID agentID):
come per il metodo receive ma il messaggio letto ha tipo type
e il sender è agentID.
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.
Next: Parte VI: un'interfaccia per
Up: Descrizione dettagliata delle parti
Previous: ADSLMonitor osservatore di ADSLImpl
Matteo Baldoni
2004-03-19