Advertisement
Guest User

Dziedziczenie

a guest
May 18th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. // ----------------------------------------------------------------------------
  8.  
  9. class pracownik {
  10. private:
  11.   string imie;
  12.   string nazwisko;
  13.   string stanowisko;
  14.   int wiek;
  15.   int zarobki;
  16. public:
  17.     // konstrutor musi być publiczny i ma nazwę taką samą jak nazwa klasy
  18.     pracownik(){ }    // konstruktor domyślny nawet jeśli go nie napiszesz to zawsze jest dodawany
  19.     pracownik(string imie, string nazwisko )  // konstruktory można przeciążać,
  20.     {                                         //ten ustawia pozostałe wartości puste
  21.       this->imie = imie;
  22.       this->nazwisko = nazwisko;
  23.       this->stanowisko = "";
  24.       wiek = zarobki = 0;
  25.     }
  26.     // poniższy wariant dodatkowo wypisuje zawartość klasy
  27.     pracownik(string imie, string nazwisko, string stanowisko, int wiek, int zarobki)
  28.     {
  29.       Ustaw(imie, nazwisko, stanowisko, wiek, zarobki);
  30.       Wypisz();
  31.     }
  32.  
  33.   void Ustaw(string imie,string nazwisko,string stanowisko, int wiek, int zarobki) {
  34.     this->imie = imie;
  35.     this->nazwisko = nazwisko;
  36.     this->stanowisko = stanowisko;
  37.     this->wiek = wiek;
  38.     this->zarobki = zarobki;
  39.   }
  40.   void Wypisz();
  41. };
  42.  
  43. // ----------------------------------------------------------------------------
  44.  
  45. class dyrektor : public pracownik
  46. {
  47. public:
  48.   dyrektor(string imie,string nazwisko,string stanowisko, int wiek, int zarobki)
  49.   {
  50.     Ustaw(imie, nazwisko, "Dyrektor " + stanowisko, wiek, zarobki* 1.25); /// zmiana dla dyrektora
  51.   }
  52.   // Trochę śmieszne to zadanie, bo dziedzicząc nie da sie zapisać do dziedziczonych zmiennych prywatnych
  53. //  void Ustaw(string imie,string nazwisko,string stanowisko, int wiek, int zarobki) {
  54. //    imie = imie;
  55. //    nazwisko = nazwisko;
  56. //    stanowisko = stanowisko;
  57. //    wiek = wiek;
  58. //    zarobki = zarobki * 1.25; /// zmiana dla dyrektora
  59. //  }
  60. };
  61.  
  62. // ----------------------------------------------------------------------------
  63.  
  64. void pracownik::Wypisz() {
  65.   cout << "Imie: " << imie << "\nNazwisko: " << nazwisko
  66.        << "\nStanowisko: " << stanowisko << "\nWiek: " << wiek
  67.        << "\nZarobki: " << zarobki << "\n\n";
  68. }
  69.  
  70. // ----------------------------------------------------------------------------
  71.  
  72. int main()
  73. {
  74.   pracownik *pracownik1 = new pracownik;
  75. //  pracownik *p1 = nullptr, *p2 = nullptr; // jeśli  nie przydzielamy od razu pamięci wskaźnikowi to należy go wyzerować
  76.   dyrektor *d1 = nullptr;
  77.  
  78.   pracownik1->Ustaw("Regina","Arabik","Mechatronik",22,3000);
  79.   pracownik1->Wypisz();
  80.  
  81.   d1 = new dyrektor("Regina","Arabik","Mechatronik",22,3000);
  82.   // nie do końca rozumiem to zadanie, bo bez przepisania całego kodu klasy pracownik to zadanie nie ma sensu
  83.   // ponieważ w dziedziczeniu chodzi o to by minimalizować ilość pisanego kodu, więc pozostaje to połatać po
  84.   // partyzancku i nie używać metody Ustaw, a konstruktora, możesz zapytać wykładowcę jakie powinno być rozwiązanie
  85.   ///  d1->Ustaw("Regina","Arabik","Mechatronik",22,3000);
  86.   d1->Wypisz();
  87.  
  88.   delete pracownik1, d1;
  89.   system ("Pause");
  90.   return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement