TipoButaca - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki
La enumeración TipoButaca
define el sistema de categorías de asientos con lógica de precios integrada en el sistema Capybara Films.
- Definir tipos de butacas disponibles (común y premium).
- Encapsular precios asociados a cada categoría.
- Proporcionar métodos de acceso controlado a información de precios.
- Garantizar consistencia de precios en toda la aplicación.
Tipo | Nombre | Precio | Descripción |
---|---|---|---|
COMUN |
"comun" | $4,000 | Butacas estándar |
PREMIUM |
"premium" | $6,500 | Butacas de categoría superior |
tipo_comun = TipoButaca.COMUN
print(f"Tipo: {tipo_comun.get_nombre()}") # "comun"
print(f"Precio: ${tipo_comun.get_precio()}") # "$4000"
tipo_premium = TipoButaca.PREMIUM
print(f"Precio premium: ${tipo_premium.get_precio()}") # "$6500"
Fuente: TipoButaca.py:11-17
precio = TipoButaca["PREMIUM"].get_precio() # Acceso por clave
Fuente: cine_services.py:214-222
graph TD
TipoButaca["TipoButaca - Enum
COMUN: $4,000
PREMIUM: $6,500
+ get_nombre
+ get_precio"]
TipoButaca --> Butaca["Butaca
- categoria: str"]
TipoButaca --> Reserva["Reserva
calcular_precio_total"]
TipoButaca --> CineServices["CineServices
obtener_precio_por_categoria"]
- Con Butaca: Determina la categoría y precio de cada asiento.
-
Con Reserva: Utilizado en
calcular_precio_total()
para sumar precios de butacas. -
Con CineServices: Integrado en
obtener_precio_por_categoria()
para cálculos dinámicos.
- No solo define constantes, sino que incluye métodos para acceder a propiedades.
- Encapsula tanto el nombre como el precio en una sola estructura.
- Garantiza que solo se usen valores válidos para categorías de butacas
- Previene errores de tipeo en strings de categorías
- Mantiene toda la lógica de precios de butacas en un solo lugar.
- Facilita cambios futuros en el sistema de precios.
La enumeración TipoButaca
proporciona acceso seguro a precios:
- Los métodos
get_nombre()
yget_precio()
siempre retornan valores válidos - El acceso por clave (como en
TipoButaca["PREMIUM"]
) puede lanzarKeyError
si la categoría no existe -
cine_services
maneja este error devolviendo 0 como precio por defecto
Esta enumeración demuestra cómo los tipos de dominio pueden encapsular tanto datos como comportamiento, proporcionando una interfaz limpia y type-safe para el manejo de precios en el sistema de reservas.