language from codeThu, 28 Nov 2024

1. Una empresa de estacionamientos desea implementar un Sistema de Gestión de Vehículos (SGV) para optimizar la asignación de espacios y el registro de ingresos y salidas. Este sistema debe ser desarrollado utilizando Java y aplicar los conceptos de Programación Orientada a Objetos (POO). El sistema gestionará vehículos de diferentes tipos, espacios de estacionamiento y tarifas, y deberá ser capaz de realizar operaciones como registrar vehículos, asignar espacios, calcular costos y generar reportes. 2. Las entidades principales del sistema incluyen: o Vehículo: Clase base para representar atributos comunes como placa, marca, y horaEntrada. Deberá contar con subclases como Automóvil, Motocicleta y Camión, que especialicen atributos como tamaño y tarifa por hora. EspacioEstacionamiento: Representa un espacio físico, con atributos como idEspacio, disponibilidad, y tipoEspacio (pequeño, mediano, grande). o Estacionamiento: Clase principal que administra los espacios, registra vehículos y calcula tarifas según el tiempo de estadía y el tipo de vehículo. 3. Implementar encapsulamiento, garantizando el acceso controlado a los atributos a través de métodos get y set. Los objetos Vehículo y EspacioEstacionamiento deben estar relacionados mediante agregación para permitir que un espacio sea asignado a múltiples vehículos en diferentes momentos. Por otro lado, el sistema debe incluir composición al relacionar el Estacionamiento con las listas de vehículos y espacios disponibles. 4. Para promover la reutilización de código, desarrollar una interfaz Gestionable, que defina métodos como registrarIngreso(), registrarSalida() y asignarEspacio(). Además, una clase abstracta llamada Tarifa deberá calcular costos según el tipo de vehículo y el tiempo transcurrido. El sistema debe implementar herencia de interfaz para garantizar que las subclases de Vehículo usen comportamientos especializados al calcular tarifas. 5. Las operaciones comunes del sistema deben utilizar polimorfismo, como el cálculo de tarifas diferenciado por tipo de vehículo. Los métodos que interactúan con múltiples objetos, como asignar varios espacios a diferentes vehículos simultáneamente, deben demostrar la aplicación de constructores y lógica bien estructurada. Además, deben definirse pre y post condiciones en los métodos, como asegurar que un espacio asignado esté disponible antes de registrar un ingreso. 6. El manejo de excepciones es crítico para evitar errores en la operación del sistema. Por ejemplo, si se intenta registrar un vehículo en un espacio ocupado o con una placa duplicada, el sistema debe lanzar excepciones específicas (EspacioOcupadoException, PlacaDuplicadaException). Los estudiantes también deben usar asserts para validar restricciones, como que el tiempo de estadía sea positivo o que el tipo de vehículo sea compatible con el espacio asignado. 7. El sistema debe ser probado con cinco inputs representativos, como registrar ingresos y salidas, calcular tarifas y manejar excepciones. Los reportes deben incluir vehículos actualmente estacionados, espacios disponibles y estadísticas como los ingresos generados en un día específico. Los resultados deben ser precisos y reflejar las operaciones realizadas. Inputs y Outputs de Ejemplo Input Output Registrar un automóvil con placa "ABC123" y marca "Toyota", ingresando a las 10:00 AM. Mensaje: "Vehículo registrado: Automóvil Toyota con placa ABC123 en espacio E01." Intentar asignar el espacio E01 a otro vehículo cuando ya está ocupado. Excepción: EspacioOcupadoException. Registrar la salida del vehículo "ABC123" a las 1:00 PM. Mensaje: "Vehículo con placa ABC123 ha salido. Total a pagar: $30.00 MXN." Generar reporte de espacios disponibles. Lista de espacios disponibles: ["E02", "E03", "E04"]. Intentar registrar un vehículo con placa "ABC123" nuevamente sin haber registrado salida. Excepción: PlacaDuplicadaException. Requerimientos y Restricciones del Sistema • El sistema debe soportar hasta 100 espacios de estacionamiento, clasificados por tamaño. • Cada tipo de espacio solo puede ser asignado a vehículos compatibles (pequeño para motocicletas, grande para camiones, etc.). • Los tiempos de entrada y salida deben estar en formato de 24 horas y ser validados. • Las tarifas deben calcularse con una base mínima de $10 MXN por hora para automóviles, $5 MXN para motocicletas y $20 MXN para camiones. • No se permite registrar un vehículo si no hay espacios disponibles compatibles.

Please keep input under 1000 characters

Questions about programming?Chat with your personal AI assistant