Menu
Coddy logo textTech

Система выдачи книг

Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 103 из 110.

challenge icon

Задание

Легко

В предыдущем уроке вы создали классы Book и User с базовыми свойствами. Теперь пришло время построить полноценную систему заимствования с классом Library, который управляет всем процессом выдачи книг.

Вы создадите новый файл и обновите существующие файлы для реализации логики заимствования:

  • book.dart: Сохраните существующий класс Book со свойствами isbn, title, author, isAvailable и методом toString().
  • user.dart: Сохраните существующий класс User со свойствами id, name, borrowedBooks и методом toString().
  • library.dart: Создайте новый класс Library, который управляет книгами и пользователями. Он должен иметь два списка: один для books и один для users. Включите методы для:
    • addBook(Book book) — добавляет книгу в коллекцию библиотеки
    • registerUser(User user) — регистрирует пользователя в библиотеке
    • borrowBook(String isbn, String userId) — находит книгу и пользователя, затем, если книга существует, доступна, и пользователь существует, помечает книгу как недоступную, добавляет ее в список заимствованных книг пользователя и выводит userId borrowed "title". Если книга не найдена, выводит Book not found. Если книга недоступна, выводит Book not available. Если пользователь не найден, выводит User not found.
    • returnBook(String isbn, String userId) — находит книгу и пользователя, затем, если оба существуют и у пользователя есть эта книга, помечает книгу как доступную, удаляет ее из списка заимствованных книг пользователя и выводит userId returned "title". Если книга не найдена, выводит Book not found. Если пользователь не найден, выводит User not found.
  • main.dart: Импортируйте все ваши файлы и продемонстрируйте работу системы заимствования. Создайте Library, добавьте две книги (978-0-13-468599-1, The Pragmatic Programmer, David Thomas и 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford) и зарегистрируйте одного пользователя (U001, Alice Johnson). Затем:
    1. Возьмите первую книгу для Alice
    2. Попробуйте взять ту же книгу еще раз (должно закончиться ошибкой)
    3. Возьмите вторую книгу для Alice
    4. Выведите объект Alice, чтобы показать количество заимствованных книг
    5. Верните первую книгу
    6. Снова выведите объект Alice, чтобы показать обновленное количество

Ожидаемый вывод:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

Попробуйте сами

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: Создать экземпляр Library
  
  // TODO: Создать две книги:
  // - Книга 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - Книга 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: Добавить обе книги в библиотеку
  
  // TODO: Создать пользователя с id 'U001' и name 'Alice Johnson'
  
  // TODO: Зарегистрировать пользователя в библиотеке
  
  // TODO: Взять первую книгу для Alice
  
  // TODO: Попробовать взять ту же книгу снова (должно завершиться ошибкой 'Book not available')
  
  // TODO: Взять вторую книгу для Alice
  
  // TODO: Вывести Alice, чтобы показать количество взятых ею книг
  
  // TODO: Вернуть первую книгу
  
  // TODO: Снова вывести Alice, чтобы показать обновленное количество
}

Все уроки раздела Объектно-ориентированное программирование