Sunteți pe pagina 1din 2

Laborator 2

Obiectiv – crearea de abilităţi practice de lucru în limbajul Java cu:

 Obiecte instanţiate cu ajutorul constructorilor impliciţi şi expliciţi


 Metode supraîncărcate
 Cuvântul cheie „this” utilizat în cazul:
o Referirii la obiectul curent în cadrul definiţiei unei metode („this. „)
o Apelului unui constructor din cadrul altui constructor („this()”)
 Iniţializarea datelor primitive/neprimitive în cadrul claselor/metodelor
 Iniţializarea masivelor de primitive/referinţe obiecte

Suport bibliografic minimal – cursul nr.1

Indicaţii de lucru:

 Se vor exersa exemplele din curs ori de câte ori se va simţi nevoia, pentru înţelegerea
modului de lucru specific platformei Java
 Elementele fiecărui enunţ se vor adăuga gradual în cod

Probleme propuse:

Prb.1. Să se creeze clasa Student (vezi diagrama) ce conține 3 câmpuri (numeStudent,


numarMatricol și anStudiu), 4 constructori expliciți și 2 metode (printStudent și isValidStudent).
Câmpurile vor trebui iniţializate prin intermediul constructorilor; implicit anul de studiu este 1 și numărul
matricol este 0.

Task 1. Creați clasa TestPrb1 cu metoda main care să ilustreze crearea obiectelor de tip Student
folosind toate variantele de constructori. Constructorul ce primește ca parametru un obiect de tip
Student este folosit pentru a construi o copie la studentul dat.
Task 2. Se dezvoltă și apelează printStudent pentru fiecare obiect Student, prin care se afișează
numele, numărul matricol, anul și dacă studentul este valid; un student este invalid daca are un
1
câmp pe valoarea implicită inițializată de constructorul implicit (se dezvoltă metoda
isValidStudent).
Task 3. Unde este posibil refolosiți constructorii în interiorul altor constructori; de exemplu,
constructorul Student(Student) este folosit pentru a crea o copie. Câți constructori pot fi apelați?
Task 4. Ce deosebire există între iniţializarea datelor unei clase la locul de definiţie al acestora,
respectiv în cadrul metodei constructor? Ilustraţi această concluzie (sugestie: apelați printStudent în
constructori).
Task 5. Dacă în metoda isValidStudent definim două variabile neinițializate de tip bool și double,
ce valori implicite au?
Task 6. Dacă mai adăugăm încă un constructor de forma Student(String, float), sunt echivalenţi cei
2 constructori expliciţi din punct de vedere al supraîncărcării metodelor? Demonstraţi.

Prb.2. Creaţi o clasă numită Test ce conţine un câmp private de tip String iniţializat prin
intermediul constructor (vezi diagrama). Creaţi clasă Ini ce conţine 4 obiecte de tip Test (2 statice, 2
nestatice) amplasate înainte (1 static), în constructor (1 nestatic) şi după constructor (1 static,1
nestatic) şi iniţializate la locul de definiţie. Clasa Ini are un singur constructor explicit prin intermediul
căruia se face instanţierea obiectului Test din cadrul constructorului.

Creaţi clasă principală TestPrb2 unde în main se construiesc două obiecte de tip Ini. Justificaţi
ordinea iniţializărilor din clasa Ini.

Observaţie: introduceţi instrucțiuni de afişare în constructorul de la Test.

Prb.3. Creaţi clasa MyClass ce conţine câmpul de dată de tip referinţă la un masiv de întregi z,
iniţializat pe valorile {1,2,3,4}. Creaţi clasa principală TestPrb3 ce permite iniţializarea clasei
MyClass şi afişarea valorilor masivului. Reluaţi problema pentru un masiv cu elemente de tip
String pe valorile „unu”, „doi”, „trei”, „patru”.

S-ar putea să vă placă și