Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de Laborator Nr. 2
LA DISCIPLINA “PROGRAMAREA ORIENTATĂ PE OBIECT”
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: abstractizarea, incap.....
- crearea unei aplicaţii de tip consolă în limbajul de programare
C++. Să se ofere răspuns la lista de întrebari adresate mai jos. Studentul trebuie să realizeze un
raport de tip document (doc sau docx) care să includă pagina de titlu, tema, sarcina si obiectivele
lucrării, lista de întrebarile şi răspunsuri, codul sursă a aplicaţiei, rezultate - imagini screenshot a
aplicatiei, concluzie personală referitor la această lucrare
2. Sarcina lucrării
Aplicaţia 1
Să se dezvolte aplicaţia de la laboratorul 1 care respecta încapsularea ca principiu POO.
Aplicaţia 2
Să se scrie o aplicaţie care implementează o stivă cu ajutorul unui tablou. Se vor implementa
funcţiile de adăugare în stivă, scoatere din stivă, afişare a stivei (toate elementele). Sa se utilizeze obiecte de
tipul clasei utilizate în Aplicatia 1 ca elemente, pentru a fi adaugate în stivă.
3. Teoria
În C++ încapsularea este îndeplinită prin două aspecte:
1. folosirea claselor pentru unirea structurile de date şi a funcţiilor destinate manipulării lor;
2. folosirea secţiunilor private şi publice, care fac posibilă separarea mecanismului intern de
interfaţa clasei;
O clasă reprezintă un tip de date definit de utilizator, care se comportă întocmai ca un tip predefinit
de date. Pe lângă variabilele folosite pentru descrierea datelor, se descriu şi metodele (funcţiile) folosite
pentru manipularea lor.
Instanţa unei clase reprezintă un obiect - este o variabilă declarată ca fiind de tipul clasei definite.
Variabilele declarate în cadrul unei clase se numesc variabile membru, iar funcţiile declarate în
cadrul unei clase se numesc metode sau functii membru. Metodele pot accesa toate variabilele declarate în
cadrul clasei, private sau publice.
Membrii unei clase reprezintă totalitatea metodelor şi a variabilelor membre ale clasei.
4. Întrebări
1. Ce este încapsularea?
2. Ce este o clasa?
3. Ce este un obiect?
Direct – nu. Pentru a fi accesate, este nevoie de a define metode publice ce vor putea accesa
acestea.
5. Cod sursă
Aplicația 1:
#include <iostream>
#include <typeinfo>
using namespace std;
class Time {
private:
int ore,minute, secunde;
public :
Time () {}
int GetOre () {
return ore;
}
int GetMinute () {
return minute;
}
int GetSecunde () {
return secunde;
}
void Afisare () {
cout << "Ora " << ore << " si " << minute << " minute" << " si " << secunde << "
secunde;\n";
}
};
main () {
Time *t1;
t1 = new Time(0, 0, 0);
int in;
//////////////////////////////////////////////////////////
do {//setam Ora
cout << "Dati ora:";
cin >> in;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetOre(in);
//////////////////////////////////////////////////////////
do {//setam Minutele
cout << "Dati minute:";
cin >> in;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetMinute(in);
//////////////////////////////////////////////////////////
do {//setam Secundele
cout << "Dati secundele:";
cin >> in;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetSecunde(in);
//////////////////////////////////////////////////////////
t1->Afisare();//afisam datele
return 0;
}
Aplicația 2:
#include <iostream>
#include <typeinfo>
#include <string.h>
#include <stack>
class Time {
private:
int ore, minute, secunde;
public :
Time () {}
int GetMinute () {
return minute;
}
int GetSecunde () {
return secunde;
}
void Afisare () {
cout << "Ora " << ore << " si " << minute << " minute" << " si " << secunde << "
secunde;\n";
}
};
while (!temp.empty()) {
Time* t = temp.top();
temp.pop();
t->Afisare();
}
main () {
int n;
cout<<"Dati numarul de obiecte:";
cin>>n;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetOre(in);
//////////////////////////////////////////////////////////
do {//setam Minutele
cout << "Dati minute:";
cin >> in;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetMinute(in);
do {//setam Secundele
cout << "Dati secundele:";
cin >> in;
if (cin.fail()) {
cout << "Valoarea data este incorecta!" << endl;
cin.clear();
cin.ignore(512, '\n');
continue;
}
break;
} while (true);
t1->SetSecunde(in);
stiva.push(t1);
}
do {//facem eliminarea
cout << "\nDoriti sa eliminati ultimul element(d/n):";
char chr[1];
cin >> chr;
if (strcmp(chr, "d") == 0) {
stiva.pop();
cout << "\nStiva dupa eliminare ultimului element intrat:" << endl;
AfisareStiva(stiva);
}
else
break;
} while (true);
return 0;
}
6. Rezultate (imagini)
Aplicația 1:
Aplicația 2:
7. Concluzie
În urma efectuarii acestui laborator, am conceput mai bine câteva principii de baza a POO.
Am conceput mai bine noțiunea de clase, metode, proprietăți, constructori. Am lucrat cu pointerii și cu
obiectele. Am instanțiat obiete ale clasei definite. Am lucrat cu incapsularea, atribuind modificatori de
acces proprietăților și metodelor clasei. Am lucrat cu structuri dinamice de date, folosindule ca container
pentru obiecte. Toate aceastea vor servi ca bază în lucrul ulterior cu clasele în C++.