🏁 EJERCICIO 5 — EL JEFE FINAL
Simulacro Real de Examen Java (Rent-a-Car)
Este ejercicio junta TODO: POO, herencia, abstracción, polimorfismo, colecciones,
menú, ficheros y excepciones.
🧠 Mentalidad:
Si superas esto, no apruebas por suerte: apruebas por ingeniería.
📐 DIAGRAMA DE CLASES (ASCII)
┌────────────────────────────┐
│ Vehiculo (abs) │
├────────────────────────────┤
│ # matricula : String │
│ # diasAlquiler : int │
├────────────────────────────┤
│ + Vehiculo(m:String, d:int)│
│ + calcularPrecio(): double │ -->(abstract)
│ + toString(): String │
└───────────────▲────────────┘
│
┌─────────────────┴──────────────┐
│ │
┌────────────────────────┐ ┌────────────────────────┐
│ Coche │ │ Furgoneta │
├────────────────────────┤ ├────────────────────────┤
│ - plazasExtra : int │ │ - toneladas : double │
├────────────────────────┤ ├────────────────────────┤
│ + Coche(...) │ │ + Furgoneta(...) │
│ + calcularPrecio() │ │ + calcularPrecio() │
└────────────────────────┘ └────────────────────────┘
, 👉 # = protected
👉 Flecha = extends
👉 Método abstracto obliga a implementar lógica distinta.
🧠 REGLAS DEL NEGOCIO
Precio base: 30€ por día.
Coche : suma 1.5€ por cada plaza extra por día.
Furgoneta : suma 5€ por tonelada por día.
📄 Vehiculo.java (ABSTRACTA)
public abstract class Vehiculo {
protected String matricula;
protected int diasAlquiler;
public Vehiculo(String matricula, int diasAlquiler) {
this.matricula = matricula;
this.diasAlquiler = diasAlquiler;
}
public abstract double calcularPrecio();
@Override
public String toString() {
return "Matricula: " + matricula + ", Dias: " + diasAlquiler;
}
}
Simulacro Real de Examen Java (Rent-a-Car)
Este ejercicio junta TODO: POO, herencia, abstracción, polimorfismo, colecciones,
menú, ficheros y excepciones.
🧠 Mentalidad:
Si superas esto, no apruebas por suerte: apruebas por ingeniería.
📐 DIAGRAMA DE CLASES (ASCII)
┌────────────────────────────┐
│ Vehiculo (abs) │
├────────────────────────────┤
│ # matricula : String │
│ # diasAlquiler : int │
├────────────────────────────┤
│ + Vehiculo(m:String, d:int)│
│ + calcularPrecio(): double │ -->(abstract)
│ + toString(): String │
└───────────────▲────────────┘
│
┌─────────────────┴──────────────┐
│ │
┌────────────────────────┐ ┌────────────────────────┐
│ Coche │ │ Furgoneta │
├────────────────────────┤ ├────────────────────────┤
│ - plazasExtra : int │ │ - toneladas : double │
├────────────────────────┤ ├────────────────────────┤
│ + Coche(...) │ │ + Furgoneta(...) │
│ + calcularPrecio() │ │ + calcularPrecio() │
└────────────────────────┘ └────────────────────────┘
, 👉 # = protected
👉 Flecha = extends
👉 Método abstracto obliga a implementar lógica distinta.
🧠 REGLAS DEL NEGOCIO
Precio base: 30€ por día.
Coche : suma 1.5€ por cada plaza extra por día.
Furgoneta : suma 5€ por tonelada por día.
📄 Vehiculo.java (ABSTRACTA)
public abstract class Vehiculo {
protected String matricula;
protected int diasAlquiler;
public Vehiculo(String matricula, int diasAlquiler) {
this.matricula = matricula;
this.diasAlquiler = diasAlquiler;
}
public abstract double calcularPrecio();
@Override
public String toString() {
return "Matricula: " + matricula + ", Dias: " + diasAlquiler;
}
}