„Biblioteka Sobczak Natalia
Etap 4. Przestrzeń nazw, typ statyczny, przeciążenie operatorów, dziedziczenie i polimorfizm
Download 69.33 Kb.
|
Projekt Sobczak 10B
Etap 4. Przestrzeń nazw, typ statyczny, przeciążenie operatorów, dziedziczenie i polimorfizm
Rozwinięcie architektury programu używając dziedziczenia z bazową klasą abstrakcyjną. Zdefiniowanie tablicy obiektów, zachowujących się jak obiekty różnych typów, zademonstrowanie mechanizmu polimorfizmu. //Etap 4 pkt 1 - Dziedziczenie class KsiazkaPrzygodowa : public Ksiazka { public: KsiazkaPrzygodowa(const std::string &nazwa, const std::string &isbn, unsigned int wydanie, const std::string &autor) : Ksiazka(nazwa, isbn, wydanie, autor) { // } std::string nazwa_dzialu() override; //metoda zastepujaca metode bazowa }; class KsiazkaRomantyczna : public Ksiazka { public: KsiazkaRomantyczna(const std::string &nazwa, const std::string &isbn, unsigned int wydanie, const std::string &autor) : Ksiazka(nazwa, isbn, wydanie, autor) { // } std::string nazwa_dzialu() override; }; class KsiazkaKryminalna : public Ksiazka { public: KsiazkaKryminalna(const std::string &nazwa, const std::string &isbn, unsigned int wydanie, const std::string &autor) : Ksiazka(nazwa, isbn, wydanie, autor) { // } std::string nazwa_dzialu() override; }; class KsiazkaInna : public Ksiazka { public: KsiazkaInna(const std::string &nazwa, const std::string &isbn, unsigned int wydanie, const std::string &autor) : Ksiazka(nazwa, isbn, wydanie, autor) { // } std::string nazwa_dzialu() override; }; } Zadeklarowanie w polu prywatnym klasy (lub klas), zdefiniowanie i użycie statycznego obiekt własnego typu lub tablicę obiektów albo wskaźników do obiektów na stercie. private: //ksiazka.h static int ilosc_ksiazek_wyprodukowanych_kiedykolwiek; }; Wykonanie podziału logiki systemu na podsystemu za pomocą przestrzeni nazw. using namespace generacja_danych; Przeciążenie operatorów: <<, >>, [], (), =. Operator przypisania powinien być w każdej klasie agregującej. friend std::ostream & operator<<(std::ostream &os, const Biblioteka& biblioteka); //ETAP 4 przeciazenie << friend std::istream & operator>>(std::istream &is, Biblioteka& biblioteka); //ETAP 4 przeciazenie >> std::ostream &operator<<(std::ostream &os, const Biblioteka &biblioteka) { //ETAP 4 przeciazenie << if (biblioteka.ilosc_ksiazek == 0) { os << "W bibliotece " << biblioteka.nazwa << " nie ma ksiazek." << std::endl; } else { os << std::setw(4) << "Lp" << std::setw(20) << "Tytul" << std::setw(20) << "ISBN" << std::endl; for (unsigned int i = 0; i < biblioteka.ilosc_ksiazek; ++i) { os << std::setw(4) << i << std::setw(20) << biblioteka.ksiazki[i]->nazwa << std::setw(20) << biblioteka.ksiazki[i]->isbn << std::endl; } } return os; } std::istream &operator>>(std::istream &is, Biblioteka &biblioteka) { std::getline(is, biblioteka.nazwa); return is; } Download 69.33 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling