next up previous
Next: Parte VI: creiamo un Up: Parte V: definizione di Previous: La classe ChatRoom


I comandi eseguibili su una chat room

Si definisca una interfaccia ChatRoomCommand che richieda l'implementazione del metodo

public Message execCRC(ChatRoom chatRoom, Object opt_param);
Il parametro opt_param permette, se necessario, di passare un parametro opzionale al metodo execCRC nell'eventualità che questo fosse utile. Quindi si definiscano le seguenti classi che implementano l'interfaccia ChatRoomCommand, una per ogni possibile comando eseguibile su di un oggetto di tipo ChatRoomCommand: Per esempio, la classe Send2AllCRC potrebbe essere realizzata nel seguente modo:
public class Send2AllCRC implements ChatRoomCommand {
    private Message2All message;
    public Send2AllCRC(Message4All message) {
       this.message = message;
    }
    public ... get...
    public void set...
    public Message execCRC(ChatRoom chatRoom, Object opt_param) {
       Message answer = new Message();
       answer.setFrom(chatRoom.chatRoomName());
       try {
           chatRoom.send2All(message);
           answer.setMessageText(``Send2AllCRC done!'');
       } catch (ChatRoomException err) {
           answer.setMessageText(``Send2AllCRC failed: '' + err.getMessage());
       }           
       return answer;
    }
}
Le altre classi sono del tutto analoghe.

Infine definire una semplice classe SimpleChatServer che crea un oggetto di tipo ChatRoom ed invoca su di esso alcuni comandi in un metodo main. Ad esempio, supponiamo di voler creare due utenti, @matteo e @cristina, che si collegano e parlano attraverso il nostro chat server. Il metodo main di SimpleChatServer dovrebbe contenere tra le altre le seguenti istruzioni:

...
ChatRoom ChatRoom = new ChatRoom(``Laboratorio di Progr. in Rete'');
...
// creazione degli utenti nella chat room
User matteo = new Utente(``@matteo'');
User cristina = new Utente(``@cristina'');
...
// creazione del comando GetIntoRoomCRC
ChatRoomCommand getIntoRoomCRCMatteo = new GetIntoRoomCRC(matteo);
... 
// esecuzione dei comandi GetIntoRoomCRC
getIntoRoomCRCMatteo.execCRC(chatRoom, null);
...
// creazione di un messaggio
Message4All mes1 = new Messagge4All(matteo, " testo ");
...
// creazione del comando di invio a tutti di un messaggio
ChatRoomCommand send2AllCRC1 = new Send2AllCRC(mes1)
... 
// esecuzione dell'invio di send2AllCRC1
send2AllCRC1.exeCRC(chatRoom, null);
...
// creazione del comando di lettura di un messaggi
ChatRoomCommand receiveCRC1 = new ReceiveCRC(cristina);
... 
// esecuzione del comando receiveCRC1 e stampa del risultato
System.out.println(receiveCRC1.execCRC(chatRoom, null));
...
La necessità di passare come parametro attuale del metodo execCRC un oggetto di tipo ChatRoom sarà chiara nella Sezione 2.6.


next up previous
Next: Parte VI: creiamo un Up: Parte V: definizione di Previous: La classe ChatRoom
Baldoni Matteo 2003-05-08