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 crear un sistema de préstamos adecuado con una clase Library que gestione todo el proceso de préstamo.

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

  • book.dart: Conserva tu clase Book existente con isbn, title, author, isAvailable y toString().
  • user.dart: Conserva tu clase User existente con id, name, borrowedBooks y toString().
  • library.dart: Crea una clase Library nueva 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): añade un usuario a la biblioteca
    • borrowBook(String isbn, String userId): busca el libro y el usuario y, después, 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 y, después, 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éstamos. Crea una instancia de 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). Después:
    1. Pide prestado el primer libro para Alice
    2. Intenta pedir prestado el mismo libro otra vez (debería fallar)
    3. Pide prestado el segundo libro para Alice
    4. Imprime Alice para mostrar la cantidad de libros que tiene prestados
    5. Devuelve el primer libro
    6. Imprime Alice de nuevo para mostrar la cantidad actualizada

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

Practica por tu cuenta: Compilador de Dart online