Programmazione Distribuita- Prova scritta del 13/2/04
Pag. 1/2
Cognome e Nome (in stampatello): ________________________________________________________________
Matricola: _______________
Istruzioni
•
•
Scrivere in stampatello Cognome, Nome e • Scrivere in maniera leggibile. Non scrivere nelle caselle accanto alle
Matricola su ogni foglio.
domande o a fine foglio
Usare per le risposte esclusivamente i fogli forniti. • Le domande da 1 a 4 valgono 2, la domanda 5 vale 12 punti e la
In caso di necessità si può utilizzare il retro dei
domanda 6 vale 40 punti.
fogli, scrivendo “Continua sul retro del foglio x”.
Riservato alla Commissione per la Correzione
1 2 3 4 5 6 TOTALE
2
2
2
2
12
40
60
1) Quale è la differenza tra import in Java ed include in C?
2
2) Quale è il ruolo di stub e skeleton in JAVA RMI?
2
3) Quale è la differenza tra una classe astratta ed una interface?.
2
4)
Su piattaforme di middleware eterogenee (quindi, ad.es., non Java RMI), quali sono i problemi che cerca di
risolvere il marshalling/unmarshalling?
2
5) Descrivere i 5 tipi diversi di architetture 2-tier che si possono ottenere allo spostarsi del livello di rete
12
20
Programmazione Distribuita- Prova scritta del 13/2/04
Cognome e Nome (in stampatello): ________________________________________________________________
Pag. 2/2
Matricola: _______________
6) Progettare e realizzare un programma distribuito in Java (che usi Remote Method Invocation) che realizzi una
Chat client-server a coppie (per un Club di “cuori solitari”).
La Chat deve offrire la possibilità di fare discussioni a due tra un partecipante “uomo” ed un partecipante “donna”.
Inizialmente, ogni partecipante si iscrive (comunicando il proprio sesso) al server che provvederà a costruire le coppie:
invierà a ciascuno dei due partecipanti il riferimento remoto dell’altro in modo che essi possano “chattare” solamente
tra di loro (direttamente, senza l’apporto del server). Ad ogni iscrizione presso il server, il server controllerà se esistono
client in attesa (dell’altro sesso): se esistono crea una coppia e li mette in grado di fare chat, altrimenti mette il client
appena iscritto in una lista di attesa (coda FIFO), in attesa che qualche altro client si iscriva. Opzionalmente, si può
gestire la situazione in cui un partecipante in una coppia esce (con il comando quit) e l’altro partecipante viene
automaticamente inviato per una re-iscrizione al server che lo mette in grado di fare chat con un altro partecipante
oppure lo mette in lista di attesa, a seconda della disponibilità.
Si può assumere: (a) che ogni client abbia conoscenza della locazione del server (su linea di comando oppure con una
costante) (b) che dove necessario sia disponibile un rmiregistry. Si deve consegnare:
ƒ
ƒ
ƒ
Una breve descrizione della applicazione, usando anche un diagramma delle classi in UML.
Una breve descrizione della implementazione dei meccanismi usati per: iscrizione alla chat, gestione del gioco,
fine del gioco.
I listati di ogni classe Java, con una breve descrizione per ogni classe.
ATTENZIONE: si richiede ordine e buona strutturazione delle classi secondo i principi della programmazione e oggetti.
Inoltre è necessario scrivere il codice seguendo le regole e le convenzioni di scrittura di programmi Java, non ultima la
necessità di indentare correttamente e di commentare il codice.
40