Sistema de gestión de alquiler de vehículos desarrollado en Java 21 como proyecto de taller/tarea.
Aplicación de consola para gestionar una empresa de alquiler de autos. Permite administrar categorías, vehículos, clientes, agentes de renta y contratos de alquiler a través de un menú interactivo.
src/main/java/com/rentacar/
├── App.java # Punto de entrada con menú principal
├── model/ # Entidades del dominio
│ ├── RentACar.java # Contenedor principal (colecciones + HashMaps)
│ ├── CategoriaAuto.java # Agrupa vehículos por categoría
│ ├── Auto.java # Vehículo con estado, combustible, precio/día
│ ├── Cliente.java # Cliente con documento, licencia, contacto
│ ├── AgenteRenta.java # Agente que registra alquileres
│ ├── ContratoRenta.java # Contrato vincula cliente + auto + agente + fechas
│ └── TipoVehiculo.java # Enum: SEDAN, SUV, HATCHBACK, etc.
├── enums/
│ ├── EstadoAuto.java # DISPONIBLE, ALQUILADO, MANTENIMIENTO, FUERA_DE_SERVICIO
│ ├── TipoCombustible.java # GASOLINA, DIESEL, HIBRIDO, ELECTRICO
│ └── EstadoContrato.java # ACTIVO, FINALIZADO, CANCELADO, VENCIDO
├── service/ # Lógica de negocio (CRUD + operaciones)
│ ├── RentACarService.java
│ ├── CategoriaAutoService.java
│ ├── AutoService.java
│ ├── ClienteService.java
│ ├── AgenteRentaService.java
│ └── ContratoRentaService.java
├── exception/
│ ├── DatoDuplicadoException.java
│ ├── EntidadNoEncontradaException.java
│ └── OperacionInvalidaException.java
└── util/
├── InputHelper.java # Lectura de consola con validación
├── Validador.java # Validaciones comunes
└── ConsolePrinter.java # Salida formateada
- App.java como punto de entrada con menú interactivo
- Colecciones: ArrayList, HashMap, HashSet
- OOP: Herencia, polimorfismo, encapsulamiento (getters/setters/constructores)
- Relaciones entre clases: RentACar contiene todo, Auto pertenece a CategoriaAuto, ContratoRenta vincula Cliente + Auto + AgenteRenta
- Enums para estados y tipos
- Excepciones personalizadas para duplicados, no encontrado, operaciones inválidas
- Principios SOLID básicos (separación de responsabilidades en services)
- Generics en collections y maps
# Compilar
mvn compile
# Empaquetar JAR
mvn package
# Ejecutar
java -jar target/rentacar-console-1.0.0.jar- Gestionar Categorías - CRUD categorías de autos
- Gestionar Autos - CRUD autos, buscar por ID/placa, cambiar estado, listar por categoría
- Gestionar Clientes - CRUD clientes, buscar por ID/documento
- Gestionar Agentes - CRUD agentes de renta
- Gestionar Contratos - Crear contrato, listar, finalizar, cancelar
- Ver Información General - Estadísticas del sistema
- Configurar Empresa - Cambiar nombre, dirección, teléfono
- Salir
Al iniciar se cargan automáticamente:
- 3 categorías: Económico, SUV, Lujo
- 3 autos (uno por categoría)
- 2 clientes
- 2 agentes
- 1 contrato activo (auto alquilado)
- Java 21
- Maven 3.x
- Sin dependencias externas (solo JDK)
- 🌐 Karina Méndez - @Sixthdam
- 💻 Juan Jose Mora - @Monometra
