Menu
Coddy logo textTech

Sistema de Empréstimos

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 103 de 110.

challenge icon

Desafio

Fácil

Na lição anterior, você criou as classes Book e User com propriedades básicas. Agora é hora de construir um sistema de empréstimo adequado com uma classe Library que gerencia todo o processo de empréstimo.

Você criará um novo arquivo e atualizará seus arquivos existentes para implementar a lógica de empréstimo:

  • book.dart: Mantenha sua classe Book existente com isbn, title, author, isAvailable e toString().
  • user.dart: Mantenha sua classe User existente com id, name, borrowedBooks e toString().
  • library.dart: Crie uma nova classe Library que gerencia livros e usuários. Ela deve ter duas listas: uma para books e outra para users. Inclua métodos para:
    • addBook(Book book) - adiciona um livro à coleção da biblioteca
    • registerUser(User user) - adiciona um usuário à biblioteca
    • borrowBook(String isbn, String userId) - encontra o livro e o usuário; então, se o livro existir, estiver disponível e o usuário existir, marca o livro como indisponível, adiciona-o aos livros emprestados do usuário e imprime userId borrowed "title". Se o livro não existir, imprima Book not found. Se o livro não estiver disponível, imprima Book not available. Se o usuário não existir, imprima User not found.
    • returnBook(String isbn, String userId) - encontra o livro e o usuário; então, se ambos existirem e o usuário tiver esse livro, marca o livro como disponível, remove-o dos livros emprestados do usuário e imprime userId returned "title". Se o livro não existir, imprima Book not found. Se o usuário não existir, imprima User not found.
  • main.dart: Importe todos os seus arquivos e demonstre o sistema de empréstimo. Crie uma Library, adicione dois livros (978-0-13-468599-1, The Pragmatic Programmer, David Thomas e 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford) e registre um usuário (U001, Alice Johnson). Então:
    1. Empreste o primeiro livro para Alice
    2. Tente emprestar o mesmo livro novamente (deve falhar)
    3. Empreste o segundo livro para Alice
    4. Imprima Alice para mostrar sua contagem de livros emprestados
    5. Devolva o primeiro livro
    6. Imprima Alice novamente para mostrar a contagem atualizada

Saída esperada:

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)

Experimente você mesmo

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

void main() {
  // TODO: Criar uma instância de Library
  
  // TODO: Criar dois livros:
  // - Livro 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - Livro 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: Adicionar ambos os livros à biblioteca
  
  // TODO: Criar um usuário com id 'U001' e name 'Alice Johnson'
  
  // TODO: Registrar o usuário na biblioteca
  
  // TODO: Emprestar o primeiro livro para Alice
  
  // TODO: Tentar emprestar o mesmo livro novamente (deve falhar com 'Book not available')
  
  // TODO: Emprestar o segundo livro para Alice
  
  // TODO: Imprimir Alice para mostrar sua contagem de livros emprestados
  
  // TODO: Devolver o primeiro livro
  
  // TODO: Imprimir Alice novamente para mostrar a contagem atualizada
}

Todas as lições de Programação Orientada a Objetos