Advertisement
Guest User

Untitled

a guest
May 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Pojazd
  4. {
  5. public:
  6. virtual ~Pojazd();
  7.  
  8. virtual void jedz(int km) = 0;
  9. virtual void prezentuj() const = 0;
  10. };
  11.  
  12. class PojazdKolowy : public Pojazd
  13. {
  14. public:
  15. PojazdKolowy();
  16. PojazdKolowy(std::string marka, long long przebieg);
  17. ~PojazdKolowy();
  18.  
  19. void jedz(int km);
  20. void prezentuj() const;
  21. void ustaw(std::string marka, long long przebieg);
  22.  
  23. private:
  24. std::string marka_;
  25. long long przebieg_;
  26. };
  27.  
  28. class Samochod : public PojazdKolowy
  29. {
  30. public:
  31. Samochod(std::string marka, long long przebieg, std::string model, double paliwo);
  32. ~Samochod();
  33.  
  34. void jedz(int km);
  35. void prezentuj() const;
  36. void ustaw(std::string marka, long long przebieg, std::string model, double paliwo);
  37.  
  38. private:
  39. std::string model_;
  40. double paliwo_;
  41. };
  42.  
  43. class Taksowka : public Samochod
  44. {
  45. public:
  46. Taksowka(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr);
  47. ~Taksowka();
  48.  
  49. void jedz(int km);
  50. void prezentuj() const;
  51. void ustaw(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr);
  52.  
  53. private:
  54. int taksometr_;
  55. };
  56.  
  57. class Autostrada
  58. {
  59. public:
  60. Autostrada(int dystans);
  61.  
  62. void przepusc(Pojazd& pojazd);
  63.  
  64. private:
  65. int dystans_;
  66. };
  67.  
  68. int main()
  69. {
  70. PojazdKolowy pk1("Rover", 2000);
  71. pk1.jedz(24);
  72. pk1.prezentuj();
  73.  
  74. Samochod s1("Opel", 20000, "Astra", 15);
  75. s1.jedz(2);
  76. s1.prezentuj();
  77.  
  78. Taksowka t1("VW", 870000000, "Passat", 60, 100);
  79. t1.jedz(24);
  80. t1.prezentuj();
  81.  
  82. std::cout << "\nPolimorfizm.\n" << std::endl;
  83. Pojazd* p1;
  84.  
  85. p1 = &pk1;
  86. p1->prezentuj();
  87.  
  88. p1 = &s1;
  89. p1->prezentuj();
  90.  
  91. p1 = &t1;
  92. p1->prezentuj();
  93.  
  94. std::cout << "\nAutostrada\n" << std::endl;
  95. Autostrada a1(400);
  96. a1.przepusc(t1);
  97.  
  98. return 0;
  99. }
  100.  
  101. Pojazd::~Pojazd()
  102. {
  103. }
  104.  
  105. PojazdKolowy::PojazdKolowy()
  106. : marka_("Opel"), przebieg_(5)
  107. {
  108. }
  109.  
  110. PojazdKolowy::PojazdKolowy(std::string marka, long long przebieg)
  111. : marka_(marka), przebieg_(przebieg)
  112. {
  113. }
  114.  
  115. PojazdKolowy::~PojazdKolowy()
  116. {
  117. }
  118.  
  119. void PojazdKolowy::jedz(int km)
  120. {
  121. przebieg_ += km;
  122. }
  123.  
  124. void PojazdKolowy::prezentuj() const
  125. {
  126. std::cout << "Marka: " << marka_ << std::endl;
  127. std::cout << "Przebieg: " << przebieg_ << std::endl;
  128. }
  129.  
  130. void PojazdKolowy::ustaw(std::string marka, long long przebieg)
  131. {
  132. marka_ = marka;
  133. przebieg_ = przebieg;
  134. }
  135.  
  136. Samochod::Samochod(std::string marka, long long przebieg, std::string model, double paliwo)
  137. : PojazdKolowy(marka, przebieg), model_(model), paliwo_(paliwo)
  138. {
  139. }
  140.  
  141. Samochod::~Samochod()
  142. {
  143. }
  144.  
  145. void Samochod::jedz(int km)
  146. {
  147. PojazdKolowy::jedz(km);
  148. paliwo_ -= km / 10.0;
  149. }
  150.  
  151. void Samochod::prezentuj() const
  152. {
  153. PojazdKolowy::prezentuj();
  154. std::cout << "Model: " << model_ << std::endl;
  155. std::cout << "Paliwo: " << paliwo_ << std::endl;
  156. }
  157.  
  158. void Samochod::ustaw(std::string marka, long long przebieg, std::string model, double paliwo)
  159. {
  160. PojazdKolowy::ustaw(marka, przebieg);
  161. model_ = model;
  162. paliwo_ = paliwo;
  163. }
  164.  
  165. Taksowka::Taksowka(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr)
  166. : Samochod(marka, przebieg, model, paliwo), taksometr_(taksometr)
  167. {
  168. }
  169.  
  170. Taksowka::~Taksowka()
  171. {
  172. }
  173.  
  174. void Taksowka::jedz(int km)
  175. {
  176. Samochod::jedz(km);
  177. taksometr_ = std::min(2 * km, 10);
  178. }
  179.  
  180. void Taksowka::prezentuj() const
  181. {
  182. Samochod::prezentuj();
  183. std::cout << "Do zaplaty: " << taksometr_ << std::endl;
  184. }
  185.  
  186. void Taksowka::ustaw(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr)
  187. {
  188. Samochod::ustaw(marka, przebieg, model, paliwo);
  189. taksometr_ = taksometr;
  190. }
  191.  
  192. Autostrada::Autostrada(int dystans)
  193. : dystans_(dystans)
  194. {
  195. }
  196.  
  197. void Autostrada::przepusc(Pojazd& pojazd)
  198. {
  199. std::cout << "Przy wyjezdzie:" << std::endl;
  200. pojazd.prezentuj();
  201. pojazd.jedz(dystans_);
  202. std::cout << "Po wyjezdzie:" << std::endl;
  203. pojazd.prezentuj();
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement