Diferență între revizuiri ale paginii „POO Lab Lucrarea 4”
De la WikiLabs
Jump to navigationJump to searchLinia 15: | Linia 15: | ||
== Cerințe == | == Cerințe == | ||
− | # Realizați o clasă numită | + | # Realizați o clasă numită <code style="color: green">seriaf.poo.client.ClientPeer</code> cu următoarele restricții: |
#* Constructorul clasei trebuie să ia ca argumente un String reprezentând un nume de utilizator (expeditorul mesajelor) și o referință la un obiect de tip Socket, deja conectat. | #* Constructorul clasei trebuie să ia ca argumente un String reprezentând un nume de utilizator (expeditorul mesajelor) și o referință la un obiect de tip Socket, deja conectat. | ||
#* Clasa trebuie să aibă două metode: | #* Clasa trebuie să aibă două metode: | ||
− | #** <code>void sendMessage(String message)</code> - creează un obiect de tip Message și il serializează folosind socket-ul disponibil. | + | #** <code style="color: green">void sendMessage(String message)</code> - creează un obiect de tip Message și il serializează folosind socket-ul disponibil. |
− | #** <code>void sendMessage(String message, String recipient)</code> - creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil. | + | #** <code style="color: green">void sendMessage(String message, String recipient)</code> - creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil. |
# Realizați o clasă numită '''seriaf.poo.client.TextClient''', executabilă, care să realizeze următoarele funcții: | # Realizați o clasă numită '''seriaf.poo.client.TextClient''', executabilă, care să realizeze următoarele funcții: | ||
#* Metoda main din clasă trebuie să citească de la tastatură un String reprezentând un nume de utilizator | #* Metoda main din clasă trebuie să citească de la tastatură un String reprezentând un nume de utilizator |
Versiunea de la data 11 noiembrie 2015 14:10
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 limbajului Java; Structura lexicală a unui program
- Convenții de programare
- Noțiuni avansate de programare obiect-orientată
- Java Application Programming Interface (API)
- Stream-uri de Input/Output
- Tratarea excepțiilor
- Serializarea obiectelor
- Socket-uri de rețea
Cerințe
- Realizați o clasă numită
seriaf.poo.client.ClientPeer
cu următoarele restricții:- Constructorul clasei trebuie să ia ca argumente un String reprezentând un nume de utilizator (expeditorul mesajelor) și o referință la un obiect de tip Socket, deja conectat.
- Clasa trebuie să aibă două metode:
void sendMessage(String message)
- creează un obiect de tip Message și il serializează folosind socket-ul disponibil.void sendMessage(String message, String recipient)
- creează un obiect de tip PrivateMessage și il serializează folosind socket-ul disponibil.
- Realizați o clasă numită seriaf.poo.client.TextClient, executabilă, care să realizeze următoarele funcții:
- Metoda main din clasă trebuie să citească de la tastatură un String reprezentând un nume de utilizator
- Metoda main din clasă trebuie să deschidă apoi un Socket la adresa localhost (127.0.0.1) pe portul 9000
- Metoda main din clasă trebuie să instanțieze un obiect de tip ClientPeer
- Cât timp conexiunea este activă, să citească de la tastatură (folosind clasa Console - vezi System.console()) șiruri de caractere cu care apoi să apeleze metodele sendMessage de mai sus (Notă: Pentru a trimite mesaje private, utilizatorul trebuie să introducă un text de forma
/w John Hello!
care specifică un mesaj privat către user-ul John, cu conținutul "Hello!"). - Procesul se poate încheia dacă mesajul introdus de la tastatură este
/q
- Realizați o clasă numită ServerPeer cu următoarele restricții:
- Constructorul clasei trebuie să ia ca argument o referință la un obiect de tip Socket, deja conectat.
- Cât timp conexiunea nu este întreruptă, să se deserializeze obiecte de tip Message și să se afișeze formatat pe ecran.
- Realizați o clasă numită Server, executabilă, cu următoarele restricții:
- Metoda main din această clasă trebuie să folosească un obiect de tip ServerConfig pentru a citi un număr de port din fișierul de configurație;
- Folosind numărul de port de la punctul anterior, să deschidă un ServerSocket.
- Odată conectat un client, se creează un obiect de tip ServerPeer, folosing Socket-ul obținut din ServerSocket care va citi obiectele de pe stream, conform punctului 3 de mai sus.
- Adaptați clasele Message și PrivateMessage astfel încât să poată fi serializate.