pelicula - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki
La entidad Pelicula
encapsula toda la información relacionada con las películas disponibles en el sistema de cine.
- Almacenar información completa de películas (título, director, duración, etc.)
- Gestionar formatos de proyección (2D/3D)
- Proporcionar métodos de acceso y modificación controlados
- Convertir formatos de string a enumeraciones
Atributo | Tipo | Propósito | Validación |
---|---|---|---|
id_pelicula |
int | Identificador único | Asignado por BD |
nombre |
str | Título de la película | Requerido |
director |
str | Director de la película | Requerido |
duracion |
int | Duración en minutos | Número positivo |
genero |
str | Género cinematográfico | Texto libre |
idioma |
str | Idioma de la película | Texto libre |
formato |
FormatoPelicula | Formato de proyección | Enum 2D/3D |
pelicula = Pelicula(1, "Avatar", "James Cameron", 180, "Sci-Fi", "Inglés", "3D")
formato_enum = pelicula.convertir_formato("3D") # Convierte string a enum
Fuente: Pelicula.py:13-18
pelicula.set_nombre("Avatar: El Camino del Agua")
pelicula.set_duracion(192)
print(f"Película: {pelicula.get_nombre()}, Duración: {pelicula.get_duracion()} min")
Fuente: Pelicula.py:20-25
def get_formato(self) -> FormatoPelicula:
"""Devuelve el formato de la película."""
return self.formato
def set_formato(self, formato: FormatoPelicula):
"""Establece un nuevo formato a la película."""
self.formato = formato
Fuente: Pelicula.py:59-65
La entidad Pelicula
implementa manejo de errores específico:
-
Formato inválido: Lanza
ValueError
si el formato no existe en el enum. - Validación de tipos: Los setters incluyen type hints para validación.
-
Conversión segura: El método
convertir_formato()
valida antes de convertir.
graph TD
Sala --> PeliculaNode
PeliculaDAO --> PeliculaNode
CineServices --> PeliculaNode
subgraph PeliculaSubgraph
PeliculaNode["Pelicula
- nombre: str
- director: str
- duracion: int
- formato: FormatoPelicula"]
end
PeliculaNode --> FormatoPelicula["FormatoPelicula DOS_D/TRES_D"]
- Con FormatoPelicula: Enum para formatos de proyección con precios adicionales
- Con Sala: Asociación película-sala para proyecciones
- Con PeliculaDAO: Persistencia y consultas del catálogo
- Con CineServices: Selección de películas en el flujo de reserva
La representación __str__
proporciona una vista completa de todos los atributos de la película, útil para debugging y logging del sistema.
Encapsulación: Todos los atributos tienen métodos getter/setter dedicados. Type Safety: Integración con enums para garantizar valores válidos. Domain Validation: Validación de formatos en el nivel de dominio.
Ambas entidades (Butaca
y Pelicula
) demuestran principios sólidos de diseño de dominio, manteniendo la lógica de negocio encapsulada y proporcionando interfaces claras para su uso en las capas superiores del sistema.