Advertisement
Tucancitto

Pb07. Moștenire multiplă

May 26th, 2021
1,115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.57 KB | None | 0 0
  1. // Persoana.h
  2. #pragma once
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6.  
  7. class Persoana
  8. {
  9. protected:
  10.     string nume;
  11.     int varsta;
  12. public:
  13.     Persoana();
  14.     Persoana(string, int);
  15.     ~Persoana();
  16.     virtual void afisare();
  17. };
  18.  
  19. // Persoana.cpp
  20. #include "Persoana.h"
  21.  
  22. Persoana::Persoana() : nume(""), varsta(0) {}
  23. Persoana::Persoana(string nume, int varsta) : nume(nume), varsta(varsta) {}
  24. Persoana::~Persoana() {}
  25.  
  26. void Persoana::afisare()
  27. {
  28.     cout << "Nume: " << nume << endl;
  29.     cout << "Varsta: " << varsta << endl;
  30. }
  31.  
  32. // Student.h
  33. #pragma once
  34. #include "Persoana.h"
  35. class Student : virtual public Persoana
  36. {
  37. protected:
  38.     string profil;
  39.     int valoareBursa;
  40. public:
  41.     Student();
  42.     Student(string, int, string, int);
  43.     ~Student();
  44.     void afisare();
  45.     int getVenit();
  46. };
  47.  
  48. // Student.cpp
  49. #include "Student.h"
  50.  
  51. Student::Student() : Persoana(), profil(""), valoareBursa(0) {}
  52. Student::Student(string nume, int varsta, string profil, int valoareBursa) : Persoana(nume, varsta), profil(profil), valoareBursa(valoareBursa) {}
  53. Student::~Student() {}
  54.  
  55. void Student::afisare()
  56. {
  57.     Persoana::afisare();
  58.     cout << "Profil: " << profil << endl;
  59.     cout << "Valoare bursa: " << valoareBursa << endl;
  60. }
  61.  
  62. int Student::getVenit()
  63. {
  64.     return valoareBursa;
  65. }
  66.  
  67. // Angajat.h
  68. #pragma once
  69. #include "Persoana.h"
  70. class Angajat : virtual public Persoana
  71. {
  72. protected:
  73.     int salariu;
  74.     string numeFirma;
  75.  
  76. public:
  77.     Angajat();
  78.     Angajat(string, int, int, string);
  79.     ~Angajat();
  80.     void afisare();
  81.     int getVenit();
  82. };
  83.  
  84. // Angajat.cpp
  85. #include "Angajat.h"
  86.  
  87. Angajat::Angajat() : Persoana(), salariu(0), numeFirma("") {}
  88. Angajat::Angajat(string nume, int varsta, int salariu, string numeFirma) : Persoana(nume, varsta), salariu(salariu), numeFirma(numeFirma) {}
  89. Angajat::~Angajat() {}
  90.  
  91. void Angajat::afisare()
  92. {
  93.     Persoana::afisare();
  94.     cout << "Salariu: " << salariu << endl;
  95.     cout << "Nume firma: " << numeFirma << endl;
  96. }
  97.  
  98. int Angajat::getVenit()
  99. {
  100.     return salariu;
  101. }
  102.  
  103. // StudentAngajat.h
  104. #pragma once
  105. #include "Student.h"
  106. #include "Angajat.h"
  107.  
  108. class StudentAngajat : virtual public Student, virtual public Angajat
  109. {
  110. public:
  111.     StudentAngajat();
  112.     StudentAngajat(string, int, string, int, int, string);
  113.     ~StudentAngajat();
  114.     void afisare();
  115.     int getVenit();
  116. };
  117.  
  118. // StudentAngajat.cpp
  119. #include "StudentAngajat.h"
  120.  
  121. StudentAngajat::StudentAngajat() : Persoana(), Student(), Angajat() {}
  122. StudentAngajat::StudentAngajat(string nume, int varsta, string profil, int valoareBursa, int salariu, string numeFirma) :
  123.     Persoana(nume, varsta), Student(nume, varsta, profil, valoareBursa), Angajat(nume, varsta, salariu, numeFirma) {}
  124. StudentAngajat::~StudentAngajat() {}
  125.  
  126. void StudentAngajat::afisare()
  127. {
  128.     Student::afisare();
  129.     cout << "Salariu: " << Angajat::salariu << endl;
  130.     cout << "Nume firma: " << Angajat::numeFirma << endl;
  131. }
  132.  
  133. int StudentAngajat::getVenit()
  134. {
  135.     return Student::valoareBursa + Angajat::salariu;
  136. }
  137.  
  138. // main
  139. #include "Persoana.h"
  140. #include "Student.h"
  141. #include "Angajat.h"
  142. #include "StudentAngajat.h"
  143. #include <vector>
  144.  
  145. int main()
  146. {
  147.     Student P1("Gheorghe Maria", 21, "mate", 500);
  148.     Angajat P2("Toader Costel", 24, 4000, "ubi");
  149.     StudentAngajat P3("Popa Marian", 25, "info", 500, 3000, "soft");
  150.  
  151.     /*
  152.     P1.afisare();
  153.     cout << endl;
  154.  
  155.     P2.afisare();
  156.     cout << endl;
  157.  
  158.     P3.afisare();
  159.     cout << endl;
  160.     cout << endl << endl;
  161.     */
  162.  
  163.     vector<Persoana*> pers;
  164.     pers.push_back(&P1);
  165.     pers.push_back(&P2);
  166.     pers.push_back(&P3);
  167.  
  168.     for (int i = 0; i < pers.size(); ++i)
  169.     {
  170.         pers[i]->afisare();
  171.         cout << endl;
  172.     }
  173.  
  174.     pers.clear();
  175.  
  176.     return 0;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement