FormatoPelicula - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki
La enumeración FormatoPelicula
define los formatos de proyección disponibles para películas en el sistema Capybara Films, con costos adicionales asociados y manejo robusto de errores.
- Definir formatos de proyección disponibles (2D y 3D).
- Encapsular costos adicionales por formato.
- Proporcionar acceso seguro a propiedades con manejo de errores.
- Garantizar consistencia en el sistema de precios de formatos.
Formato | Tipo | Precio Extra | Descripción |
---|---|---|---|
DOS_D |
"2D" | $0 | Formato 2D sin costo adicional |
TRES_D |
"3D" | $1,000 | Formato 3D con costo adicional |
# Propiedad para acceder al tipo de formato de manera segura
@property
def tipo(self):
try:
return self._tipo
except AttributeError:
# Lanza excepción si el atributo no está definido correctamente
raise ReservaException("El tipo del formato de película no está definido correctamente.")
Fuente: FormatoPelicula.py:22-27
def convertir_formato(self, formato):
"""Convierte un valor como '2D' o '3D' en un miembro del enum FormatoPelicula."""
for miembro in FormatoPelicula:
if miembro.get_tipo() == formato:
return miembro
raise ValueError(f"Formato inválido: {formato}") # Lanzar una excepción si el formato no es válido
Fuente: Pelicula.py:13-18
La enumeración FormatoPelicula
implementa manejo robusto de errores mediante excepciones personalizadas:
# Excepción personalizada para manejar errores específicos de reservas
class ReservaException(Exception):
"""Excepción personalizada para errores en reservas."""
pass
Fuente: FormatoPelicula.py:5-7
- Las propiedades tipo y precio_extra incluyen manejo de AttributeError.
- Los métodos
get_tipo()
yget_precio_extra()
proporcionan acceso alternativo con validación. - Todas las fallas lanzan
ReservaException
con mensajes descriptivos.
graph TD
PeliculaDAO --> FormatoPeliculaNode
CineServices --> FormatoPeliculaNode
FormatoPeliculaNode["FormatoPelicula (Enum)
DOS_D: $0
TRES_D: $1,000
+ get_tipo()
+ get_precio_extra()"]
FormatoPeliculaNode --> Pelicula["Pelicula
- formato: FormatoPelicula
+ convertir_formato()"]
FormatoPeliculaNode --> ReservaException["ReservaException
Custom Domain Exception"]
- Con Pelicula: Define el formato de proyección y costos adicionales.
- Con ReservaException: Utiliza excepción personalizada para errores de dominio.
- Con PeliculaDAO: Persistencia de información de formato.
- Con CineServices: Selección de películas con diferentes formatos.