Extras din laborator
1. Obiective
- Formarea unei imagini generale, preliminare, despre programarea orientată pe obiecte (POO) și deprinderea cu noile facilitați oferite de limbajul C++.
- Studierea principalelor concepte (caracteristici) ale POO.
- Crearea unei aplicații de tip consolă în limbajul de programare C++.
2. Sarcina lucrării
Să se creeze clasa Group - grupa, care conține informația despre codul grupei, specialitatea, numărul de studenți, curatorul grupei și anul de studii. Să se utilizeze memoria dinamică pentru setarea cîmpurilor textuale. Să se definească: toate tipurile de constructori; funcțiile de schimbare a curatorului și a numărului de studenți. Să se definească funcția de setare a anului de studii în așa fel, încît valoarea acestui cîmp să poată fi mărită și să nu depășească cifra 5.
3. Teoria
Programarea orientată pe obiecte (POO, uneori și Programarea orientată obiect, uneori denumită ca și în limba engleză, Object Oriented Programming (OOP)) este o paradigmă de programare, axată pe ideea încapsulării, adică grupării datelor și codului care operează asupra lor, într-o singură structură. Un alt concept important asociat programării orientate obiect este polimorfismul, care permite abstractizări ce permit o descriere conceptuală mai simplă a soluției.
Principiile de bază sunt:
- Abstractizarea - Este posibilitatea ca un program să ignore unele aspecte ale informației pe care o manipulează, adică posibilitatea de a se concentra asupra esențialului. Fiecare obiect în sistem are rolul unui “actor” abstract, care poate executa acțiuni, își poate modifica și comunica starea și poate comunica cu alte obiecte din sistem fără a dezvălui cum au fost implementate acele facilitați. Procesele, funcțiile sau metodele pot fi de asemenea abstracte, și în acest caz sunt necesare o varietate de tehnici pentru a extinde abstractizarea:
- Încapsularea - numită și ascunderea de informații: Asigură faptul că obiectele nu pot schimba starea internă a altor obiecte în mod direct (ci doar prin metode puse la dispoziție de obiectul respectiv); doar metodele proprii ale obiectului pot accesa starea acestuia. Fiecare tip de obiect expune o interfață pentru celelalte obiecte care specifică modul cum acele obiecte pot interacționa cu el.
- Polimorfismul - Este abilitatea de a procesa obiectele în mod diferit, în funcție de tipul sau de clasa lor. Mai exact, este abilitatea de a redefini metode pentru clasele derivate. De exemplu pentru o clasă Figura putem defini o metodă arie. Dacă Cerc, Dreptunghi, etc. ce vor extinde clasa Figura, acestea pot redefini metoda arie.
- Moștenirea - Organizează și facilitează polimorfismul și încapsularea, permițând definirea și crearea unor clase specializate plecând de la clase (generale) deja definite - acestea pot împărtăși (și extinde) comportamentul lor, fără a fi nevoie de a-l redefini. Aceasta se face de obicei prin gruparea obiectelor în clase și prin definirea de clase ca extinderi ale unor clase existente. Conceptul de moștenire permite construirea unor clase noi, care păstrează caracteristicile și comportarea, deci datele și funcțiile membru, de la una sau mai multe clase definite anterior, numite clase de bază, fiind posibilă redefinirea sau adăugarea unor date și funcții noi. Se utilizează ideea: ”Anumite obiecte sunt similare, dar în același timp diferite”. O clasă moștenitoare a uneia sau mai multor clase de bază se numește clasă derivată. Esența moștenirii constă în posibilitatea refolosirii lucrurilor care funcționează.
4. Întrebări
1. Explicați termenul de inițializare.
Crearea unui clase cu scopul de a manipula datele.
2. Ce este încapsularea?
Incapsularea nu reprezinta altceva decat proprietatea claselor de obiecte de a grupa sub aceeasi structura datele si metodele aplicabile asupra datelor. In sensul programarii orientata pe obiecte, incapsularea defineste, de asemenea, modalitatea in care diversele obiecte si restul programului se pot referi la datele specifice obiectelor. Dupa cum s-a precizat clasele din C++ permit separarea datelor in date private si date publice. Programele utilizatorilor pot accesa si utiliza datele unui obiect, declarate private, numai prin utilizarea unor metode definite public. Separarea datelor in sectiuni de date publice si private datermina protejarea datelor fata de utilizarea lor eronata in programe.
3. Ce cuvinte cheie se utilizează pentru definirea constructorului și a destructorului?
Constructorul se defineste utilizind doar denumirea clasei, iar destructorului la definire se adauga simbolul ~ (tilda).
4. Poate oare un constructor să returneze o valoare?
Constructorul nu returneaza nici o valoare fiindca participa la initializare.
5. Pot oare să existe clase fără constructori?
Da. La asa tip de clase se foloseste constructorul implicit.
6. Cîți constructori poate conține o clasă? Dar destructori? De ce?
O clasa poate contine un numar nelimitat de constructori, iar destructor doar unul.
7. Enumerați tipurile de constructori?
Constructorul implicit, cu un parametru, cu mai multi parametri, de conversie si cel de copiere.
8. Cum se apelează un constructor?
Apelarea unu contructor are loc la instantierea unei classe
Den_clasei var_clasei (parametri)
9. De ce este nevoie de definit un constructor de copiere?
Pentru a putea copia obiectele clasei, si a manipula mai comod cu datele.
10. De ce este nevoie de definit un constructor de conversie a tipului?
Un astfel de constructor este binevenit la supraincarcarea operatorilor, si la conversiile dintr-un tip in altul.
Preview document
Conținut arhivă zip
- Lucrare de laborator nr.1.docx
- Lucrare de laborator nr.2.docx
- Lucrare de laborator nr.3.docx
- Lucrare de laborator nr.4.docx