UT06 - EJERCICIO RESUELTO
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