TipoButaca - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki

📄 TipoButaca.py

1. Propósito y Responsabilidades

La enumeración TipoButaca define el sistema de categorías de asientos con lógica de precios integrada en el sistema Capybara Films.

🔸 Responsabilidades principales:

  • 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.

2. Valores y Estructura de Precios

Tipo Nombre Precio Descripción
COMUN "comun" $4,000 Butacas estándar
PREMIUM "premium" $6,500 Butacas de categoría superior

3. Métodos Clave con Ejemplos de Uso

🔸 Acceso a Información de Precios:

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"

🔸 Uso en Cálculo de Precios:

precio = TipoButaca["PREMIUM"].get_precio()  # Acceso por clave

4. Integración con Otras Entidades

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"]
Loading

🔸 Relaciones:

  • 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.

5. Patrones de Diseño Implementados

🔸 Enum con Comportamiento:

  • No solo define constantes, sino que incluye métodos para acceder a propiedades.
  • Encapsula tanto el nombre como el precio en una sola estructura.

🔸 Type Safety:

  • Garantiza que solo se usen valores válidos para categorías de butacas
  • Previene errores de tipeo en strings de categorías

🔸 Centralized Pricing:

  • Mantiene toda la lógica de precios de butacas en un solo lugar.
  • Facilita cambios futuros en el sistema de precios.

6. Manejo de Errores

La enumeración TipoButaca proporciona acceso seguro a precios:

  • Los métodos get_nombre() y get_precio() siempre retornan valores válidos
  • El acceso por clave (como en TipoButaca["PREMIUM"]) puede lanzar KeyError 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.

⚠️ **GitHub.com Fallback** ⚠️