Бібліотечна система
Бібліотечна система для управління книгами
Завантаження...
Пошук...
Нічого не знайдено
Клас Author

Клас, що представляє автора книг у бібліотечній системі Детальніше...

#include <Author.hpp>

Схема успадкувань для Author
Діаграма зв'язків класу Author:

Загальнодоступні елементи

 Author ()
 Створює об'єкт автора зі значеннями за замовчуванням
 
 Author (std::string_view firstName, std::string_view lastName, std::string_view bestBook, int numWrittenBooks)
 Створює об'єкт автора з заданими параметрами
 
std::string getFirstName () const noexcept
 Отримує ім'я автора
 
std::string getLastName () const noexcept
 Отримує прізвище автора
 
int getNumWrittenBooks () const noexcept
 Отримує кількість написаних книг
 
std::string getBestBook () const noexcept
 Отримує назву кращої книги автора
 
void display () const override
 Виводить повну інформацію про автора у консоль @override.
 
double calculateStat () const override
 Обчислює статистику автора @override.
 
bool search (const std::string &keyword) const override
 Виконує пошук за ключовим словом @override.
 
void inputFromKeyboard ()
 Заповнює дані автора з консолі
 
bool searchByName (const std::string &searchName) const
 Шукає автора за іменем
 
void addBook (const std::string &bookTitle)
 Додає книгу до списку робіт автора
 
void setFirstName (std::string_view firstName) noexcept
 Встановлює нове ім'я автора
 
void setLastName (std::string_view lastName) noexcept
 Встановлює нове прізвище автора
 
void setBestBook (std::string_view bestBook) noexcept
 Встановлює нову кращу книгу
 
void setNumWrittenBooks (int numWrittenBooks) noexcept
 Встановлює кількість написаних книг
 
void setAuthorBooks (const std::vector< std::string > &authorBooks) noexcept
 Встановлює повний список книг автора
 
const std::vector< std::string > & getBooks () const noexcept
 Отримує список книг автора
 
const std::vector< std::string > & getAuthorBooks () const noexcept
 Отримує список книг автора
 
- Загальнодоступні елементи успадковано з AbstractCollection
 AbstractCollection (std::string_view id, std::string_view name)
 Конструктор з параметрами
 
virtual ~AbstractCollection ()=default
 Віртуальний деструктор
 
std::string getId () const noexcept
 Отримує унікальний ідентифікатор колекції
 
std::string getName () const noexcept
 Отримує назву колекції
 
virtual void setId (std::string_view newId) noexcept
 Встановлює новий ідентифікатор колекції
 
void setName (std::string_view newName) noexcept
 Встановлює нову назву колекції
 

Загальнодоступні статичні елементи

static std::string trimAndReduceSpaces (std::string_view str)
 Видаляє зайві пробіли з рядка (з початку, кінця та між словами).
 
static double calculateAverageBooks (const std::vector< Author > &authors)
 Обчислює середню кількість книг для списку авторів
 
static void processJsonData (const nlohmann::json &item, Book &book)
 Обробляє JSON дані для створення автора
 

Дружні класи

std::ostream & operator<< (std::ostream &os, const Author &author)
 Виводить ім'я та прізвище автора у потік
 

Детальний опис

Клас, що представляє автора книг у бібліотечній системі

Реалізує всі необхідні операції для роботи з даними автора:

  • Зберігання основних даних
  • Валідація вхідних параметрів
  • Взаємодія з книгами
  • Серіалізація/десеріалізація
Інваріант
  • Ім'я та прізвище мають містити хоча б один символ
  • Кількість книг не може бути від'ємною

Конструктор(и)

◆ Author() [1/2]

Author::Author ( )

Створює об'єкт автора зі значеннями за замовчуванням

Конструктор за замовчуванням.

Післяумови
Всі рядкові поля пусті, кількість книг = 0

