diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..d32b3c90d9ee0db0d622a7dbaea0452a0698ac21 Binary files /dev/null and b/main differ diff --git a/main.cpp b/main.cpp index 966f5a1167082bc67257ffc8507f72cbacc49ca2..93e9082cd9afc01cabd375c1bbd46df4a7bcd48a 100644 --- a/main.cpp +++ b/main.cpp @@ -2,7 +2,7 @@ #include <iostream> #include "./sources/Biblioteca.hpp" -#include "./sources/Livro.cpp" +#include "./sources/Livro.hpp" using namespace std; diff --git a/sources/DescricaoObra.cpp b/sources/DescricaoObra.cpp index a038c1d660a5708e96b79a1e7faf0da316f2c826..189eb106d5c1fccdecd8400b92569ff95accac23 100644 --- a/sources/DescricaoObra.cpp +++ b/sources/DescricaoObra.cpp @@ -13,20 +13,15 @@ void DescricaoObra::mostrarDetalhes() const { cout << "Ano de Publicação: " << anoPublicacao << "\n"; } -// Operators -bool DescricaoObra::operator==(const DescricaoObra& other) const { - return this->titulo == other.titulo; -} - // Methods -string DescricaoObra::getTipo() { +string DescricaoObra::getTipo() const { return this->tipo; } -string DescricaoObra::getTitulo(){ +string DescricaoObra::getTitulo() const { return this->titulo; } -int DescricaoObra::getAnoPublicacao(){ +int DescricaoObra::getAnoPublicacao() const { return this->anoPublicacao; } diff --git a/sources/DescricaoObra.hpp b/sources/DescricaoObra.hpp index b290b38ad5b0d4c7f5ebf650f8cc884f5fc11bad..7e839f07425c923198ce5e104bd3a9c0dd7d24b7 100644 --- a/sources/DescricaoObra.hpp +++ b/sources/DescricaoObra.hpp @@ -15,17 +15,14 @@ class DescricaoObra { public: // Contructor - DescricaoObra(); + DescricaoObra() {}; DescricaoObra(const string& tipo, const string& titulo, int ano); - virtual void mostrarDetalhes() const = 0; - - // Operators - bool operator==(const DescricaoObra& other) const; + virtual void mostrarDetalhes() const; // Methods - string getTitulo(); - string getTipo(); - int getAnoPublicacao(); + string getTitulo() const ; + string getTipo() const ; + int getAnoPublicacao() const ; }; diff --git a/sources/Livro.cpp b/sources/Livro.cpp index 3d5eb715d27538e537c27649cd8339b43fa4e4be..463378b9b56477a599c1d5eed147a7eb69231e70 100644 --- a/sources/Livro.cpp +++ b/sources/Livro.cpp @@ -5,6 +5,13 @@ using namespace std; +Livro::Livro(const DescricaoObra& outro) { + if (outro.getTipo() == "livro") { + Livro l = static_cast<Livro>(outro); + Livro(l.getTitulo(), l.getAnoPublicacao(), l.getAutor(), l.getEditora()); + } +} + Livro::Livro(const string& t, int ano, const string& a, const string& e) : DescricaoObra("livro", t, ano), autor(a), editora(e) {} @@ -16,10 +23,10 @@ void Livro::mostrarDetalhes() const { } // Methods -string Livro::getAutor(){ +string Livro::getAutor() const { return this->autor; } -string Livro::getEditora(){ +string Livro::getEditora() const { return this->editora; } diff --git a/sources/Livro.hpp b/sources/Livro.hpp index 92943c8d9280813572e0d1a021bed40a9cdeca29..c164a3c17fd5ed70cba2a47d730313840389f76f 100644 --- a/sources/Livro.hpp +++ b/sources/Livro.hpp @@ -13,12 +13,13 @@ class Livro: public DescricaoObra { public: // Contructor + Livro(const DescricaoObra& outro); Livro(const string& t, int ano, const string& a, const string& e); void mostrarDetalhes() const override; // Methods - string getAutor(); - string getEditora(); + string getAutor() const ; + string getEditora() const ; }; diff --git a/sources/Obra.hpp b/sources/Obra.hpp index 22971ccd019999a37d984ef80e63247c01d1e7cf..672bc26c636d74f2bdbfda303cabdcadbdf2a80d 100644 --- a/sources/Obra.hpp +++ b/sources/Obra.hpp @@ -13,7 +13,7 @@ class Obra { // Contructor Obra(); Obra(DescricaoObra& descricao); - virtual void mostrarDetalhes() const; + void mostrarDetalhes() const; // Methods bool emprestar(); diff --git a/sources/Periodico.cpp b/sources/Periodico.cpp index dac16320081e83c605f657c58dd2d6d092950d1c..fd2e836afa90cb2f2acec240923f65a1895cf7f8 100644 --- a/sources/Periodico.cpp +++ b/sources/Periodico.cpp @@ -3,6 +3,13 @@ #include "./Periodico.hpp" // Contructor +Periodico::Periodico(const DescricaoObra& outro) { + if (outro.getTipo() == "livro") { + Periodico p = static_cast<Periodico>(outro); + Periodico(p.getTitulo(), p.getAnoPublicacao(), p.getVolume(), p.getMes()); + } +} + Periodico::Periodico(const std::string& t, int ano, int vol, int m) : DescricaoObra("periodico", t, ano), volume(vol), mes(m) {} @@ -13,9 +20,10 @@ void Periodico::mostrarDetalhes() const { } // Methods -int Periodico::getVolume(){ +int Periodico::getVolume() const { return this->volume; } -int Periodico::getMes(){ + +int Periodico::getMes() const { return this->mes; } diff --git a/sources/Periodico.hpp b/sources/Periodico.hpp index 2041eecc78435f29f0c5d2ac0304cf1c2d5e6a8b..c3142c2e165076da9cc7f8584dd7be40f0939722 100644 --- a/sources/Periodico.hpp +++ b/sources/Periodico.hpp @@ -12,12 +12,13 @@ class Periodico: public DescricaoObra { public: // Contructor + Periodico(const DescricaoObra& outro); Periodico(const string& t, int ano, int vol, int m); void mostrarDetalhes() const override; // Methods - int getVolume(); - int getMes(); + int getVolume() const; + int getMes() const; };