FormatoPelicula - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki

📄 FormatoPelicula.py

1. Propósito y Responsabilidades

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.

🔸 Responsabilidades principales:

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

2. Valores y Estructura de Precios

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

3. Métodos Clave con Ejemplos de Uso

🔸 Acceso Seguro a Propiedades:

    # 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.")

🔸 Conversión de Formato en Pelicula:

    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

4. Manejo de Errores Avanzado

La enumeración FormatoPelicula implementa manejo robusto de errores mediante excepciones personalizadas:

🔸 Reservadamente personalizada:

# Excepción personalizada para manejar errores específicos de reservas
class ReservaException(Exception):
    """Excepción personalizada para errores en reservas."""
    pass

🔸 Validación en propiedades y métodos:

  • Las propiedades tipo y precio_extra incluyen manejo de AttributeError.
  • Los métodos get_tipo() y get_precio_extra() proporcionan acceso alternativo con validación.
  • Todas las fallas lanzan ReservaException con mensajes descriptivos.

5. Integración con Otras Entidades

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

🔸 Relaciones:

  • 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.
⚠️ **GitHub.com Fallback** ⚠️