Alx09

Untitled

Nov 23rd, 2020 (edited)
532
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <list>
  3. #include <iterator>
  4. #include <stdlib.h>
  5. #include <string>
  6. using namespace std;
  7.  
  8. class Persoana { // clasa de baza
  9. private:
  10.     string nume; // o variabila sa fie
  11. public:
  12.     Persoana(string nume) { //construtor
  13.         this->nume = nume;
  14.     }
  15.     virtual void Show() { // functie virtuala
  16.         cout << nume;
  17.     }
  18. };
  19.  
  20. class Student : public Persoana { // clasa derivata 1
  21. private:
  22.     string facultatea;
  23. public:
  24.     Student(string nume, string facultatea) :Persoana(nume) { // construcotr clasa derivata 1
  25.         this->facultatea = facultatea;
  26.     }
  27.     void Show() { // aceasta e tot o functie virtuala
  28.         Persoana::Show(); // apelam functia de afisare din clasa de baza
  29.         cout << " este student la " << facultatea << endl << endl;
  30.     }
  31. };
  32.  
  33. class Muncitor : public Persoana { // a doua clasa derivata
  34. private:
  35.     string firma;
  36. public:
  37.     Muncitor(string nume, string firma) :Persoana(nume) {// ....
  38.         this->firma = firma;
  39.     }
  40.     void Show() {
  41.         Persoana::Show(); // din nou functia de afisare din clasa de baza
  42.         cout << " Munceste la " << firma << endl << endl;
  43.     }
  44. };
  45. void ShowLista(list <Persoana*> test) { // asa se face afisarea
  46.     for (list <Persoana *> ::iterator it = test.begin(); it != test.end(); it++) (*it)->Show();
  47.     /*
  48.      it e un iterator care primeste primul element din lista it= test.begin()
  49.      se incrementeaza ca si i normal iar afilare se face in acest fel deoarce vrem sa folosim functia definita de noi in clsa
  50.      si merge pana se termina elementele din lista it != test.end();
  51.    
  52.     */
  53.  
  54. }
  55.  
  56. int main() {
  57.     list <Persoana *> listaPersoane; // asa se declara lista
  58.     Persoana * oPersoana; // un pointer nu e neaprat folositor l-am folosit sa arat ce s listele eterogeene
  59.     oPersoana = new Student("ionut", "upt"); // o lista tereogeana inseamna ca intr o lista se afla variabile de tip diferit
  60.     listaPersoane.push_front(oPersoana); // punem in fata listei studetnul
  61.     oPersoana = new Muncitor("Florin", "Contintal");// same acum creem un muncitor totusi
  62.     listaPersoane.push_front(oPersoana);// punem muncitorul in fata listei
  63.     listaPersoane.push_front(new Student("Bogdan", "UVT")); // si asta e varianta fara ace-l pointer merge si direct
  64.     ShowLista(listaPersoane); // acum afisam lista
  65.     // acum trebuie cautate functile din bilboteca si sa le utilizati
  66.  
  67.     system("pause");
  68. }
RAW Paste Data