Ejercicio 1. Gestión de centro deportivo

Enunciado

Un centro de ocio gestiona socios y varias salas (sala de baile, estudio, pista de pádel) que tienen nombre, capacidad y horario. Los socios pueden reservar una sala para una franja horaria concreta; las reservas pueden ser individuales o de grupo y deben confirmarse a la llegada. Diseña el diagrama de clases y un diagrama de objetos con un socio y dos reservas.

Tareas y soluciones propuestas

Indicar atributos y métodos principales.

Identificar Clases, Atributos y Métodos. En este caso encontramos las siguientes clases:

  • Socio, es la clase que gestiona los socios
    • Atributos: id, nombre, email, tipoCuota.
    • Métodos: reservarSala(socio, sala, fechaHora, duracion), confirmarAsistencia(reserva).
  • Sala, es la clase que gestiona las salas.
    • Atributos: id, nombre, capacidad, horario.
    • Métodos: anularReserva(reserva).
  • Reserva, es la clase que gestiona las reservas.
    • Atributos: id, fechaHora, duracion, tipoReserva.
  • Opcionalmente, podriamos crear la clase Centro, que gestiona el centro de manera general.
    • Atributos: id, nombre, direccion.

Añadir multiplicidades en las asociaciones.

  • Socio 1..* — 0..* Reserva.
  • Sala 1 — 0..* Reserva
  • Entre Centro y Sala se pude implementar una Composición: Centro contiene Salas (composición fuerte).

Elaborar el diagrama de clases.

@startuml
class Centro {
- nombre: String
- direccion: String
}
class Socio {
- id: String
- nombre: String
- email: String
- tipoCuota: String
+ reservarSala(sala: Sala, fechaHora: DateTime, duracion: int): Reserva
+ confirmarLlegada(reserva: Reserva): void
}
class Sala {
- id: String
- nombre: String
- capacidad: int
- horario: String
+ crearSala(nombre:String,capacidad:int,horario:String): Sala
}
class Reserva {
- id: String
- fechaHora: DateTime
- duracion: int
- tipoReserva: String
- confirmado: boolean
+ confirmar(): void
}
class Grupo {
- id: String
- nombre: String
}
Centro *-- Sala
Socio "1" -- "0..*" Reserva
Sala "1" -- "0..*" Reserva
Reserva "0..1" -- "0..1" Grupo
@enduml

El diagrama de clases se puede ver en la siguiente figura: Diagrama de clases en PlantUML

Crear un diagrama de objetos con un socio y una reserva.

@startuml
object "Socio_S01" as S01 {
id = "S01"
nombre = "Ana Ruiz"
email = "ana@ejemplo.com"
tipoCuota = "mensual"
}
object "Sala_A1" as A1 {
id = "A1"
nombre = "SalaBaile"
capacidad = 25
horario = "Lun-Vie 17:00-21:00"
}
object "Reserva_R10" as R10 {
id = "R10"
fechaHora = "2026-05-20 18:00"
duracion = "60"
tipoReserva = "individual"
confirmado = false
}
S01 --> R10 : "hizo"
A1 --> R10 : "ocupadaPor"
@enduml

El diagrama de clases se puede ver en la siguiente figura: Diagrama de objetos en PlantUML