This shows you the differences between two versions of the page.
poo-is-ab:laboratoare:03 [2025/09/23 19:58] razvan.cristea0106 |
poo-is-ab:laboratoare:03 [2025/10/11 16:16] (current) razvan.cristea0106 |
||
---|---|---|---|
Line 29: | Line 29: | ||
struct Avion | struct Avion | ||
- | { | + | { |
- | int numarLocuri; | + | int numarLocuri; |
- | int anFabricatie; | + | int anFabricatie; |
- | float capacitateRezervor; | + | float capacitateRezervor; |
}; | }; | ||
void afisareAvion(const Avion& avion) | void afisareAvion(const Avion& avion) | ||
{ | { | ||
- | std::cout << "Numarul de locuri din avion este: " << avion.numarLocuri << '\n'; | + | std::cout << "Numarul de locuri din avion este: " << avion.numarLocuri << '\n'; |
- | std::cout << "Anul de fabricatie al avionului este: " << avion.anFabricatie << '\n'; | + | std::cout << "Anul de fabricatie al avionului este: " << avion.anFabricatie << '\n'; |
- | std::cout << "Capacitatea rezervorului avionului este: " << avion.capacitateRezervor << " litri\n"; | + | std::cout << "Capacitatea rezervorului avionului este: " << avion.capacitateRezervor << " litri\n"; |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | Avion avion; // in limbajul C era eroare de compilare daca nu foloseam typedef la definirea structurii | + | Avion avion; // in limbajul C era eroare de compilare daca nu foloseam typedef la definirea structurii |
- | /* struct Avion avion; // ar fi fost declaratia corecta pentru o variabila de tip Avion in C */ | + | /* struct Avion avion; // ar fi fost declaratia corecta pentru o variabila de tip Avion in C */ |
- | avion.numarLocuri = 230; | + | avion.numarLocuri = 230; |
- | avion.anFabricatie = 2000; | + | avion.anFabricatie = 2000; |
- | avion.capacitateRezervor = 755.5f; | + | avion.capacitateRezervor = 755.5f; |
- | afisareAvion(avion); | + | afisareAvion(avion); |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 70: | Line 70: | ||
struct Avion | struct Avion | ||
{ | { | ||
- | int numarLocuri; | + | int numarLocuri; |
- | int anFabricatie; | + | int anFabricatie; |
- | float capacitateRezervor; | + | float capacitateRezervor; |
}; | }; | ||
void afisareAvion(const Avion* const avion) | void afisareAvion(const Avion* const avion) | ||
{ | { | ||
- | printf("Numarul de locuri din avion este: %d\n", avion->numarLocuri); | + | printf("Numarul de locuri din avion este: %d\n", avion->numarLocuri); |
- | printf("Anul de fabricatie al avionului este: %d\n", avion->anFabricatie); | + | printf("Anul de fabricatie al avionului este: %d\n", avion->anFabricatie); |
- | printf("Capacitatea rezervorului avionului este: %.2f litri\n", avion->capacitateRezervor); | + | printf("Capacitatea rezervorului avionului este: %.2f litri\n", avion->capacitateRezervor); |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | Avion avion; | + | Avion avion; |
- | avion.numarLocuri = 230; | + | avion.numarLocuri = 230; |
- | avion.anFabricatie = 2000; | + | avion.anFabricatie = 2000; |
- | avion.capacitateRezervor = 755.5f; | + | avion.capacitateRezervor = 755.5f; |
- | afisareAvion(&avion); | + | afisareAvion(&avion); |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 126: | Line 126: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
}; | }; | ||
</code> | </code> | ||
Line 163: | Line 163: | ||
private: // specificatorul de acces private, nu era necesar sa il punem deoarece membrii deja erau privati | private: // specificatorul de acces private, nu era necesar sa il punem deoarece membrii deja erau privati | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
}; | }; | ||
</code> | </code> | ||
Line 178: | Line 178: | ||
private: | private: | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // obiect de tipul clasei Brad (instanta a clasei Brad) | + | Brad brad; // obiect de tipul clasei Brad (instanta a clasei Brad) |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 200: | Line 200: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; | + | Brad brad; |
- | brad.vechime = 2; // eroare de compilare, membrul vechime este privat | + | brad.vechime = 2; // eroare de compilare, membrul vechime este privat |
- | brad.inaltime = 5.25f; // gresit, membrul inaltime este inaccesibil | + | brad.inaltime = 5.25f; // gresit, membrul inaltime este inaccesibil |
- | brad.pret = 299.99; // membrul pret este marcat ca private | + | brad.pret = 299.99; // membrul pret este marcat ca private |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 226: | Line 226: | ||
public: // in acest moment cei 3 membri ai clasei sunt vizibili in exteriorul acesteia | public: // in acest moment cei 3 membri ai clasei sunt vizibili in exteriorul acesteia | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; | + | Brad brad; |
- | brad.vechime = 2; | + | brad.vechime = 2; |
- | brad.inaltime = 5.25f; | + | brad.inaltime = 5.25f; |
- | brad.pret = 299.99; | + | brad.pret = 299.99; |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 264: | Line 264: | ||
void interschimbare(int* a, int* b) | void interschimbare(int* a, int* b) | ||
{ | { | ||
- | if (a == nullptr || b == nullptr) | + | if (a == nullptr || b == nullptr) |
- | { | + | { |
- | return; | + | return; |
- | } | + | } |
- | int auxiliar = *a; | + | int auxiliar = *a; |
- | *a = *b; | + | *a = *b; |
- | *b = auxiliar; | + | *b = auxiliar; |
} | } | ||
void interschimbare(int& a, int& b) | void interschimbare(int& a, int& b) | ||
{ | { | ||
- | int auxiliar = a; | + | int auxiliar = a; |
- | a = b; | + | a = b; |
- | b = auxiliar; | + | b = auxiliar; |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | int x = 22; | + | int x = 22; |
- | int y = 8; | + | int y = 8; |
- | interschimbare(&x, &y); | + | interschimbare(&x, &y); |
- | std::cout << "Valoarea lui x este: " << x << '\n'; | + | std::cout << "Valoarea lui x este: " << x << '\n'; |
- | std::cout << "Valoarea lui y este: " << y << '\n'; | + | std::cout << "Valoarea lui y este: " << y << '\n'; |
- | interschimbare(x, y); | + | interschimbare(x, y); |
- | std::cout << "Valoarea lui x este: " << x << '\n'; | + | std::cout << "Valoarea lui x este: " << x << '\n'; |
- | std::cout << "Valoarea lui y este: " << y << '\n'; | + | std::cout << "Valoarea lui y este: " << y << '\n'; |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 325: | Line 325: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
public: | public: | ||
- | Brad() | + | Brad() |
- | { | + | { |
- | vechime = 0; | + | vechime = 0; |
- | inaltime = 0.0f; | + | inaltime = 0.0f; |
- | pret = 0.0; | + | pret = 0.0; |
- | } | + | } |
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // echivalent cu a scrie direct Brad brad = Brad(); | + | Brad brad; // echivalent cu a scrie direct Brad brad = Brad(); |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 356: | Line 356: | ||
class Brad // declaratia clasei se va scrie intr-un fisier cu extensia .h | class Brad // declaratia clasei se va scrie intr-un fisier cu extensia .h | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
public: | public: | ||
- | Brad(); | + | Brad(); |
}; | }; | ||
Brad::Brad() // aceasta bucata de cod va exista intr-un fisier cu extensia .cpp | Brad::Brad() // aceasta bucata de cod va exista intr-un fisier cu extensia .cpp | ||
{ | { | ||
- | vechime = 0; | + | vechime = 0; |
- | inaltime = 0.0f; | + | inaltime = 0.0f; |
- | pret = 0.0; | + | pret = 0.0; |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // echivalent cu a scrie direct Brad brad = Brad(); | + | Brad brad; // echivalent cu a scrie direct Brad brad = Brad(); |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 389: | Line 389: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
public: | public: | ||
- | // Brad(); | + | // Brad(); |
- | Brad(const float& inaltime); // constructor cu un parametru | + | Brad(const float& inaltime); // constructor cu un parametru |
- | Brad(const int& vechime, const float& inaltime, const double& pret); | + | Brad(const int& vechime, const float& inaltime, const double& pret); |
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // eroare de compilare, nu exista constructor default | + | Brad brad; // eroare de compilare, nu exista constructor default |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 419: | Line 419: | ||
Brad::Brad(const float& inaltime) | Brad::Brad(const float& inaltime) | ||
{ | { | ||
- | vechime = 0; | + | vechime = 0; |
- | inaltime = inaltime; // eroare de compilare | + | inaltime = inaltime; // eroare de compilare |
- | pret = 0.0; | + | pret = 0.0; |
} | } | ||
</code> | </code> | ||
Line 443: | Line 443: | ||
Brad::Brad(const float& inaltime) | Brad::Brad(const float& inaltime) | ||
{ | { | ||
- | vechime = 0; // nu este nevoie de this deoarece compilatorul stie ca este vorba despre campul vechime al obiectului curent | + | vechime = 0; // nu este nevoie de this deoarece compilatorul stie ca este vorba despre campul vechime al obiectului curent |
- | this->inaltime = inaltime; | + | this->inaltime = inaltime; |
- | pret = 0.0; // aceeasi explicatie ca la vechime | + | pret = 0.0; // aceeasi explicatie ca la vechime |
} | } | ||
</code> | </code> | ||
Line 458: | Line 458: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
public: | public: | ||
- | Brad(); // constructor default | + | Brad(); // constructor default |
- | Brad(const float& inaltime); // constructor cu un parametru | + | Brad(const float& inaltime); // constructor cu un parametru |
- | Brad(const int& vechime, const float& inaltime, const double& pret); // constructor cu 3 parametri | + | Brad(const int& vechime, const float& inaltime, const double& pret); // constructor cu 3 parametri |
}; | }; | ||
Line 474: | Line 474: | ||
Brad::Brad() | Brad::Brad() | ||
{ | { | ||
- | vechime = 0; // nu este nevoie de this, dar nu este gresit nici daca scriem this->vechime = 0; | + | vechime = 0; // nu este nevoie de this, dar nu este gresit nici daca scriem this->vechime = 0; |
- | inaltime = 0.0f; | + | inaltime = 0.0f; |
- | pret = 0.0; | + | pret = 0.0; |
} | } | ||
Line 482: | Line 482: | ||
Brad::Brad(const float& inaltime) | Brad::Brad(const float& inaltime) | ||
{ | { | ||
- | vechime = 0; | + | vechime = 0; |
- | this->inaltime = inaltime; | + | this->inaltime = inaltime; |
- | pret = 0.0; | + | pret = 0.0; |
} | } | ||
Line 490: | Line 490: | ||
Brad::Brad(const int& vechime, const float& inaltime, const double& pret) | Brad::Brad(const int& vechime, const float& inaltime, const double& pret) | ||
{ | { | ||
- | this->pret = pret; | + | this->pret = pret; |
- | this->vechime = vechime; | + | this->vechime = vechime; |
- | this->inaltime = inaltime; | + | this->inaltime = inaltime; |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // se apeleaza constructorul default | + | Brad brad; // se apeleaza constructorul default |
- | Brad bradut(4.75f); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad bradut = Brad(4.75f);) | + | Brad bradut(4.75f); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad bradut = Brad(4.75f);) |
- | Brad b(2, 2.25f, 399.99); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad b = Brad(2, 2.25f, 399.99);) | + | Brad b(2, 2.25f, 399.99); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad b = Brad(2, 2.25f, 399.99);) |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> | ||
Line 516: | Line 516: | ||
class Brad | class Brad | ||
{ | { | ||
- | int vechime; | + | int vechime; |
- | float inaltime; | + | float inaltime; |
- | double pret; | + | double pret; |
public: | public: | ||
- | Brad(); | + | Brad(); |
- | Brad(const int& vechime, const float& inaltime, const double& pret); | + | Brad(const int& vechime, const float& inaltime, const double& pret); |
- | int getVechime() const; // metoda la compilare arata asa: int getVechime(const Brad* this); | + | int getVechime() const; // metoda la compilare arata asa: int getVechime(const Brad* this); |
- | float getInaltime() const; | + | float getInaltime() const; |
- | double getPret() const; | + | double getPret() const; |
- | void setVechime(const int& vechime); // metoda la compilare arata asa: void setVechime(Brad* this, const int& vechime); | + | void setVechime(const int& vechime); // metoda la compilare arata asa: void setVechime(Brad* this, const int& vechime); |
- | void setInaltime(const float& inaltime); | + | void setInaltime(const float& inaltime); |
- | void setPret(const double& pret); | + | void setPret(const double& pret); |
}; | }; | ||
</code> | </code> | ||
Line 540: | Line 540: | ||
Brad::Brad() | Brad::Brad() | ||
{ | { | ||
- | vechime = 0; | + | vechime = 0; |
- | inaltime = 0.0f; | + | inaltime = 0.0f; |
- | pret = 0.0; | + | pret = 0.0; |
} | } | ||
Brad::Brad(const int& vechime, const float& inaltime, const double& pret) | Brad::Brad(const int& vechime, const float& inaltime, const double& pret) | ||
{ | { | ||
- | this->pret = pret; | + | this->pret = pret; |
- | this->vechime = vechime; | + | this->vechime = vechime; |
- | this->inaltime = inaltime; | + | this->inaltime = inaltime; |
} | } | ||
int Brad::getVechime() const // acest const este adresat pointerului this (continutul de la adresa spre care pointeaza nu poate fi modificat) | int Brad::getVechime() const // acest const este adresat pointerului this (continutul de la adresa spre care pointeaza nu poate fi modificat) | ||
{ | { | ||
- | // this->vechime = 5; // imposibil din cauza const-ului din semnatura functiei | + | // this->vechime = 5; // imposibil din cauza const-ului din semnatura functiei |
- | return vechime; // era corect si daca scriam return this->vechime; | + | return vechime; // era corect si daca scriam return this->vechime; |
} | } | ||
float Brad::getInaltime() const | float Brad::getInaltime() const | ||
{ | { | ||
- | return inaltime; | + | return inaltime; |
} | } | ||
void Brad::setVechime(const int& vechime) | void Brad::setVechime(const int& vechime) | ||
{ | { | ||
- | if (vechime <= 0) // verificam daca valoarea primita ca parametru este una valida | + | if (vechime <= 0) // verificam daca valoarea primita ca parametru este una valida |
- | { | + | { |
- | return; | + | return; |
- | } | + | } |
- | this->vechime = vechime; // trebuie folosit this deoarece parametrul are acelasi nume ca si campul clasei | + | this->vechime = vechime; // trebuie folosit this deoarece parametrul are acelasi nume ca si campul clasei |
} | } | ||
void Brad::setInaltime(const float& inaltime) | void Brad::setInaltime(const float& inaltime) | ||
{ | { | ||
- | if (inaltime <= 0) | + | if (inaltime <= 0) |
- | { | + | { |
- | return; | + | return; |
- | } | + | } |
- | this->inaltime = inaltime; | + | this->inaltime = inaltime; |
} | } | ||
int main() | int main() | ||
{ | { | ||
- | Brad brad; // se apeleaza constructorul default | + | Brad brad; // se apeleaza constructorul default |
- | brad.setVechime(3); | + | brad.setVechime(3); |
- | brad.setInaltime(5.5f); | + | brad.setInaltime(5.5f); |
- | std::cout << "Vechimea bradului este: " << brad.getVechime() << " ani\n"; | + | std::cout << "Vechimea bradului este: " << brad.getVechime() << " ani\n"; |
- | std::cout << "Inaltimea bradului este: " << brad.getInaltime() << " metri\n"; | + | std::cout << "Inaltimea bradului este: " << brad.getInaltime() << " metri\n"; |
- | return 0; | + | return 0; |
} | } | ||
</code> | </code> |