Ініціалізує об'єкт Author з порожніми значеннями полів:

  • ID: "0"
  • Назва: порожній рядок
  • Ім'я: порожній рядок
  • Прізвище: порожній рядок
  • Кількість написаних книг: 0

◆ Author() [2/2]

Author::Author ( std::string_view  firstName,
std::string_view  lastName,
std::string_view  bestBook,
int  numWrittenBooks 
)

Створює об'єкт автора з заданими параметрами

Конструктор з параметрами.

Аргументи
firstNameІм'я автора (не пустий рядок)
lastNameПрізвище автора (не пустий рядок)
bestBookНазва кращої книги (може бути пустою)
numWrittenBooksКількість написаних книг (>= 0)
Обробка виняткових ситуацій
std::invalid_argumentЯкщо ім'я/прізвище пусті або кількість книг від'ємна
Аргументи
firstNameІм'я автора.
lastNameПрізвище автора.
bestBookНазва кращої книги автора.
numWrittenBooksКількість написаних книг.

Ініціалізує об'єкт Author з переданими значеннями. Назва автора (для AbstractCollection) формується як "Ім'я Прізвище".

Опис методів компонент

◆ addBook()

void Author::addBook ( const std::string &  bookTitle)

Додає книгу до списку робіт автора

Додає книгу до списку робіт автора.

Аргументи
bookTitleISBN або назва книги
Післяумови
Кількість книг збільшується на 1
Аргументи
bookTitleНазва книги.
Післяумови
:
  • Книга додається до списку m_authorBooks.
  • Кількість написаних книг (m_numWrittenBooks) збільшується на 1.
  • Якщо це перша книга, вона стає кращою (m_bestBook).

◆ calculateAverageBooks()

double Author::calculateAverageBooks ( const std::vector< Author > &  authors)
static

Обчислює середню кількість книг для списку авторів

Обчислює середню кількість книг для групи авторів.

Аргументи
authorsВектор авторів для аналізу
Повертає
Середнє арифметичне кількості книг
Обробка виняткових ситуацій
std::invalid_argumentЯкщо передано пустий вектор
Аргументи
authorsВектор авторів.
Повертає
Середнє значення кількості книг на автора.
Обробка виняткових ситуацій
std::invalid_argumentЯкщо вектор порожній.

Використовує формулу:

\[
\text{Середнє} = \frac{\sum_{i=1}^{n} \text{books}_i}{n}
\]

◆ calculateStat()

double Author::calculateStat ( ) const
overridevirtual

Обчислює статистику автора @override.

Повертає кількість книг як статистичний показник

Повертає
Кількість написаних книг як double
Кількість книг у вигляді double

Реалізує AbstractCollection.

◆ display()

void Author::display ( ) const
overridevirtual

Виводить повну інформацію про автора у консоль @override.

Виводить інформацію про автора.

Формат виводу:

  1. Ім'я та прізвище
  2. Кількість книг
  3. Найкраща книга
  4. Список ISBN книг (по одному на рядок)

    Виводить наступні дані:

  • Ім'я та прізвище автора.
  • Назву кращої книги.
  • Кількість написаних книг.

Реалізує AbstractCollection.

◆ getAuthorBooks()

const std::vector< std::string > & Author::getAuthorBooks ( ) const
inlinenoexcept

Отримує список книг автора

Повертає
Константне посилання на вектор ISBN книг
Нотатки
Альтернативний метод до getBooks(), зберігається для сумісності

◆ getBestBook()

std::string Author::getBestBook ( ) const
inlinenoexcept

Отримує назву кращої книги автора

Повертає
Константне посилання на рядок з назвою

◆ getBooks()

const std::vector< std::string > & Author::getBooks ( ) const
inlinenoexcept

Отримує список книг автора

Повертає
Константне посилання на вектор ISBN

◆ getFirstName()

std::string Author::getFirstName ( ) const
inlinenoexcept

Отримує ім'я автора

Повертає
Константне посилання на рядок з ім'ям

