Diferență între revizuiri ale paginii „POO Lab Lucrarea 5”

De la WikiLabs
Jump to navigationJump to search
(Pagină nouă: == Noțiuni și cunoștințe necesare == * Paradigma Obiect-Orientare; Clase și obiecte * Noțiuni despre Java * Realizarea și execuția unui program Java * [[Sintaxa l...)
 
Linia 22: Linia 22:
 
** să centralizeze toate obiectele de tip '''Message''' de la toți '''ClientPeer''', și să le paseze mai departe la aceștia;
 
** să centralizeze toate obiectele de tip '''Message''' de la toți '''ClientPeer''', și să le paseze mai departe la aceștia;
 
** să elimine automat din lista de clienți pe cei care s-au deconectat;
 
** să elimine automat din lista de clienți pe cei care s-au deconectat;
* Modificați clasa '''Client''' astfel încât, pe lângă funcționalitatea anterioară, să deserializeze în continuu obiecte de tip '''Message''' de pe stream și să le afișeze în consolă.
+
* Modificați clasa '''Client''' astfel încât, pe lângă funcționalitatea anterioară, să deserializeze în continuu obiecte de tip '''Message''' de pe stream și să le afișeze în consolă. În plus, la fiecare conectare, se trimite server-ului un obiect de tip '''SystemMessage''' unde câmpul '''sender''' trebuie să conțină numele clientului. Dacă răspunsul este '''TYPE_ERROR''', programul se încheie.

Versiunea de la data 13 iulie 2012 07:06

Noțiuni și cunoștințe necesare

Cerințe

  • Scrieţi o clasă ServerPeer, de tip fir de execuţie, care să administreze o conexiune cu un client. Această clasă trebuie să poată deserializa obiectele de tip Message trimise de către clientul asociat și să conțină o metodă care să poată trimite obiecte de tip Message către client (dacă numele clientului este identic cu câmpul receiver din mesaj, sau acesta este null), și să stocheze numele clientului. Numele clientului se modifică doar când se primește de la client un obiect de tip SystemMessage unde câmpul type are valoarea TYPE_CHANGE_NAME. Dacă numele nu este deja utilizat de alt client, se face modificarea și se răspunde clientului cu un obiect de de tip SystemMessage unde câmpul type are valoarea TYPE_OK, altfel, se răspunde cu un obiect de tip SystemMessage unde câmpul type are valoarea TYPE_ERROR.
  • Modificați clasa Server astfel încât:
    • să conțină referințe la obiecte de tip ServerPeer, câte un obiect pentru fiecare client conectat;
    • să creeze câte un obiect nou de tip ServerPeer și să le pornească pe fiecare ca fir execuție;
    • să centralizeze toate obiectele de tip Message de la toți ClientPeer, și să le paseze mai departe la aceștia;
    • să elimine automat din lista de clienți pe cei care s-au deconectat;
  • Modificați clasa Client astfel încât, pe lângă funcționalitatea anterioară, să deserializeze în continuu obiecte de tip Message de pe stream și să le afișeze în consolă. În plus, la fiecare conectare, se trimite server-ului un obiect de tip SystemMessage unde câmpul sender trebuie să conțină numele clientului. Dacă răspunsul este TYPE_ERROR, programul se încheie.