Ubicacion - PowerSystem2024/CapybaraFilms_ProyectoTercerSemestre GitHub Wiki

📄 Ubicacion.py

1. Propósito y Responsabilidades

La clase Ubicacion es un value object que representa la posición física de una butaca en el cine, encapsulando las coordenadas de fila, columna y referencia a la butaca.

🔸Responsabilidades principales:

  • Encapsular coordenadas de posición (fila, columna).
  • Mantener referencia al número de butaca.
  • Proporcionar métodos de acceso y modificación controlados.
  • Servir como value object para posicionamiento.

2. Atributos Principales

Atributo Tipo Propósito Rango
fila int Número de fila en la sala 1-12
columna int Número de columna en la sala 1-12
butaca int Número identificador de la butaca Variable

3. Métodos Clave con Ejemplos de Uso

🔸 Acceso a Coordenadas:

ubicacion = Ubicacion(6, 8, 45)  
fila = ubicacion.get_fila()      # 6  
columna = ubicacion.get_columna()  # 8  
butaca = ubicacion.get_butaca()    # 45

🔸 Modificación de Posición:

ubicacion.set_fila(7)      # Cambiar fila  
ubicacion.set_columna(9)   # Cambiar columna  
ubicacion.set_butaca(50)   # Cambiar número de butaca

🔸 Representación Textual: Ubicacion.py:33-34

    def __str__(self):
        return f"Ubicacion(fila={self.fila}, columna={self.columna}, butaca={self.butaca})"

4. Integración con Otras Entidades

graph TD
    CineServices["CineServices
    _solicitar_ubicacion"] --> UbicacionNode
    ButacaDAO --> UbicacionNode

    UbicacionNode["Ubicacion - Value Object
    - fila: int
    - columna: int
    - butaca: int
    + get_fila
    + get_columna"]

    UbicacionNode --> Butaca["Butaca
    - ubicacion: Ubicacion"]
Loading

🔸 Relaciones:

  • Con Butaca: Encapsula la posición física de cada butaca.
  • Con CineServices: Utilizado en _solicitar_ubicacion() para capturar coordenadas del usuario.
  • Con ButacaDAO: Persistencia y consultas de ubicaciones de butacas.

5. Patrones de Diseño Implementados

🔸 Value Object Pattern:

  • Representa un concepto de valor sin identidad propia.
  • Encapsula coordenadas relacionadas en una sola estructura.
  • Proporciona inmutabilidad conceptual para posiciones.

🔸 Encapsulation:

  • Métodos getter/setter para acceso controlado.
  • Representación textual clara para debugging.
  • Separación clara entre datos y comportamiento.

Ambos tipos (FormatoPelicula y Ubicacion) demuestran diferentes enfoques en el diseño de tipos de dominio: FormatoPelicula como enumeración con manejo robusto de errores y Ubicacion como value object simple pero efectivo para encapsular coordenadas.

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