Desafío de la Clase Book en Java

JavaBeginner
Practicar Ahora

Introducción

¡Te damos la bienvenida a la Biblioteca de JavaTown, la biblioteca digital más avanzada del mundo de la programación! Como nuevo desarrollador de software del equipo, tu primera misión es ayudar a crear un sistema de catálogo digital para la inmensa colección de libros de programación de la biblioteca.

Tu tarea, si decides aceptarla, consiste en completar la clase Book que se utilizará para representar cada libro en el sistema. Esta clase almacenará información crucial de cada ejemplar y proporcionará los métodos necesarios para interactuar con dicha información.

¿Todo listo para llevar la Biblioteca de JavaTown a la era digital? ¡Manos a la obra con el código!

Esto es un Desafío (Challenge), el cual difiere de un Laboratorio Guiado en que deberás intentar completar la tarea de forma independiente, en lugar de seguir pasos detallados de aprendizaje. Los desafíos suelen tener cierta dificultad. Si te quedas atascado, puedes debatir con Labby o consultar la solución. Los datos históricos muestran que este es un desafío de nivel principiante con una tasa de aprobación del 94%. Ha recibido una tasa de valoraciones positivas del 99% por parte de los estudiantes.

Completar la Clase Book

En este ejercicio, crearás una pieza fundamental para un sistema de gestión bibliotecaria. Esta tarea te permitirá practicar conceptos de programación orientada a objetos en Java, incluyendo el diseño de clases, la implementación de métodos y la gestión de estados. Al completar este desafío, adquirirás una experiencia valiosa en la creación de aplicaciones prácticas para el mundo real. ¡Exploremos el mundo de los libros virtuales!

Tareas

  • Abre el archivo pre-generado Book.java en el directorio ~/project.
  • Localiza los comentarios TODO en el código.
  • Añade el código faltante para completar la clase Book según los requisitos establecidos.

Requisitos

  • El archivo Book.java ya debe existir en el directorio ~/project.
  • Completa el constructor para inicializar todos los campos (title, author, publicationYear e isAvailable).
  • Implementa el método borrowBook():
    • Si el libro está disponible, cambia isAvailable a false y devuelve true.
    • Si el libro no está disponible, devuelve false.
  • Implementa el método returnBook():
    • Cambia isAvailable a true.
  • Implementa el método getFormattedBookDetails():
    • Devuelve una cadena de texto que contenga el título, el autor y el año de publicación del libro.
    • El formato debe ser: "Title by Author (Year)"

Ejemplo

Cuando se complete correctamente, el siguiente código en el método main:

Book book = new Book("Java Programming", "John Doe", 2023);
System.out.println(book.getFormattedBookDetails());
System.out.println("Is book available? " + book.isAvailable());
boolean borrowed = book.borrowBook();
System.out.println("Book borrowed successfully? " + borrowed);
System.out.println("Is book available now? " + book.isAvailable());
book.returnBook();
System.out.println("Is book available after return? " + book.isAvailable());

Debería producir una salida similar a esta:

cd ~/project
javac Book.java
java Book

Salida de ejemplo:

Java Programming by John Doe (2023)
Is book available? true
Book borrowed successfully? true
Is book available now? false
Is book available after return? true
✨ Revisar Solución y Practicar

Resumen

En este desafío, has creado una clase Book que demuestra conceptos clave de la programación orientada a objetos en Java:

  1. Encapsulamiento: La clase Book encapsula datos (title, author, publicationYear, isAvailable) y comportamientos (borrowBook, returnBook, getFormattedBookDetails) relacionados con un libro.
  2. Constructor: Implementaste un constructor para inicializar las propiedades del libro al crear un nuevo objeto Book.
  3. Métodos: Creaste métodos que representan acciones que un libro puede experimentar (préstamo y devolución) y un método para recuperar información formateada del libro.
  4. Gestión de estado: La propiedad isAvailable y los métodos borrowBook y returnBook demuestran cómo un objeto puede gestionar su estado interno.

Esta clase Book constituye la base de un sistema de gestión bibliotecaria. En una aplicación real, podrías ampliar esto creando una clase Library que gestione una colección de objetos Book, o añadiendo reglas de préstamo más sofisticadas.

Recuerda que la programación orientada a objetos consiste en modelar conceptos del mundo real mediante código. A medida que avances en tu aprendizaje de Java, busca oportunidades para representar elementos como objetos que posean tanto datos como comportamiento.

Sigue practicando y experimentando con tu código. Intenta añadir más métodos a la clase Book, como uno para actualizar el título o el autor, o crea una clase Library que pueda almacenar y organizar múltiples objetos Book. Cuanto más programes, más natural te resultará trabajar con Java y la POO.