Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrarea de laborator nr.3
la Programarea Calculatoarelor
Varianta 2
A verificat:
Chişinău -2024
LUCRARE DE LABORATOR NR. 3
this->nume = strdup(nume);
public:
this->specialitate = strdup(specialitate);
// Constructori, destructor și alte funcții
this->an = an;
Student(const char* nume, const char*
specialitate, int an, float balMediu) this->balMediu = balMediu;
: nume(strdup(nume)), }
specialitate(strdup(specialitate)), an(an),
balMediu(balMediu) {}
bool operator==(const Student& other) const
{
Student(const Student& other)
return (strcmp(nume, other.nume) == 0 &&
: nume(strdup(other.nume)),
strcmp(specialitate, other.specialitate)
specialitate(strdup(other.specialitate)),
== 0 &&
an(other.an), balMediu(other.balMediu) {}
an == other.an &&
balMediu == other.balMediu); delete[] temaDiploma;
} }
StudentDiplomant(const StudentDiplomant&
int main() {
other)
// Exemplu de utilizare a claselor
: Student(other),
temaDiploma(strdup(other.temaDiploma)) {} Student student1("John Doe", "Informatica",
2, 9.5);
Student student2 = student1; // Apelul
~StudentDiplomant() {
constructorului de copiere
std::cout << "Student 1:\n" << student1 << std::cout << "Diplomant 2:\n" << diplomant2
std::endl; << std::endl;
std::cout << "Student 2:\n" << student2 << diplomant2.definireTemaDiploma("Sisteme
std::endl; integrate de control");
student2.definireDate("Alice Wonderland", std::cout << "Diplomant 2 dupa schimbare:\n"
"Matematica", 3, 8.7); << diplomant2 << std::endl;
std::cout << "Student 2 dupa schimbare:\n" if (diplomant1 == diplomant2) {
<< student2 << std::endl;
std::cout << "Diplomantii au aceleasi
StudentDiplomant diplomant1("Bob Builder", informatii." << std::endl;
"Inginerie", 4, 9.0, "Implementarea unui robot
} else {
autonom");
std::cout << "Diplomantii nu au aceleasi
StudentDiplomant diplomant2 = diplomant1;
informatii." << std::endl;
std::cout << "Diplomant 1:\n" << diplomant1
}
<< std::endl;
return 0;}
Concluzie:
Aceste două coduri oferă exemple de implementare a claselor în C++,
demonstrând concepte precum moștenirea, compoziția și suprascrierea
operatorilor. În primul cod, am creat o clasă Vector pentru manipularea vectorilor
de tip long, iar în al doilea cod, am definit trei clase, Camera, ApartamentCuOdaie,
și ApartamentCuAdresa, pentru a modela structura unui apartament cu o odaie,
inclusiv variantele cu sau fără adresă.
Principalele puncte de învățat din aceste exemple includ:
1. Moștenirea și Compoziția: În ambele coduri, am utilizat moștenirea
(ApartamentCuAdresa este o clasă derivată a ApartamentCuOdaie) și compoziția
(ApartamentCuOdaie conține un obiect de tip Camera). Aceste concepte ajută la
organizarea și reutilizarea codului.
2. Constructori și Destructori: Am definit constructori pentru inițializarea
obiectelor și destructori pentru eliberarea resurselor atunci când aceste obiecte sunt
distruse.
3. Suprascrierea Operatorilor: În special, am suprascris operatorul << pentru a
permite afișarea informațiilor despre obiecte într-un mod ușor de înțeles.
4. Funcții Prietene și Metode: Am folosit funcții prietene pentru a permite
suprascrierea operatorului << să acceseze membrii privați ai claselor. Metodele de
acces au fost definite pentru a oferi acces controlat la membrii privați ai claselor.
Aceste exemple ar trebui să servească ca bază pentru înțelegerea practică a
conceptelor de programare orientată pe obiect în limbajul C++. De asemenea, ar
trebui să fie adaptate și extinse pentru a satisface cerințele specifice ale proiectelor
sau aplicațiilor pe care le dezvoltați.