Menu
Coddy logo textTech

Sistema de préstamos

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 103 de 110.

challenge icon

Desafío

Fácil

En la lección anterior, creaste las clases Book y User con propiedades básicas. Ahora es el momento de construir un sistema de préstamo adecuado con una clase Library que gestione todo el proceso de préstamo.

Crearás un nuevo archivo y actualizarás tus archivos existentes para implementar la lógica de préstamo:

  • book.dart: Mantén tu clase Book existente con isbn, title, author, isAvailable y toString().
  • user.dart: Mantén tu clase User existente con id, name, borrowedBooks y toString().
  • library.dart: Crea una nueva clase Library que gestione libros y usuarios. Debe tener dos listas: una para books y otra para users. Incluye métodos para:
    • addBook(Book book) - añade un libro a la colección de la biblioteca
    • registerUser(User user) - registra un usuario en la biblioteca
    • borrowBook(String isbn, String userId) - busca el libro y el usuario, luego, si el libro existe, está disponible y el usuario existe, marca el libro como no disponible, lo añade a los libros prestados del usuario e imprime userId borrowed "title". Si el libro no existe, imprime Book not found. Si el libro no está disponible, imprime Book not available. Si el usuario no existe, imprime User not found.
    • returnBook(String isbn, String userId) - busca el libro y el usuario, luego, si ambos existen y el usuario tiene ese libro, marca el libro como disponible, lo elimina de los libros prestados del usuario e imprime userId returned "title". Si el libro no existe, imprime Book not found. Si el usuario no existe, imprime User not found.
  • main.dart: Importa todos tus archivos y demuestra el sistema de préstamo. Crea una Library, añade dos libros (978-0-13-468599-1, The Pragmatic Programmer, David Thomas y 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford), y registra un usuario (U001, Alice Johnson). Luego:
    1. Presta el primer libro a Alice
    2. Intenta prestar el mismo libro de nuevo (debería fallar)
    3. Presta el segundo libro a Alice
    4. Imprime a Alice para mostrar su recuento de libros prestados
    5. Devuelve el primer libro
    6. Imprime a Alice de nuevo para mostrar el recuento actualizado

Salida 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)

Pruébalo tú mismo

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

void main() {
  // TODO: Crear una instancia de Library
  
  // TODO: Crear dos libros:
  // - Libro 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - Libro 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: Añadir ambos libros a la biblioteca
  
  // TODO: Crear un usuario con id 'U001' y name 'Alice Johnson'
  
  // TODO: Registrar al usuario en la biblioteca
  
  // TODO: Prestar el primer libro a Alice
  
  // TODO: Intentar prestar el mismo libro de nuevo (debería fallar con 'Book not available')
  
  // TODO: Prestar el segundo libro a Alice
  
  // TODO: Imprimir Alice para mostrar su recuento de libros prestados
  
  // TODO: Devolver el primer libro
  
  // TODO: Imprimir Alice de nuevo para mostrar el recuento actualizado
}

Todas las lecciones de Programación Orientada a Objetos