Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Pojazd
- {
- public:
- virtual ~Pojazd();
- virtual void jedz(int km) = 0;
- virtual void prezentuj() const = 0;
- };
- class PojazdKolowy : public Pojazd
- {
- public:
- PojazdKolowy();
- PojazdKolowy(std::string marka, long long przebieg);
- ~PojazdKolowy();
- void jedz(int km);
- void prezentuj() const;
- void ustaw(std::string marka, long long przebieg);
- private:
- std::string marka_;
- long long przebieg_;
- };
- class Samochod : public PojazdKolowy
- {
- public:
- Samochod(std::string marka, long long przebieg, std::string model, double paliwo);
- ~Samochod();
- void jedz(int km);
- void prezentuj() const;
- void ustaw(std::string marka, long long przebieg, std::string model, double paliwo);
- private:
- std::string model_;
- double paliwo_;
- };
- class Taksowka : public Samochod
- {
- public:
- Taksowka(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr);
- ~Taksowka();
- void jedz(int km);
- void prezentuj() const;
- void ustaw(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr);
- private:
- int taksometr_;
- };
- class Autostrada
- {
- public:
- Autostrada(int dystans);
- void przepusc(Pojazd& pojazd);
- private:
- int dystans_;
- };
- int main()
- {
- PojazdKolowy pk1("Rover", 2000);
- pk1.jedz(24);
- pk1.prezentuj();
- Samochod s1("Opel", 20000, "Astra", 15);
- s1.jedz(2);
- s1.prezentuj();
- Taksowka t1("VW", 870000000, "Passat", 60, 100);
- t1.jedz(24);
- t1.prezentuj();
- std::cout << "\nPolimorfizm.\n" << std::endl;
- Pojazd* p1;
- p1 = &pk1;
- p1->prezentuj();
- p1 = &s1;
- p1->prezentuj();
- p1 = &t1;
- p1->prezentuj();
- std::cout << "\nAutostrada\n" << std::endl;
- Autostrada a1(400);
- a1.przepusc(t1);
- return 0;
- }
- Pojazd::~Pojazd()
- {
- }
- PojazdKolowy::PojazdKolowy()
- : marka_("Opel"), przebieg_(5)
- {
- }
- PojazdKolowy::PojazdKolowy(std::string marka, long long przebieg)
- : marka_(marka), przebieg_(przebieg)
- {
- }
- PojazdKolowy::~PojazdKolowy()
- {
- }
- void PojazdKolowy::jedz(int km)
- {
- przebieg_ += km;
- }
- void PojazdKolowy::prezentuj() const
- {
- std::cout << "Marka: " << marka_ << std::endl;
- std::cout << "Przebieg: " << przebieg_ << std::endl;
- }
- void PojazdKolowy::ustaw(std::string marka, long long przebieg)
- {
- marka_ = marka;
- przebieg_ = przebieg;
- }
- Samochod::Samochod(std::string marka, long long przebieg, std::string model, double paliwo)
- : PojazdKolowy(marka, przebieg), model_(model), paliwo_(paliwo)
- {
- }
- Samochod::~Samochod()
- {
- }
- void Samochod::jedz(int km)
- {
- PojazdKolowy::jedz(km);
- paliwo_ -= km / 10.0;
- }
- void Samochod::prezentuj() const
- {
- PojazdKolowy::prezentuj();
- std::cout << "Model: " << model_ << std::endl;
- std::cout << "Paliwo: " << paliwo_ << std::endl;
- }
- void Samochod::ustaw(std::string marka, long long przebieg, std::string model, double paliwo)
- {
- PojazdKolowy::ustaw(marka, przebieg);
- model_ = model;
- paliwo_ = paliwo;
- }
- Taksowka::Taksowka(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr)
- : Samochod(marka, przebieg, model, paliwo), taksometr_(taksometr)
- {
- }
- Taksowka::~Taksowka()
- {
- }
- void Taksowka::jedz(int km)
- {
- Samochod::jedz(km);
- taksometr_ = std::min(2 * km, 10);
- }
- void Taksowka::prezentuj() const
- {
- Samochod::prezentuj();
- std::cout << "Do zaplaty: " << taksometr_ << std::endl;
- }
- void Taksowka::ustaw(std::string marka, long long przebieg, std::string model, double paliwo, int taksometr)
- {
- Samochod::ustaw(marka, przebieg, model, paliwo);
- taksometr_ = taksometr;
- }
- Autostrada::Autostrada(int dystans)
- : dystans_(dystans)
- {
- }
- void Autostrada::przepusc(Pojazd& pojazd)
- {
- std::cout << "Przy wyjezdzie:" << std::endl;
- pojazd.prezentuj();
- pojazd.jedz(dystans_);
- std::cout << "Po wyjezdzie:" << std::endl;
- pojazd.prezentuj();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement