17#include <nlohmann/json.hpp>
50 std::vector<Author> m_authors;
52 std::string m_publisher;
62 bool isValidISBN(std::string_view isbn)
const;
69 void processTitle(
const nlohmann::json& jsonData);
76 void processISBN(
const nlohmann::json& jsonData);
82 void processPublisher(
const nlohmann::json& jsonData);
89 void processNumPages(
const nlohmann::json& jsonData);
96 void processYearPublished(
const nlohmann::json& jsonData);
102 void processBookId(
const nlohmann::json& jsonData);
109 void processAuthor(
const nlohmann::json& jsonData);
129 Book(std::string_view title, std::string_view bookId);
146 std::string_view title,
147 std::string_view bookId,
148 std::string_view isbn,
149 std::string_view publisher,
164 std::string
getTitle() const noexcept {
return m_title; }
170 const std::vector<Author>&
getAuthors() const noexcept {
return m_authors; }
214 bool search(const std::
string& keyword) const override;
235 void fromJson(const nlohmann::json& jsonData);
241 std::
string getISBN() const noexcept {
return m_isbn; }
265 void setISBN(std::string_view newISBN)
noexcept { m_isbn = newISBN; }
271 void setPublisher(std::string_view newPublisher)
noexcept { m_publisher = newPublisher; }
277 void setNumPages(
int newNumPages)
noexcept { m_numPages = newNumPages; }
283 void setYearPublished(
int newYearPublished)
noexcept { m_yearPublished = newYearPublished; }
289 void setAuthors(
const std::vector<Author>& authors)
noexcept { m_authors = authors; }
298 for(
auto& author : m_authors) {
312 static std::optional<Book>
createFromJson(
const nlohmann::json& item);
Визначає абстрактний базовий клас для всіх колекційних об'єктів у системі
Визначення класу для роботи з даними авторів книг у бібліотечній системі
constexpr int MIN_PAGES
Мінімальна допустима кількість сторінок
Definition Book.hpp:26
constexpr int MIN_YEAR_PUBLISHED
Мінімальний допустимий рік видання
Definition Book.hpp:27
Абстрактний базовий клас, що визначає інтерфейс для роботи з колекціями
Definition AbstractCollection.hpp:30
void setName(std::string_view newName) noexcept
Встановлює нову назву колекції
Definition AbstractCollection.hpp:73
Клас, що представляє автора книг у бібліотечній системі
Definition Author.hpp:46
bool searchByName(const std::string &searchName) const
Шукає автора за іменем
Definition Author.cpp:237
void setBestBook(std::string_view bestBook) noexcept
Встановлює нову кращу книгу
Definition Author.hpp:183
Клас, що представляє книгу в бібліотечній системі
Definition Book.hpp:46
const std::vector< Author > & getAuthors() const noexcept
Отримує список авторів книги
Definition Book.hpp:170
void setAuthors(const std::vector< Author > &authors) noexcept
Встановити новий список авторів
Definition Book.hpp:289
std::string getISBN() const noexcept
Отримати ISBN книги
Definition Book.hpp:241
bool setBestBookForAuthor(const std::string &authorName, const std::string &bookTitle)
Встановлює найкращу книгу для автора
Definition Book.hpp:297
int getYearPublished() const noexcept
Отримати рік видання
Definition Book.hpp:259
void addAuthor(const Author &author)
Додає автора до списку авторів книги
Definition Book.cpp:88
Book()
Конструктор за замовчуванням
Definition Book.cpp:36
std::string getPublisher() const noexcept
Отримати видавця книги
Definition Book.hpp:247
void fromJson(const nlohmann::json &jsonData)
Завантажує дані книги з JSON об'єкту
Definition Book.cpp:190
double calculateStat() const noexcept override
Обчислює статистичні дані про книгу @override.
Definition Book.cpp:138
void display() const override
Виводить детальну інформацію про книгу у консоль @override.
Definition Book.cpp:106
void setPublisher(std::string_view newPublisher) noexcept
Встановити нового видавця
Definition Book.hpp:271
void setYearPublished(int newYearPublished) noexcept
Встановити новий рік видання
Definition Book.hpp:283
bool search(const std::string &keyword) const override
Виконує пошук за ключовим словом
Definition Book.cpp:153
std::string getTitle() const noexcept
Отримує назву книги
Definition Book.hpp:164
void setISBN(std::string_view newISBN) noexcept
Встановити новий ISBN.
Definition Book.hpp:265
void setNumPages(int newNumPages) noexcept
Встановити нову кількість сторінок
Definition Book.hpp:277
void setTitle(std::string_view newTitle)
Встановлює нову назву книги
Definition Book.hpp:177
static std::optional< Book > createFromJson(const nlohmann::json &item)
Створює книгу з JSON даних
Definition Book.cpp:383
int getNumPages() const noexcept
Отримати кількість сторінок
Definition Book.hpp:253