Bienvenido al proyecto java-poo-luigi2. Este es un sistema de gestión de contenidos multimedia (películas y documentales) desarrollado en Java.
1.0.0
La aplicación permite administrar una plataforma de streaming desde la consola, ofreciendo funcionalidades para gestionar el catálogo de contenidos y realizar búsquedas avanzadas.
- Gestión de Contenido: Agregar y eliminar películas y documentales.
- Visualización: Mostrar todo el catálogo o resúmenes.
- Búsqueda Avanzada: Filtrar por título, género, idioma, calidad y tipo de contenido.
- Estadísticas y Rankings: Ver contenidos populares, más vistos, y filtrar por duración (más larga/corta).
- Reproducción: Simulación de reproducción de contenido.
El código fuente se encuentra organizado de manera modular bajo el paquete src/platzi/play. A continuación se detalla la jerarquía de archivos:
src/platzi/play
├── contenido # Modelos de dominio
│ ├── Contenido.java # Clase base abstracta
│ ├── Documental.java # Subclase para documentales
│ ├── Pelicula.java # Subclase para películas
│ └── ResumenContenido.java
├── excepcion # Manejo de errores
│ └── PeliculaExistenteException.java
├── plataforma # Lógica de negocio y tipos
│ ├── Calidad.java # Enum de calidades de video
│ ├── Genero.java # Enum de géneros
│ ├── Idioma.java # Enum de idiomas
│ ├── Plataforma.java # Clase principal de gestión
│ └── Usuario.java # Entidad de usuario
├── util # Utilidades transversales
│ ├── FileUtils.java # Manejo de archivos
│ └── ScannerUtils.java # Entrada de datos por consola
└── Main.java # Punto de entrada (Entry Point)- Lenguaje: Java (JDK 25 compatible con versiones anteriores).
- IDE: IntelliJ IDEA.
- Control de Versiones: Git.
- Librerías:
java.util,java.io(Estándar).
- Programación Orientada a Objetos (POO): Uso extensivo de herencia (
PeliculayDocumentalheredan deContenido), polimorfismo y encapsulamiento. - Manejo de Excepciones: Implementación de excepciones personalizadas (
PeliculaExistenteException) para el control de errores de negocio. - Separación de Responsabilidades:
ScannerUtilspara la interacción con el usuario.FileUtilspara la persistencia de datos.Plataformacomo clase gestora de la lógica.
- Uso de Enums: Para definir tipos restringidos como
Genero,IdiomayCalidad, mejorando la seguridad de tipos. - Streams y Lambdas: Uso de la API de Streams de Java para filtrar y procesar colecciones de manera funcional.
El proyecto consta de un único módulo principal: java-poo-luigi2.
La cobertura de funcionalidades abarca desde la creación y gestión de entidades hasta la interacción por consola, cubriendo los casos de uso principales de un sistema ABM (Alta, Baja, Modificación) con búsquedas.
| Módulo | Descripción | Cobertura Funcional |
|---|---|---|
java-poo-luigi2 |
Núcleo de la aplicación | ✅ Gestión de Entidades: Creación y modificación de Películas y Documentales. ✅ Interacción: Interfaz de línea de comandos (CLI) robusta. ✅ Búsqueda: Filtros por múltiples criterios (Género, Idioma, etc.). ✅ Persistencia: Lectura y carga de datos desde archivos. |
contenido |
Modelo de Datos | Definición de entidades Pelicula, Documental y atributos base. |
plataforma |
Lógica de Negocio | Gestión del catálogo, búsquedas, filtros y rankings. |
util |
Utilidades | Manejo de entrada/salida (Archivos y Consola). |
excepcion |
Manejo de Errores | Excepciones personalizadas del dominio. |
Antes de comenzar, asegúrate de tener instalado:
- Sistema Operativo: Windows, Linux o macOS.
- Java Runtime Environment (JRE) instalado y configurado en el PATH.
- Java Development Kit (JDK): Versión 17 o superior recomendada.
- IDE Recomendado: IntelliJ IDEA, Eclipse o NetBeans para facilitar la edición y ejecución.
- Git: Para clonar el repositorio.
Sigue estos pasos para configurar el proyecto en tu entorno local:
- Clonar el repositorio:
git clone https://github.com/luiscacuango2/java-poo-luigi2.git cd java-poo-luigi2 - Compilar el código:
Asegúrate de tener el JDK configurado. Desde la raíz del proyecto:
javac -d out src/platzi/play/*.java src/platzi/play/**/*.java
- Verificar archivo de datos:
El sistema busca un archivo
contenido.txten la raíz del proyecto para cargar la base de datos inicial. Puedes crear uno con datos de prueba:echo "PELICULA|Titanic|195|DRAMA|INGLES|FULL_HD|4.8|1997-12-19" > contenido.txt
Ejecuta la clase platzi.play.Main para iniciar la aplicación. Sigue las instrucciones en la consola para navegar por el menú.
Una vez compilado, puedes ejecutar la aplicación desde la terminal:
bash java -cp out platzi.play.Main
O si prefieres usar tu IDE:
- Abre el proyecto en IntelliJ IDEA.
- Busca la clase
src/platzi/play/Main.java. - Haz clic derecho y selecciona Run 'Main.main()'.
¡Las contribuciones son bienvenidas! Por favor, lee nuestro archivo CONTRIBUTING.md para conocer los detalles sobre nuestro código de conducta y el proceso para enviarnos pull requests.
- Luis Cacuango - Trabajo Inicial y Documentación - luiscacuango2
- A Platzi por el curso de Java SE Orientado a Objetos que sirvió de inspiración para la estructura del paquete
Luigi.play. - A la comunidad de código abierto por las herramientas facilitadas.
Este proyecto es de uso educativo y está bajo la Licencia MIT - mira el archivo LICENSE para más detalles.