Descripción general del proyecto y diseño UML
Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy. Lección 77 de 87.
Desafío
FácilComencemos el proyecto del Sistema de Gestión de Bibliotecas construyendo los cimientos: las clases de entidad principales de las que dependerá todo lo demás. Este primer desafío se centra en crear clases Book y User bien estructuradas que modelen las entidades principales del sistema.
Organizarás tu código en tres archivos:
Book.java: Crea la claseBookque representa un libro de la biblioteca. Cada libro debe tener campos privados paraisbn(String),title(String),author(String) yisAvailable(booleano, con el valor predeterminadotrue). Incluye un constructor que acepte isbn, title y author. Proporciona métodos getter apropiados para todos los campos y un setter paraisAvailable. Añade un métodogetDetails()que devuelva una cadena con el formato:[isbn] title by author.User.java: Crea la claseUserque representa a un miembro de la biblioteca. Cada usuario debe tener campos privados paraid(String) yname(String). Incluye un constructor que acepte ambos valores y proporciona métodos getter para cada campo. Añade un métodotoString()que devuelva:User[id]: name.Main.java: Une tus clases para demostrar que funcionan correctamente. Recibirás cuatro entradas: el ISBN, el título y el autor de un libro, después el ID y el nombre de un usuario.Crea un
Bookcon las tres primeras entradas y unUsercon las dos últimas. Imprime los detalles del libro usandogetDetails(), después imprime si el libro está disponible con el formatoAvailable: trueoAvailable: false. Finalmente, imprime el usuario usando su métodotoString().
Recibirás cinco entradas en orden: ISBN (String), título (String), autor (String), ID de usuario (String) y nombre de usuario (String).
Por ejemplo, con las entradas 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 y Alice Smith, tu salida sería:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithEstas clases fundamentales servirán como bloques de construcción para todo el Sistema de Gestión de Bibliotecas. En las próximas lecciones, las ampliarás con funcionalidad de préstamos, capacidades de búsqueda y mucho más.
Pruébalo tú mismo
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leer información del libro
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Leer información del usuario
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Crea un objeto Book con isbn, title y author
// TODO: Crea un objeto User con userId y userName
// TODO: Imprime los detalles del libro usando getDetails()
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: Imprime el usuario usando toString()
}
}
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosIntroducción a la OOPClases vs. ObjetosLa palabra clave thisMétodosCampos (Atributos)Método constructorSobrecarga de constructoresResumen - Calculadora simple4Herencia
Herencia básica (extends)La palabra clave superSobrescritura de métodos (@Override)Encadenamiento de constructoresLa clase ObjectHerencia simple y multinivelPor qué no hay herencia múltiple de clasesResumen - Jerarquía de empleados7Métodos especiales y la clase Object
Método toString()equals() y hashCode()Método clone()compareTo() y ComparableInterfaz ComparatorResumen - Ordenamiento personalizado10Manejo de excepciones en POO
Jerarquía de clases de excepcionesExcepciones personalizadasErrores Checked vs UncheckedPatrón Try With ResourcesResumen - Usuario validado13Proyecto: Gestión de biblioteca
Descripción general del proyecto y diseño UMLClases de Libro y UsuarioSistema de préstamosFuncionalidad de búsquedaInterfaz de administradorIntegración de manejo de excepcionesPruebas e integración2Modificadores de acceso y encapsulamiento
Visión general de los niveles de accesoMétodos Getter y SetterOcultamiento de informaciónLa palabra clave finalResumen - Gestor de cuentas bancarias5Polimorfismo
Fundamentos de sobrecarga de métodosSobrescritura de métodos (tiempo de ejecución)Upcasting y DowncastingEl operador instanceofClases y métodos abstractosResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaAgregación vs. ComposiciónClases internas, anidadas y anónimasEnums y métodos de EnumRecords (Java 16+)Clases selladas (Java 17+)11Patrones de diseño - Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón BuilderPatrón ObserverPatrón Strategy3Propiedades de clase y miembros estáticos
Variables de instancia vs. estáticasMétodos estáticosBloques estáticosConstantes (static final)Repaso - Contador y utilidad6Interfaces y Clases Abstractas
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesMétodos Default y Static en InterfacesClases Abstractas vs InterfacesInterfaces FuncionalesResumen - Sistema de Pagos9Genéricos
Introducción a los genéricosClases genéricasMétodos genéricosParámetros de tipo delimitadosComodines (?, extends, super)Resumen - Contenedor genérico12Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón IteratorPractica por tu cuenta: Compilador de Java online