✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.
PREGUNTA 12
Analice cuidadosamente el siguiente fragmento de código:
def crear_reserva(self, docente, laboratorio, fecha, hora_inicio, hora_fin):
print("\n[GESTOR DE RESERVA]")
print("El gestor inicia el proceso de creación de la reserva.")
reserva = Reserva(
id_reserva=len(self.repositorio.reservas) + 1,
docente=docente,
laboratorio=laboratorio,
fecha=fecha,
hora_inicio=hora_inicio,
hora_fin=hora_fin
)
disponible = self.validar_disponibilidad(
laboratorio,
fecha,
hora_inicio,
hora_fin
)
if laboratorio.verificar_disponibilidad(disponible):
reserva.confirmar()
laboratorio.ocupar()
else:
reserva.cancelar()
self.repositorio.guardar_reserva(reserva)
print("\n[ETAPA 6] Proceso finalizado")
print(f"Estado final de la reserva #{reserva.id_reserva}: {reserva.estado}")
return reserva
Responda:
a) Explique cómo se distribuyen las responsabilidades entre los objetos que aparecen en el fragmento. En su respuesta debe analizar el papel que cumplen GestorReserva, Reserva, Laboratorio y RepositorioReserva dentro del proceso de creación de una reserva.
b) Suponga que se elimina la línea:
laboratorio.ocupar()
sin modificar ninguna otra parte del código.
Explique qué efecto tendría esta eliminación sobre el comportamiento del sistema y sobre la coherencia entre el estado de la reserva y la disponibilidad del laboratorio.
c) Suponga que se elimina la línea:
self.repositorio.guardar_reserva(reserva)
y no se realiza ninguna otra modificación en el sistema.
Explique qué consecuencias tendría esta decisión sobre el comportamiento del sistema y sobre las responsabilidades asignadas a los objetos dentro del modelo de diseño.