Cine STEM
Programación · 1.º DAW · STEM Granada
- Tipo
- Aplicación de consola
- Contexto
- 2º Trimestre

1 / 4
Visión
Reservar una butaca debería ser tan claro como verla. Cine STEM lleva toda la gestión de un cine a la terminal, con un mapa de la sala que se entiende de un vistazo.
Descripción
En la asignatura de Programación nos propusieron el tema: un gestor de cine para poner en práctica la orientación a objetos con un problema real, en el que salas, películas, horarios, clientes y butacas dependen unas de otras.
Cine STEM gestiona todo el ciclo desde un menú en la terminal: programar películas en salas sin que se solapen, registrar clientes validando su DNI y reservar una butaca concreta viéndola en un mapa de la sala, en verde si está libre y en rojo si está ocupada. Y no deja hacer trampas: no se puede reservar ni cancelar en una sesión que ya ha terminado.
Está escrito en Java puro, sin una sola dependencia externa. Cada clase, cada validación y cada color del mapa los programé yo, y al arrancar genera un cine de prueba para poder usarlo desde el primer segundo.
Lo que aprendí
Modelar el mundo real con objetos
Salas, proyecciones, butacas y clientes se convirtieron en clases con responsabilidades claras. Fue donde la orientación a objetos dejó de ser teoría.
Las reglas de negocio importan
Evitar solapes entre proyecciones, validar el DNI o bloquear reservas en sesiones ya terminadas me enseñó que lo difícil no es el caso feliz, sino los límites.
Trabajar con fechas y horas
Con java.time aprendí a comparar horarios y calcular cuándo termina una proyección sin errores sutiles.
Una interfaz también en la terminal
Dibujar el mapa de butacas con colores ANSI me demostró que la experiencia de uso importa aunque no haya pantalla gráfica.
Mapa de butacas

Cómo está hecho
Ocho clases con responsabilidades claras. Main lleva los menús y valida la entrada; Cine agrupa salas, películas y clientes; cada Sala gestiona sus proyecciones; una Proyeccion une película, sala y horario con su matriz de butacas; y cada Butaca sabe si está libre y a quién pertenece.
Las fechas y horas van con java.time, las colecciones con ArrayList, y los colores y bordes del mapa con códigos ANSI. Una clase FakerCine genera los datos de prueba.
Tecnologías
- Lenguaje
- Java
- Conceptos
- POOColeccionesjava.timeANSI
Siguiente proyectoStableUp →


