POO Lab Lucrarea 2: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 11: Linia 11:
== Cerințe ==
== Cerințe ==


* Adăugați clasei '''Message''' doi constructori accesibili tuturor claselor, unul care să aibă argumente pentru toate cele trei câmpuri ('''receiver''', '''sender''' și '''content'''), iar unul care să aibă argumente doar pentru expeditor și conținut, destinatarul păstrând valoarea implicită '''null''';
== Cerințe ==
* Adăugați modificatori de access membrilor clasei astfel încât:
 
** cele 3 câmpuri să fie accesibile doar clasei; încapsulați câmpurile adăugând metode ''getters'' accesibile tuturor claselor;
* Să se scrie o clasă '''PrivateMessage''' ce va fi folosită ca purtătoare de date între un client de chat și un anumit destinatar, care să aibă următoarele proprietăți:
** metoda '''print()''' să fie accesibilă tuturor claselor.
** Să stocheze numele expeditorului, un conținut și numele destinatarului;
* Suprascrieți metoda '''toString()''' definită în clasa '''java.lang.Object''' astfel încât să întoarcă un șir de caractere formatat în genul mesajelor din programele de chat: ''<expeditor>: <conținut>'';
** Să fie imutabilă (odată creat un obiect, conținutul acestuia să nu mai poată fi modificat);
* Scrieți o clasă '''SystemMessage''', care să extindă clasa '''Message'''. '''SystemMessage''' trebuie conțină în plus un câmp de tip ''int'' numit '''type''', accesibil doar clasei, și o metodă ''getter'' pentru acest câmp, accesibilă tuturor claselor;
** Să permită extragera din obiectele de tip PrivateMessage ale unui mesaj formatat în modul specific mesajelor private în aplicațiile de chat: "(priv) expeditor: continut"
* Adăugați clasei '''SystemMessage''' 2 constructori accesibili tuturor claselor, unul care să ia ca argument doar o valoare pentru inițializarea câmpului "type", și al doilea două valori, pentru inițializarea câmpurilor '''type''' și '''sender'''; vezi [[Sintaxa limbajului Java; Structura lexicală a unui program#Constructorii claselor]] și [[Sintaxa limbajului Java; Structura lexicală a unui program#Cuvintele cheie this și super]];
** Să existe un mod prin care să se poată obține destinatarul pentru orice obiect de tip PrivateMessage.
* Adăugați clasei '''SystemMessage''' 3 constante de clasă, de tip '''int''', cu valorile 0, 1 și 2, care au numele ''TYPE_ERROR'', ''TYPE_OK'', și ''TYPE_CHANGE_NAME'';
 
* Suprascrieți metoda '''toString()''' definită în clasa '''Message''' astfel încât nu întoarcă decât câmpul '''type''' (ca String);
* În clasa '''Main''' deja existentă, se instanțieze cel puțin trei obiecte de tip '''PrivateMessage''' și să afișeze stringul formatat și destinatarul pentru fiecare.
* Modificați instanțierile din metoda '''main''' din clasa '''TestClass''' astfel încât să folosească apelul noilor constructori și adăugați încă 3 instanțieri de obiecte de tip '''SystemMessage''' pe care să le afișați în consolă folosindu-vă de metoda '''toString()'''.
 
Note:
* Fiecare clasă și membru trebuie să aibă unul din modificatorii de access ''public'', ''private'' sau protected.
* Numele claselor trebuie sa fie conform cu cele specificate mai sus.
* Utilizați mecanismele de moștenire și suprascriere.
 
Predare:
* Tema se predă atașând exclusiv fișierele sursă Java unui e-mail trimis la adresa radu.hobincu@upb.ro.
* Subiectul email-ului va fi: [POO_2]
* Corpul email-ului va conține numele și grupa expeditorului, și orice alt comentariu pe care doriți -l faceți despre temă.
* <font color="red">'''Atenție:'''</font> Orice nerespectare ale indicațiilor de predare poate duce la pierderea în totalitate a punctajului.

Versiunea de la data 13 noiembrie 2014 13:28

Noțiuni și cunoștințe necesare

Cerințe

Cerințe

  • Să se scrie o clasă PrivateMessage ce va fi folosită ca purtătoare de date între un client de chat și un anumit destinatar, care să aibă următoarele proprietăți:
    • Să stocheze numele expeditorului, un conținut și numele destinatarului;
    • Să fie imutabilă (odată creat un obiect, conținutul acestuia să nu mai poată fi modificat);
    • Să permită extragera din obiectele de tip PrivateMessage ale unui mesaj formatat în modul specific mesajelor private în aplicațiile de chat: "(priv) expeditor: continut"
    • Să existe un mod prin care să se poată obține destinatarul pentru orice obiect de tip PrivateMessage.
  • În clasa Main deja existentă, să se instanțieze cel puțin trei obiecte de tip PrivateMessage și să afișeze stringul formatat și destinatarul pentru fiecare.

Note:

  • Fiecare clasă și membru trebuie să aibă unul din modificatorii de access public, private sau protected.
  • Numele claselor trebuie sa fie conform cu cele specificate mai sus.
  • Utilizați mecanismele de moștenire și suprascriere.

Predare:

  • Tema se predă atașând exclusiv fișierele sursă Java unui e-mail trimis la adresa radu.hobincu@upb.ro.
  • Subiectul email-ului va fi: [POO_2]
  • Corpul email-ului va conține numele și grupa expeditorului, și orice alt comentariu pe care doriți să-l faceți despre temă.
  • Atenție: Orice nerespectare ale indicațiilor de predare poate duce la pierderea în totalitate a punctajului.