„Biblioteka Sobczak Natalia


Etap 4. Przestrzeń nazw, typ statyczny, przeciążenie operatorów, dziedziczenie i polimorfizm


Download 69.33 Kb.
bet4/5
Sana05.01.2022
Hajmi69.33 Kb.
#219984
1   2   3   4   5
Bog'liq
Projekt Sobczak 10B

Etap 4. Przestrzeń nazw, typ statyczny, przeciążenie operatorów, dziedziczenie i polimorfizm

  1. 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;


};
}

  1. 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;


};

  1. Wykonanie podziału logiki systemu na podsystemu za pomocą przestrzeni nazw.

using namespace generacja_danych;

  1. 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:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling