Parte II: la classe MessageBox
Figure:
Diagramma delle classi della seconda e terza parte del progetto.
|
Si definisca una classe MessageBox come in Figura 8
che contenga i campi:
- owner:
di tipo AgentID che specifica il proprietario della casella postale;
- box:
di tipo java.util.List
E
(si scelga l'implementazione preferita,
ArrayList
E
, LinkedList
E
, Vector
E
ma il campo box deve essere di tipo List
E
) che rappresenta
la coda dei messaggi ricevuti dall'utente proprietario della casella;
ed i metodi:
- ``set'' e ``get'' per il campi sopra introdotti;
- boolean isBoxEmpty():
restituisce true se box è vuota,
- Message readMessage():
restituisce il primo oggetto di tipo Message in
coda su box (il più vecchio in attesa);
false altrimenti;
- Message readMessage( ...):
restituisce il primo oggetto di tipo Message in coda su
box che soddisfa i requisiti specificati dai suoi parametri.
Si noti che tutte le readMessage tolgono il messaggio letto dalla coda;
- boolean isThereMessage( ...):
restituisce true se è presente un messaggio
in coda su box che soddisfa i requisiti specificati
dai suoi parametri;
- void writeMessage(Message message):
inserisce in coda alla casella il messaggio passato come parametro.
Si faccia uso, ogni volta possibile, dei nuovi costrutti introdotti
in Java2 5.0, come for ( : ).
Si noti che readMessage è sovraccarico, cioè si
realizzino più metodi, ad esempio, uno che prelevi il primo
messaggio in coda, uno che restituisce il primo messaggio in coda
inviato da un certo agente, uno che prelevi il primo messaggio
di un certo tipo, uno che prelevi il primo messaggio inviato
da un agente di una certa categoria, uno che prelevi il primo messaggio
inviato da un agente di una certa categoria e di un certo tipo.
In modo analogo si ripeta la stessa cosa per il metodo
isThereMessage.
Si provi a cambiare il tipo di implementazione per il campo box
(ad esempio, ArrayList
E
anzichè Vector
E
) e si verifichi
che ancora tutto funzioni.
baldoni
2005-01-13