package trabajoClasesObjetos;
import [Link];
import [Link];
import [Link];
public class Biblioteca {
private String nombre;
private List<Libro> libros;
private List<Usuario> usuarios;
public Biblioteca() {
[Link] = new ArrayList();
[Link] = new ArrayList();
public Biblioteca(String var1) {
this();
[Link] = var1;
public String getNombre() {
return [Link];
public void setNombre(String var1) {
[Link] = var1;
public List<Libro> getLibros() {
return [Link];
public List<Usuario> getUsuarios() {
return [Link];
public void agregarLibro(Libro var1) {
if (var1 != null) {
[Link](var1);
public void agregarUsuario(Usuario var1) {
if (var1 != null) {
[Link](var1);
public Libro buscarLibroPorIsbn(String var1) {
for(Libro var3 : [Link]) {
if ([Link]().equalsIgnoreCase(var1)) {
return var3;
return null;
public Usuario buscarUsuarioPorId(String var1) {
for(Usuario var3 : [Link]) {
if ([Link]().equalsIgnoreCase(var1)) {
return var3;
return null;
public boolean prestarLibro(String var1, Usuario var2) {
Libro var3 = [Link](var1);
if (var3 == null) {
[Link]("No existe un libro con ISBN " + var1);
return false;
} else if (![Link]()) {
[Link]("El libro ya está prestado.");
return false;
} else {
[Link](false);
[Link](var2);
[Link](var1);
PrintStream var10000 = [Link];
String var10001 = [Link]();
[Link](" Préstamo: '" + var10001 + "' a " + [Link]());
return true;
public boolean devolverLibro(String var1, Usuario var2) {
Libro var3 = [Link](var1);
if (var3 == null) {
[Link]("No existe un libro con ISBN " + var1);
return false;
} else if ([Link]()) {
[Link]("Ese libro no estaba prestado.");
return false;
} else if ([Link]() != null && [Link]().getId().equals([Link]()))
{
[Link](true);
[Link]((Usuario)null);
[Link](var1);
PrintStream var10000 = [Link];
String var10001 = [Link]();
[Link](" Devolución: '" + var10001 + "' de " + [Link]());
return true;
} else {
[Link]("El libro no está asociado al usuario " + [Link]());
return false;
public void mostrarLibrosDisponibles() {
[Link]("\ud83d\udcda Libros disponibles:");
boolean var1 = false;
for(Libro var3 : [Link]) {
if ([Link]()) {
PrintStream var10000 = [Link];
String var10001 = [Link]();
[Link](" - " + var10001 + " (" + [Link]() + ")");
var1 = true;
if (!var1) {
[Link](" (No hay libros disponibles)");
}
}
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
import [Link];
import [Link];
public class Biblioteca {
private String nombre;
private List<Libro> libros;
private List<Usuario> usuarios;
// Constructor por defecto
public Biblioteca() {
[Link] = new ArrayList<>();
[Link] = new ArrayList<>();
}
// Constructor con parámetros
public Biblioteca(String nombre) {
this();
[Link] = nombre;
// Getters y Setters
public String getNombre() { return nombre; }
public void setNombre(String nombre) { [Link] = nombre; }
public List<Libro> getLibros() { return libros; }
public List<Usuario> getUsuarios() { return usuarios; }
// --- Métodos de gestión ---
public void agregarLibro(Libro libro) {
if (libro != null) [Link](libro);
public void agregarUsuario(Usuario usuario) {
if (usuario != null) [Link](usuario);
public Libro buscarLibroPorIsbn(String isbn) {
for (Libro l : libros) if ([Link]().equalsIgnoreCase(isbn)) return l;
return null;
}
public Usuario buscarUsuarioPorId(String id) {
for (Usuario u : usuarios) if ([Link]().equalsIgnoreCase(id)) return u;
return null;
// --- Funcionalidad principal ---
public boolean prestarLibro(String isbn, Usuario usuario) {
Libro libro = buscarLibroPorIsbn(isbn);
if (libro == null) {
[Link]("No existe un libro con ISBN " + isbn);
return false;
if (![Link]()) {
[Link]("El libro ya está prestado.");
return false;
[Link](false);
[Link](usuario);
[Link](isbn);
[Link](" Préstamo: '" + [Link]() + "' a " + [Link]());
return true;
public boolean devolverLibro(String isbn, Usuario usuario) {
Libro libro = buscarLibroPorIsbn(isbn);
if (libro == null) {
[Link]("No existe un libro con ISBN " + isbn);
return false;
if ([Link]()) {
[Link]("Ese libro no estaba prestado.");
return false;
if ([Link]() == null || ![Link]().getId().equals([Link]())) {
[Link]("El libro no está asociado al usuario " + [Link]());
return false;
[Link](true);
[Link](null);
[Link](isbn);
[Link](" Devolución: '" + [Link]() + "' de " +
[Link]());
return true;
public void mostrarLibrosDisponibles() {
[Link](" Libros disponibles:");
boolean alguno = false;
for (Libro l : libros) {
if ([Link]()) {
[Link](" - " + [Link]() + " (" + [Link]() + ")");
alguno = true;
if (!alguno) [Link](" (No hay libros disponibles)");
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
public class Libro {
private String titulo;
private String autor;
private String isbn;
private boolean disponible = true;
private Usuario prestadoA;
// constructor por defecto
public Libro(){}
// constructor con parametros
public Libro(String titulo, String autor, String isbn){
[Link] = titulo;
[Link] = autor;
[Link] = isbn;
[Link] = true;
[Link] = null;
//Getters y Setters
public String getTitulo (){return titulo;}
public void setTitulo (String titulo){[Link] = titulo;}
public String getAutor (){return autor;}
public void setAutor (String autor){[Link] = autor;}
public String getIsbn (){return isbn;}
public void setIsbn (String isbn){[Link] = isbn;}
public boolean isDisponible() { return disponible; }
public void setDisponible(boolean disponible) { [Link] = disponible; }
public Usuario getPrestadoA() { return prestadoA; }
public void setPrestadoA(Usuario prestadoA) { [Link] = prestadoA; }
@Override
public String toString() {
String estado = disponible ? "Disponible"
: "Prestado a " + (prestadoA != null ? [Link]() : "N/A");
return "Libro{titulo='" + titulo + "', autor='" + autor +
"', isbn='" + isbn + "', estado=" + estado + "}";
}
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
public class Libro {
private String titulo;
private String autor;
private String isbn;
private boolean disponible = true;
private Usuario prestadoA;
public Libro() {
public Libro(String var1, String var2, String var3) {
[Link] = var1;
[Link] = var2;
[Link] = var3;
[Link] = true;
[Link] = null;
}
public String getTitulo() {
return [Link];
public void setTitulo(String var1) {
[Link] = var1;
public String getAutor() {
return [Link];
public void setAutor(String var1) {
[Link] = var1;
public String getIsbn() {
return [Link];
public void setIsbn(String var1) {
[Link] = var1;
public boolean isDisponible() {
return [Link];
public void setDisponible(boolean var1) {
[Link] = var1;
public Usuario getPrestadoA() {
return [Link];
public void setPrestadoA(Usuario var1) {
[Link] = var1;
public String toString() {
String var1 = [Link] ? "Disponible" : "Prestado a " + ([Link] != null ?
[Link]() : "N/A");
return "Libro{titulo='" + [Link] + "', autor='" + [Link] + "', isbn='" + [Link] + "',
estado=" + var1 + "}";
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
import [Link];
public class Main {
public static void main(String[] args) {
Biblioteca bib = new Biblioteca("Biblioteca Central");
// Crea al menos 3 libros y 2 usuarios
[Link](new Libro("Introducción a Java", "A. Pérez", "ISBN-001"));
[Link](new Libro("Estructuras de Datos", "B. Gómez", "ISBN-002"));
[Link](new Libro("Patrones de Diseño", "C. Ruiz", "ISBN-003"));
Usuario u1 = new Usuario("U-01", "Laura");
Usuario u2 = new Usuario("U-02", "Jonathan");
[Link](u1);
[Link](u2);
// Mostrar objetos creados (evidencia para el informe)
[Link]("=== Objetos iniciales ===");
for (Libro l : [Link]()) [Link](l);
for (Usuario u : [Link]()) [Link](u);
Scanner sc = new Scanner([Link]);
int opc;
do {
[Link]("\n===== Menú Biblioteca =====");
[Link]("1. Prestar libro");
[Link]("2. Devolver libro");
[Link]("3. Mostrar libros disponibles");
[Link]("4. Mostrar estado de todos los libros");
[Link]("0. Salir");
[Link]("Seleccione una opción: ");
while (![Link]()) { [Link](); [Link]("Ingrese un número válido: "); }
opc = [Link](); [Link]();
switch (opc) {
case 1 -> {
[Link]("ID de usuario: ");
String id = [Link]();
Usuario u = [Link](id);
if (u == null) { [Link]("Usuario no encontrado."); break; }
[Link]("ISBN del libro: ");
String isbn = [Link]();
[Link](isbn, u);
case 2 -> {
[Link]("ID de usuario: ");
String id = [Link]();
Usuario u = [Link](id);
if (u == null) { [Link]("Usuario no encontrado."); break; }
[Link]("ISBN del libro: ");
String isbn = [Link]();
[Link](isbn, u);
}
case 3 -> [Link]();
case 4 -> {
for (Libro l : [Link]()) [Link](l);
case 0 -> [Link]("¡Hasta luego!");
default -> [Link]("Opción inválida.");
} while (opc != 0);
[Link]();
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
import [Link];
public class Main {
public static void main(String[] var0) {
Biblioteca var1 = new Biblioteca("Biblioteca Central");
[Link](new Libro("Introducción a Java", "A. Pérez", "ISBN-001"));
[Link](new Libro("Estructuras de Datos", "B. Gómez", "ISBN-002"));
[Link](new Libro("Patrones de Diseño", "C. Ruiz", "ISBN-003"));
Usuario var2 = new Usuario("U-01", "Laura");
Usuario var3 = new Usuario("U-02", "Jonathan");
[Link](var2);
[Link](var3);
[Link]("=== Objetos iniciales ===");
for(Libro var5 : [Link]()) {
[Link](var5);
for(Usuario var11 : [Link]()) {
[Link](var11);
Scanner var10 = new Scanner([Link]);
int var12;
do {
[Link]("\n===== Menú Biblioteca =====");
[Link]("1. Prestar libro");
[Link]("2. Devolver libro");
[Link]("3. Mostrar libros disponibles");
[Link]("4. Mostrar estado de todos los libros");
[Link]("0. Salir");
[Link]("Seleccione una opción: ");
while(![Link]()) {
[Link]();
[Link]("Ingrese un número válido: ");
var12 = [Link]();
[Link]();
switch (var12) {
case 0:
[Link]("¡Hasta luego!");
break;
case 1:
[Link]("ID de usuario: ");
String var14 = [Link]();
Usuario var16 = [Link](var14);
if (var16 == null) {
[Link]("Usuario no encontrado.");
} else {
[Link]("ISBN del libro: ");
String var17 = [Link]();
[Link](var17, var16);
break;
case 2:
[Link]("ID de usuario: ");
String var13 = [Link]();
Usuario var15 = [Link](var13);
if (var15 == null) {
[Link]("Usuario no encontrado.");
} else {
[Link]("ISBN del libro: ");
String var8 = [Link]();
[Link](var8, var15);
break;
case 3:
[Link]();
break;
case 4:
for(Libro var7 : [Link]()) {
[Link](var7);
break;
default:
[Link]("Opción inválida.");
} while(var12 != 0);
[Link]();
}
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
import [Link];
import [Link];
public class Usuario {
private String id;
private String nombre;
private List<String> historialPrestamos; // guardamos ISBN de los libros
// Constructor por defecto
public Usuario() {
[Link] = new ArrayList<>();
// Constructor con parámetros
public Usuario(String id, String nombre) {
[Link] = id;
[Link] = nombre;
[Link] = new ArrayList<>();
// Getters y Setters
public String getId() { return id; }
public void setId(String id) { [Link] = id; }
public String getNombre() { return nombre; }
public void setNombre(String nombre) { [Link] = nombre; }
public List<String> getHistorialPrestamos() { return historialPrestamos; }
public void agregarPrestamo(String isbn) {
if () [Link](isbn);
public void devolverPrestamo(String isbn) {
[Link](isbn);
@Override
public String toString() {
return "Usuario{id='" + id + "', nombre='" + nombre +
"', prestamos=" + historialPrestamos + "}";
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
package trabajoClasesObjetos;
import [Link];
import [Link];
public class Usuario {
private String id;
private String nombre;
private List<String> historialPrestamos;
public Usuario() {
[Link] = new ArrayList();
public Usuario(String var1, String var2) {
[Link] = var1;
[Link] = var2;
[Link] = new ArrayList();
public String getId() {
return [Link];
public void setId(String var1) {
[Link] = var1;
}
public String getNombre() {
return [Link];
public void setNombre(String var1) {
[Link] = var1;
public List<String> getHistorialPrestamos() {
return [Link];
public void agregarPrestamo(String var1) {
if () {
[Link](var1);
public void devolverPrestamo(String var1) {
[Link](var1);
public String toString() {
String var10000 = [Link];
return "Usuario{id='" + var10000 + "', nombre='" + [Link] + "', prestamos=" +
[Link]([Link]) + "}";