◆ getLastName()

std::string Author::getLastName ( ) const
inlinenoexcept

Отримує прізвище автора

Повертає
Константне посилання на рядок з прізвищем

◆ getNumWrittenBooks()

int Author::getNumWrittenBooks ( ) const
inlinenoexcept

Отримує кількість написаних книг

Повертає
Ціле число >= 0

◆ inputFromKeyboard()

void Author::inputFromKeyboard ( )

Заповнює дані автора з консолі

Вводить дані автора з клавіатури.

Послідовно запитує:

  1. Ім'я та прізвище
  2. Назву кращої книги
  3. Кількість написаних книг
    Обробка виняткових ситуацій
    std::invalid_argumentЯкщо введені некоректні дані
    Запитує у користувача:
  • Повне ім'я автора (ім'я та прізвище).
  • Назву кращої книги.
    Обробка виняткових ситуацій
    std::runtime_errorЯкщо ім'я автора порожнє.

◆ processJsonData()

void Author::processJsonData ( const nlohmann::json &  item,
Book book 
)
static

Обробляє JSON дані для створення автора

Аргументи
itemJSON об'єкт з даними автора
bookКнига, до якої додається автор
itemJSON об'єкт з даними
bookПосилання на книгу для додавання автора

Аналізує поле "Author" з JSON, розділяє повне ім'я на ім'я та прізвище. Якщо поле "Author" відсутнє або порожнє, автор не додається.

Обробка виняткових ситуацій
std::invalid_argumentЯкщо ім'я автора порожнє
nlohmann::json::exceptionПри помилках парсингу JSON

◆ search()

bool Author::search ( const std::string &  keyword) const
overridevirtual

Виконує пошук за ключовим словом @override.

Аргументи
keywordРядок для пошуку
Повертає
true - якщо знайдено збіг в імені, прізвищі або назві книги
Нотатки
Пошук нечутливий до регістру

Реалізує AbstractCollection.

◆ searchByName()

bool Author::searchByName ( const std::string &  searchName) const

Шукає автора за іменем

Аргументи
searchNameІм'я для пошуку
Повертає
true - якщо ім'я збігається (без урахування регістру)
Аргументи
searchNameІм'я для пошуку
Повертає
true, якщо ім'я знайдено в повному імені, імені або прізвищі автора
Нотатки
Пошук нечутливий до регістру

◆ setAuthorBooks()

void Author::setAuthorBooks ( const std::vector< std::string > &  authorBooks)
inlinenoexcept

Встановлює повний список книг автора

Аргументи
authorBooksВектор ISBN книг

◆ setBestBook()

void Author::setBestBook ( std::string_view  bestBook)
inlinenoexcept

Встановлює нову кращу книгу

Аргументи
bestBookНазва нової кращої книги

◆ setFirstName()

void Author::setFirstName ( std::string_view  firstName)
inlinenoexcept

Встановлює нове ім'я автора

Аргументи
firstNameНове ім'я (не пусте)

◆ setLastName()

void Author::setLastName ( std::string_view  lastName)
inlinenoexcept

Встановлює нове прізвище автора

Аргументи
lastNameНове прізвище (не пусте)

◆ setNumWrittenBooks()

void Author::setNumWrittenBooks ( int  numWrittenBooks)
inlinenoexcept

Встановлює кількість написаних книг

Аргументи
numWrittenBooksНова кількість (>= 0)

◆ trimAndReduceSpaces()

std::string Author::trimAndReduceSpaces ( std::string_view  str)
static

Видаляє зайві пробіли з рядка (з початку, кінця та між словами).

Аргументи
strВхідний рядок.
Повертає
Рядок без зайвих пробілів.

Документация до дружніх класів та відповідних функцій

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const Author author 
)
friend

Виводить ім'я та прізвище автора у потік

Аргументи
osВихідний потік
authorАвтор для виведення
Повертає
Потік після виведення

Документація цих класів була створена з файлів: