
Crea una clase llamada Libro que represente un libro en una biblioteca. La clase debe tener los siguientes atributos privados:
Título (String): título del libro
Autor (String): nombre del autor del libro
NumeroPaginas (int): número de páginas que tiene el libro
Disponible (boolean): indica si el libro está disponible para préstamo
La clase debe incluir:
Un constructor que reciba como parámetros el título, autor y número de páginas. El libro debe inicializarse como disponible (true).
Métodos getter para todos los atributos.
Un método prestar() que cambie el estado de disponibilidad a false si el libro está disponible, y devuelva true. Si el libro no está disponible, el método no debe cambiar el estado y debe devolver false.
Un método devolver() que cambie el estado de disponibilidad a true si el libro no está disponible, y devuelva true. Si el libro ya está disponible, el método no debe cambiar el estado y debe devolver false.
Un método toString() que devuelva una cadena con la información del libro en el formato: «[Título] escrito por [Autor] – [Número de páginas] páginas. [Disponible/No disponible]».
Finalmente, en el método main, crea un objeto de la clase Libro, muestra su información, préstalo, muestra su información actualizada y devuélvelo.
package oop.Libros;
// codificado por Javier Cachón Garrido en MX-Linux con IntelliJ IDEA Community Edition .
public class Libro {
// Atributos privados
private String titulo;
private String autor;
private int numeroPaginas;
private boolean disponible;
// Constructor
public Libro(String titulo, String autor, int numeroPaginas) {
this.titulo = titulo;
this.autor = autor;
this.numeroPaginas = numeroPaginas;
this.disponible = true; // Se inicializa como disponible
}
// Métodos getter
public String getTitulo() {
return titulo;
}
public String getAutor() {
return autor;
}
public int getNumeroPaginas() {
return numeroPaginas;
}
public boolean isDisponible() {
return disponible;
}
// Método prestar
public boolean prestar() {
if (disponible) {
disponible = false;
return true;
} else {
return false;
}
}
// Método devolver
public boolean devolver() {
if (!disponible) {
disponible = true;
return true;
} else {
return false;
}
}
// Método toString para mostrar la información del libro
@Override
public String toString() {
String estado = disponible ? "Disponible" : "No disponible";
return titulo + " escrito por " + autor + " - " + numeroPaginas + " páginas. " + estado;
}
public static void main(String[] args) {
// Crear un objeto de la clase Libro
Libro libro = new Libro("Libro de Java a fondo", "Javier Cachón Garrido", 1000);
// Mostrar información inicial
System.out.println("Información del libro:");
System.out.println(libro.toString());
// Prestar el libro
System.out.println("Intentando prestar el libro...\n");
if (libro.prestar()) {
System.out.println("Libro prestado con éxito.");
} else {
System.out.println("El libro no está disponible para préstamo.");
}
// Mostrar información después de prestarlo
System.out.println("Información actualizada:\n");
System.out.println(libro.toString());
// Devolver el libro
System.out.println("Intentando devolver el libro...\n");
if (libro.devolver()) {
System.out.println("Libro devuelto correctamente.");
} else {
System.out.println("El libro ya estaba disponible.");
}
// Mostrar información final
System.out.println("Información final del libro:\n");
System.out.println(libro.toString());
}
}
Resultado de ejecución y Compilación en ok:
Información del libro:
Libro de Java a fondo escrito por Javier Cachón Garrido - 1000 páginas. Disponible
Intentando prestar el libro...
Libro prestado con éxito.
Información actualizada:
Libro de Java a fondo escrito por Javier Cachón Garrido - 1000 páginas. No disponible
Intentando devolver el libro...
Libro devuelto correctamente.
Información final del libro:
Libro de Java a fondo escrito por Javier Cachón Garrido - 1000 páginas. Disponible
Process finished with exit code 0

Feedback y sugerencias
La solución presentada cumple con todos los requisitos del enunciado. La clase Libro está correctamente implementada con los atributos privados y el constructor inicializa adecuadamente el estado de disponibilidad. Los métodos getter proporcionan acceso a los atributos, y los métodos prestar() y devolver() gestionan correctamente el estado de disponibilidad del libro. El método toString() devuelve la información del libro en el formato especificado. Además, el método main demuestra el uso de la clase Libro de manera clara y funcional. La estructura del código es clara y sigue las convenciones de Java, lo que facilita su legibilidad. Felicitaciones por una implementación precisa y completa.
Licencia del Código Abierto: GPL: Pueden mejorarlo, pero no es para uso comercial, empresarial sino educacional.