Ingineria Sistemelor de Programe

Documentatie suplimentara, ISP, Seria B si SM

View on GitHub

Exerciții și întrebări - concepte OOP de baza

1. Clasa și Obiect

Exercițiu: Creează o clasă Masina care are următoarele atribute: marca, model, anFabricatie. Adaugă un constructor pentru inițializarea atributelor și o metodă afiseazaDetalii() care afișează informațiile despre mașină. Instanțiază două obiecte de tip Masina și apelează metoda afiseazaDetalii().

2. Constructori

Întrebare: Ce caracteristici trebuie să respecte un constructor?

Exercițiu: Extinde clasa Masina adăugând un constructor implicit care setează valori implicite pentru atribute.

3. Atribute

Întrebare: Care este diferența dintre un atribut de instanță și un atribut static?

Exercițiu: Adaugă un atribut static numarTotalMasini în clasa Masina, care contorizează câte instanțe au fost create. Incrementarea trebuie să se facă în constructor.

4. Metode

Întrebare: Care este diferența dintre o metodă statică și o metodă de instanță?

Exercițiu: Adaugă o metodă statică getNumarTotalMasini() care returnează numărul total de mașini create.

5. Convenții Java

Întrebare: Care sunt regulile de numire a claselor, metodelor și atributelor în Java?

6. Cuvinte cheie

new

Întrebare: Ce se întâmplă la nivel de memorie atunci când se creează un obiect folosind new?

null

Întrebare: Ce se întâmplă dacă apelăm o metodă pe un obiect care este null?

Exercițiu: Scrie un exemplu de cod care generează NullPointerException.

this

Exercițiu: Modifică constructorul clasei Masina astfel încât să folosească this pentru a face diferența între atribute și parametri.

static

Întrebare: De ce metodele statice nu pot accesa direct atributele de instanță?

final

Întrebare: Ce se întâmplă dacă un atribut este declarat final? Poate fi modificat după inițializare?

7. Principiul Încapsulării

Întrebare: Ce beneficii oferă principiul încapsulării?

Exercițiu: Modifică clasa Masina astfel încât atributele să fie private și oferă metode getter și setter pentru accesarea lor.

8. Supraîncărcarea Metodelor

Întrebare: Cum determină Java care versiune a unei metode supraîncărcate trebuie apelată?

Exercițiu: Adaugă în clasa Masina metode supraîncărcate setDetalii() care permit setarea atributelor folosind diferite combinații de parametri.

9. Compararea Obiectelor

Întrebare: Care este diferența dintre == și equals() la compararea obiectelor?

Exercițiu: Suprascrie metoda equals() în clasa Masina astfel încât două mașini să fie considerate egale dacă au aceeași marcă și model.

10. Specificatori de Acces

Întrebare: Care sunt diferențele dintre public, private, protected și default în Java?

Exercițiu: Creează o clasă Vehicul cu atribute protected și extinde-o în clasa Masina. Verifică dacă aceste atribute pot fi accesate din subclasa Masina.

11. Garbage Collector

Întrebare: Ce rol are Garbage Collector în Java și cum poate fi apelat manual?

Exercițiu: Scrie un program în care creezi și elimini mai multe obiecte pentru a observa comportamentul Garbage Collector-ului folosind System.gc().