Diseña un sistema de aparcamiento (diseño orientado a objetos).
Respuesta
- Aclara: niveles, tipos de plaza (moto, compacto, grande, eléctrico), pago, puertas de entrada y salida.
- Clases:
ParkingLot (niveles, puertas), Level (plazas), ParkingSpot (tipo, is_free), Vehicle con un tamaño, Ticket (plaza, hora de entrada), PricingStrategy. - Estrategia de asignación de plazas (la libre más cercana, por tipo) detrás de una interface.
- Concurrencia: dos coches nunca deben recibir la misma plaza (lock o actualización atómica en la base de datos).
- Muestra SOLID: precios como Strategy, paneles de plazas libres como Observers.
Practica esta pregunta en Repaso