Advertisement
Guest User

Untitled

a guest
Mar 26th, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <string> //import bibliotek
  3.  
  4. using namespace std;
  5.  
  6. class Bohater { //definicja klasy "Bohater"
  7. private: //prywatne pola
  8. string pseudonim;
  9. string klasa;
  10. int sila_ataku;
  11. static int licznik; //licznik obiektów klasy "Bohater"
  12.  
  13. public: //publiczne pola i metody
  14. Bohater(){ //domyślny konstruktor
  15. pseudonim = "Brak";
  16. klasa = "Brak";
  17. sila_ataku = 0;
  18. licznik++; //inkrementacja licznika
  19. }
  20.  
  21. Bohater(const Bohater &Bohater, int sila_ataku) { //konstruktor kopiujacy
  22. pseudonim = Bohater.pseudonim;
  23. klasa = Bohater.klasa;
  24. this -> sila_ataku = sila_ataku; //ustawienie siły obiektu na wartość podaną jako parametr konstruktora kopiującego
  25. licznik++;
  26. }
  27.  
  28. Bohater(string pseudonim, string klasa, int sila_ataku) { //konstruktor wieloargumentowy nadający wartość pól klasy
  29. this -> pseudonim = pseudonim;
  30. this -> klasa = klasa;
  31. this -> sila_ataku = sila_ataku;
  32. licznik++;
  33. }
  34. string get_wyswietlanie_pseudonimu() { //metoda zwracajaca wartosc pola "pseudonim"
  35. return pseudonim;
  36. }
  37. string get_wyswietlanie_klasy() { //metoda zwracajaca wartosc pola "klasa"
  38. return klasa;
  39. }
  40. int get_wyswietlanie_sily() { //metoda zwracajaca wartosc pola "atak"
  41. return sila_ataku;
  42. }
  43. static int get_wyswietlanie_licznika(){ //statyczna metoda zwracajaca wartosc pola "licznik"
  44. return licznik;
  45. }
  46. void set_nowa_sila(int s) { //metoda umozliwiajaca zmiane wartosci pola sila_ataku
  47. sila_ataku = s;
  48. }
  49. void set_nowy_pseudonim(string p) { //metoda umozliwiajaca zmiane wartosci pola pseudonim
  50. pseudonim = p;
  51. }
  52.  
  53. void wyswietlanie_wartosci(); //deklaracja metody wyświetlającej wartości pól klasy
  54. };
  55. void Bohater::wyswietlanie_wartosci() { //definicja metody poza ciałem klasy
  56. cout << "Pseudonim bohatera: " << get_wyswietlanie_pseudonimu() << endl;
  57. cout << "Klasa bohatera: " << get_wyswietlanie_klasy() << endl;
  58. cout << "Sila ataku bohatera: " << get_wyswietlanie_sily() << endl;
  59. }
  60.  
  61. int Bohater::licznik = 0; //definicja statycznego pola "licznik" klasy "Bohater"
  62.  
  63.  
  64. int main() {
  65.  
  66. Bohater* bohater1 = new Bohater("Zawisza Czarny", "Rycerz", 0); //deklaracja dynamicznego obiektu typu "Bohater", przy użyciu konstruktora wieloargumentowego
  67.  
  68. bohater1 -> wyswietlanie_wartosci();
  69.  
  70. bohater1 -> set_nowa_sila(5); bohater1 -> wyswietlanie_wartosci(); //zmiana wartosci pola sila_ataku oraz ponowne wypisanie wartosci
  71.  
  72. Bohater** tab2d = new Bohater*[2]; //utworzenie dynamicznej tablicy obiektow
  73. for(int i = 0; i < 2; i++){
  74. tab2d[i] = new Bohater[2];
  75. }
  76.  
  77. for(int i = 0; i < 2; i++){ //przypisywanie wartości pól obiektom w tablicy
  78. for(int j = 0; j < 2; j++){
  79. tab2d[i][j].set_nowy_pseudonim("pseudonim" + to_string(i));
  80. tab2d[i][j].set_nowa_sila(i * 2 + j);
  81. }
  82. }
  83.  
  84. int suma = 0;
  85.  
  86. for(int i = 0; i < 2; i++){ //sumowanie i wyświetlanie wartości pola "siła" obiektów w tablicy
  87. for(int j = 0; j < 2; j++){
  88. suma += tab2d[i][j].get_wyswietlanie_sily();
  89. cout << tab2d[i][j].get_wyswietlanie_pseudonimu() << " ma sile rowna " << tab2d[i][j].get_wyswietlanie_sily() << endl;
  90. }
  91. }
  92.  
  93. cout << "Suma sil: " << suma << endl;
  94. cout << "Licznik: " << Bohater::get_wyswietlanie_licznika() << endl; //wyświetlenie licznika obiektów klasy "Bohater"
  95.  
  96. for(int i = 0; i < 2; i++) delete[] tab2d[i]; \\usuwanie dynamicznie utworzonych obiektów
  97. delete[] tab2d;
  98. cout << "Licznik: " << Bohater::get_wyswietlanie_licznika() << endl;
  99.  
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement