diff --git a/Diagrama_clases_Taller.drawio b/Diagrama_clases_Taller.drawio
new file mode 100644
index 0000000..aa7dab1
--- /dev/null
+++ b/Diagrama_clases_Taller.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Diagrama_clases_Taller.pdf b/Diagrama_clases_Taller.pdf
new file mode 100644
index 0000000..ec1a649
Binary files /dev/null and b/Diagrama_clases_Taller.pdf differ
diff --git a/src/com/app/App.java b/src/com/app/App.java
index 0056722..633c350 100644
--- a/src/com/app/App.java
+++ b/src/com/app/App.java
@@ -1,10 +1,112 @@
package com.app;
+import java.time.LocalDate;
+
+import com.tallerpepe.HojaTrabajo;
+import com.tallerpepe.Presupuesto;
+import com.tallerpepe.Reparacion;
+import com.tallerpepe.Repuesto;
+import com.tallerpepe.Taller;
+import vehiculos.Coche;
+import vehiculos.Moto;
+
public class App {
public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
+ /*
+ * ingreso de un vehiculo al taller, estimación de horas de la reparación y
+ * presupuesto
+ */
+ Repuesto filtroAceite = new Repuesto("Filtro aceite motor", 10.50f);
+ Repuesto ruedaCoche = new Repuesto("Rueda Michelin", 65.20f);
+ Repuesto ruedaHarley = new Repuesto("Rueda halery", 50.60f);
+ Repuesto aceiteMotor = new Repuesto("Aceite motor diesel 5L", 20.60f);
+ Repuesto filtroAire = new Repuesto("Filtro aire", 8.50f);
+ Repuesto pastillaFreno = new Repuesto("Pastilla freno", 9.70f);
+ Repuesto limpiaParabrisas = new Repuesto("Limpiaparabrisas 2L", 3.50f);
+ Reparacion revision1 = new Reparacion(2f);
+ revision1.getRepuestos().put(aceiteMotor, 2);
+ revision1.getRepuestos().put(filtroAceite, 1);
+ Reparacion revision2 = new Reparacion(1.30f);
+ revision2.getRepuestos().put(pastillaFreno, 2);
+ Reparacion cambioRuedasCoche = new Reparacion(2.30f);
+ cambioRuedasCoche.getRepuestos().put(ruedaCoche, 4);
+ Reparacion cambioRuedasHarley = new Reparacion(1.45f);
+ cambioRuedasHarley.getRepuestos().put(ruedaHarley, 2);
+
+ Coche cocheRenault = new Coche("Renault 21", "verde");
+ cocheRenault.setMatricula("2153BNR");
+ cocheRenault.getReparacionesPendientes().add(revision1);
+// cocheRenault.getReparacionesPendientes().get(0).setGarantia(true);
+ cocheRenault.getReparacionesPendientes().add(cambioRuedasCoche);
+// cocheRenault.getReparacionesPendientes().get(1).setGarantia(true);
+ cocheRenault.setFechaEntrada(LocalDate.of(2021, 01, 05));
+
+ Moto harley1 = new Moto("HARLEY DAVIDSON", "negro");
+ harley1.getReparacionesPendientes().add(revision2);
+// harley1.getReparacionesPendientes().get(0).setGarantia(true);
+ harley1.getReparacionesPendientes().add(cambioRuedasHarley);
+ harley1.setFechaEntrada(LocalDate.of(2021, 01, 05));
+
+ Taller taller1 = new Taller(cocheRenault, harley1);
+// taller1.getListaReparables().add(cocheRenault);
+// taller1.getListaReparables().add(harley1);
+ Presupuesto presupuestoRenault = new Presupuesto(cocheRenault);
+ System.out.println(presupuestoRenault.calcularTextoPresupuesto(10f));
+ Presupuesto presupuestoHarley = new Presupuesto(harley1);
+ System.out.println(presupuestoHarley.calcularTextoPresupuesto(10f));
+
+ /*
+ * El turno para reparar los vehículos los dará en primer lugar la existencia de
+ * piezas de repuesto para reparar todas las averías, después la fecha de
+ * entrada del vehículo al taller y finalmente el menor tiempo de reparación
+ * estimado.
+ */
+
+ Taller.getAlmacenRepuestos().put(limpiaParabrisas, 2);
+ Taller.getAlmacenRepuestos().put(pastillaFreno, 1);
+ Taller.getAlmacenRepuestos().put(filtroAire, 3);
+ Taller.getAlmacenRepuestos().put(aceiteMotor, 1);
+ Taller.getAlmacenRepuestos().put(filtroAceite, 2);
+ Taller.getAlmacenRepuestos().put(ruedaHarley, 0);
+ Taller.getAlmacenRepuestos().put(ruedaCoche, 4);
+
+ System.out.println("\nAlmacén de Repuestos:\n" + Taller.getAlmacenRepuestos().toString());
+ System.out.println("\nCálculo del turno de reparación:");
+ taller1.getListaReparables().sort(Taller.COMPARADOR_TURNO_REPARACION);
+// taller1.calcularTurnoReparacion(taller1.getListaReparables());
+ taller1.getListaReparables().forEach(System.out::println);
+
+ /*
+ * La reparación tendrá una fecha de entrega del vehículo y tiene un periodo de
+ * garantía de un año. En caso de surgir la misma avería en menos de un año, el
+ * taller reparará dicha avería sin coste para el cliente a menos que en la
+ * diagnosis de detecte algún tipo de mal uso o fraude.
+ */
+ cambioRuedasCoche.setFechaEntregaReparable(LocalDate.of(2020, 01, 10));
+ cambioRuedasCoche.setFechaFinGarantiaReparacion();
+ cambioRuedasHarley.setFechaEntregaReparable(LocalDate.of(2020, 01, 03));
+ cambioRuedasHarley.setFechaFinGarantiaReparacion();
+ revision1.setFechaEntregaReparable(LocalDate.of(2020, 11, 10));
+ revision1.setFechaFinGarantiaReparacion();
+ revision1.setMalUso(true);
+ revision2.setFechaEntregaReparable(LocalDate.of(2020, 10, 02));
+ revision2.setFechaFinGarantiaReparacion();
+ revision2.setMalUso(true);
+ float precioReparacionCoche = taller1.calcularPrecioReparaciones(cocheRenault);
+ float precioReparacionHarley = taller1.calcularPrecioReparaciones(harley1);
+ System.out
+ .println("\nEl precio de la reparacion del Coche es: " + String.format("%.2f€", precioReparacionCoche));
+ System.out.println(
+ "\nEl precio de la reparacion de la harley es: " + String.format("%.2f€", precioReparacionHarley));
+ HojaTrabajo hojaTrabajoCoche = new HojaTrabajo(cocheRenault, LocalDate.of(2021, 01, 12), revision1,
+ cambioRuedasCoche);
+ HojaTrabajo hojaTrabajoHarley = new HojaTrabajo(harley1, LocalDate.of(2021, 01, 11), revision2,
+ cambioRuedasHarley);
+ System.out.println("\nImpresion de Hojas de Trabajo:");
+ System.out.println(hojaTrabajoCoche);
+ System.out.println(hojaTrabajoHarley);
+ }
}
diff --git a/src/com/github/commerce/Merchantable.java b/src/com/github/commerce/Merchantable.java
index 911f68b..013dd04 100644
--- a/src/com/github/commerce/Merchantable.java
+++ b/src/com/github/commerce/Merchantable.java
@@ -1,18 +1,18 @@
package com.github.commerce;
public interface Merchantable {
- String DEFAULT_CURRENCY = "€";
- static Double priceToDouble(Merchantable merchantable) {
- return new Double(merchantable.getPrice());
- }
+ String DEFAULT_CURRENCY = "€";
- String getDescription();
- float getPrice();
+ static Double priceToDouble(Merchantable merchantable) {
+ return new Double(merchantable.getPrice());
+ }
- default String getString() {
- return getDescription() + " (" + getPrice()
- + DEFAULT_CURRENCY + ")";
- }
-
+ String getDescription();
+
+ float getPrice();
+
+ default String getString() {
+ return getDescription() + " (" + getPrice() + DEFAULT_CURRENCY + ")";
+ }
}
diff --git a/src/com/github/commerce/Product.java b/src/com/github/commerce/Product.java
index 4f3367b..3ffe8d2 100644
--- a/src/com/github/commerce/Product.java
+++ b/src/com/github/commerce/Product.java
@@ -2,25 +2,25 @@
public class Product implements Merchantable {
- private String description;
- private float price;
+ private String description;
+ private float price;
- @Override
- public String getDescription() {
- return description;
- }
+ @Override
+ public String getDescription() {
+ return description;
+ }
- @Override
- public float getPrice() {
- return price;
- }
+ @Override
+ public float getPrice() {
+ return price;
+ }
- public Product(String description, float price) {
- this.description = description;
- this.price = price;
- }
+ public Product(String description, float price) {
+ this.description = description;
+ this.price = price;
+ }
- @Override
+ @Override
public String toString() {
return getString();
}
diff --git a/src/com/tallerpepe/HojaTrabajo.java b/src/com/tallerpepe/HojaTrabajo.java
new file mode 100644
index 0000000..477e5da
--- /dev/null
+++ b/src/com/tallerpepe/HojaTrabajo.java
@@ -0,0 +1,38 @@
+package com.tallerpepe;
+
+import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.Collection;
+
+public class HojaTrabajo {
+
+ private Reparable reparable;
+ private LocalDate fechaFin;
+ private Collection trabajosTerminados;
+
+ public Reparable getReparable() {
+ return reparable;
+ }
+
+ public LocalDate getFechaFin() {
+ return fechaFin;
+ }
+
+ public Collection getTrabajosTerminados() {
+ return trabajosTerminados;
+ }
+
+ public HojaTrabajo(Reparable reparable, LocalDate fechaFin, Reparacion... trabajosTerminados) {
+ super();
+ this.reparable = reparable;
+ this.fechaFin = fechaFin;
+ this.trabajosTerminados = Arrays.asList(trabajosTerminados);
+ }
+
+ @Override
+ public String toString() {
+ return "\nHojaTrabajo:\n" + getReparable() + "\nFecha de Finalización: " + getFechaFin()
+ + "\nTrabajos Terminados: " + getTrabajosTerminados() + "]";
+ }
+
+}
diff --git a/src/com/tallerpepe/Presupuesto.java b/src/com/tallerpepe/Presupuesto.java
index 61ea48d..eea77f9 100644
--- a/src/com/tallerpepe/Presupuesto.java
+++ b/src/com/tallerpepe/Presupuesto.java
@@ -2,68 +2,75 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
public class Presupuesto {
private Reparable reparable;
private Collection reparaciones;
-
+
private Reparable getReparable() {
return reparable;
}
-
+
public Collection getReparaciones() {
return reparaciones;
}
-
+
public Presupuesto(Reparable reparable) {
this.reparable = reparable;
reparaciones = new ArrayList<>(reparable.getReparacionesPendientes());
}
-
+
public float getHorasManoObra() {
float horasTotales = 0;
for (Reparacion reparacion : getReparaciones()) {
- if(!reparacion.isGarantia()) {
+ if (!reparacion.isGarantia()) {
horasTotales += reparacion.getHorasManoObra();
}
}
-
+
return horasTotales;
}
-
+
public float getPrecioRepuestos() {
- Collection repuestos = new ArrayList<>();
+ Map repuestos = new HashMap<>();
for (Reparacion reparacion : getReparaciones()) {
- if(!reparacion.isGarantia()) {
- repuestos.addAll(reparacion.getRepuestos());
+ if (!reparacion.isGarantia()) {
+ for (Map.Entry entry : reparacion.getRepuestos().entrySet()) {
+ repuestos.put(entry.getKey(), entry.getValue());
+ }
}
}
return getPrecioPara(repuestos);
}
-
+
public float getPrecioTotal(float precioManoObra) {
return getPrecioRepuestos() + getHorasManoObra() * precioManoObra;
}
-
- private static float getPrecioPara(Collection repuestos) {
+
+ private static float getPrecioPara(Map repuestos) {
float total = 0;
- for (Repuesto repuesto : repuestos) {
- total += repuesto.getPrecio();
+ for (Map.Entry entry : repuestos.entrySet()) {
+ total += entry.getKey().getPrecio() * entry.getValue();
}
-
+
return total;
}
public String calcularTextoPresupuesto(float precioManoObra) {
- String texto = "Presupuesto para:\n";
+ float horasTotalesManoObra = 0;
+ String texto = "\nPresupuesto para:\n";
texto += getReparable();
// Ahora pongo cara reparacion en una linea
for (Reparacion reparacion : getReparaciones()) {
- texto += "\n" + reparacion; // "\n" para dalto de linea
+ texto += "\n" + reparacion; // "\n" para salto de linea
+ horasTotalesManoObra += reparacion.getHorasManoObra();
}
- texto += "\nPrecio Total: " + getPrecioTotal(precioManoObra);
-
+ texto += "\nPrecio Total: " + String.format("%.2f €", getPrecioTotal(precioManoObra))
+ + String.format("\nHoras totales de mano de obra: %.2f horas", horasTotalesManoObra);
+
return texto;
}
}
diff --git a/src/com/tallerpepe/Reparable.java b/src/com/tallerpepe/Reparable.java
index 09597a3..eb9ffe0 100644
--- a/src/com/tallerpepe/Reparable.java
+++ b/src/com/tallerpepe/Reparable.java
@@ -1,10 +1,11 @@
package com.tallerpepe;
-import java.util.Collection;
-import java.util.Date;
+import java.time.LocalDate;
+import java.util.List;
public interface Reparable {
- Date getFechaEntrada();
- Collection getReparacionesPendientes();
+ LocalDate getFechaEntrada();
+
+ List getReparacionesPendientes();
}
diff --git a/src/com/tallerpepe/Reparacion.java b/src/com/tallerpepe/Reparacion.java
index 499a37c..be84f1a 100644
--- a/src/com/tallerpepe/Reparacion.java
+++ b/src/com/tallerpepe/Reparacion.java
@@ -1,21 +1,59 @@
package com.tallerpepe;
+import java.time.LocalDate;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
public class Reparacion {
- public enum Tipo { MOTOR, CHAPA };
-
+ public enum Tipo {
+ MOTOR, CHAPA
+ };
+
Tipo tipo;
- Collection repuestos;
- float horasManoObra;
- boolean garantia;
-
- public Collection getRepuestos() {
+ private Map repuestos;
+ private Collection repuestos2;
+ private float horasManoObra;
+ private boolean garantia;
+ private LocalDate fechaEntregaReparable;
+ private LocalDate fechaFinGarantiaReparacion;
+ private boolean malUso = false;
+
+ public boolean isMalUso() {
+ return malUso;
+ }
+
+ public void setMalUso(boolean malUso) {
+ this.malUso = malUso;
+ }
+
+ public LocalDate getFechaEntregaReparable() {
+ return fechaEntregaReparable;
+ }
+
+ public void setFechaEntregaReparable(LocalDate fechaEntregaReparable) {
+ this.fechaEntregaReparable = fechaEntregaReparable;
+ }
+
+ public LocalDate getFechaFinGarantiaReparacion() {
+ return fechaFinGarantiaReparacion;
+ }
+
+ public void setFechaFinGarantiaReparacion() {
+ if (getFechaEntregaReparable() == null) {
+ System.err.println("La reparación no tiene fecha de entrega");
+ } else {
+ this.fechaFinGarantiaReparacion = getFechaEntregaReparable().plusYears(1);
+ }
+ }
+
+ public Map getRepuestos() {
return repuestos;
}
-
+
public float getHorasManoObra() {
return horasManoObra;
}
@@ -23,21 +61,29 @@ public float getHorasManoObra() {
public boolean isGarantia() {
return garantia;
}
-
+
public void setGarantia(boolean garantia) {
this.garantia = garantia;
}
-
+
public Reparacion(float horasManoObra, Repuesto... repuestos) {
super();
- this.repuestos = Arrays.asList(repuestos);
+ this.repuestos2 = Arrays.asList(repuestos);
this.horasManoObra = horasManoObra;
}
+ public Reparacion(float horasManoObra) {
+ super();
+ this.repuestos = new HashMap<>();
+ this.horasManoObra = horasManoObra;
+ this.garantia = false;
+ }
+
@Override
public String toString() {
- return "Repuestos=" + repuestos + " (" + horasManoObra + "hs)";
+ return "Repuestos=" + getRepuestos() + " (" + getHorasManoObra() + "hs)";
}
+
-
+
}
diff --git a/src/com/tallerpepe/Repuesto.java b/src/com/tallerpepe/Repuesto.java
index a5cc97c..44c71fe 100644
--- a/src/com/tallerpepe/Repuesto.java
+++ b/src/com/tallerpepe/Repuesto.java
@@ -4,11 +4,11 @@ public class Repuesto {
String nombre;
float precio;
-
+
public String getNombre() {
return nombre;
}
-
+
public float getPrecio() {
return precio;
}
@@ -23,5 +23,5 @@ public Repuesto(String nombre, float precio) {
public String toString() {
return getNombre() + " " + getPrecio() + "€";
}
-
+
}
diff --git a/src/com/tallerpepe/Taller.java b/src/com/tallerpepe/Taller.java
new file mode 100644
index 0000000..8f1aece
--- /dev/null
+++ b/src/com/tallerpepe/Taller.java
@@ -0,0 +1,134 @@
+
+package com.tallerpepe;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Taller {
+
+ private List listaReparables;
+ private static Map almacenRepuestos;
+ private List hojasTrabajo;
+ public final static Comparator COMPARADOR_TURNO_REPARACION = new Comparator() {
+
+ @Override
+ public int compare(Reparable reparable1, Reparable reparable2) {
+ int resultado = comprobarFaltantesRepuestos(reparable1) - comprobarFaltantesRepuestos(reparable2);
+ if (resultado == 0) {
+ resultado = reparable1.getFechaEntrada().compareTo(reparable2.getFechaEntrada());
+ }
+ if (resultado == 0) {
+ resultado = (int) (calcularTiempoReparacion(reparable1) - calcularTiempoReparacion(reparable2));
+ }
+ return resultado;
+ }
+ };
+
+ public List getListaReparables() {
+ return listaReparables;
+ }
+
+ public static Map getAlmacenRepuestos() {
+ return almacenRepuestos;
+ }
+
+ public List getHojasTrabajo() {
+ return hojasTrabajo;
+ }
+
+ public Taller() {
+ this(new ArrayList<>(), new HashMap<>(), new ArrayList<>());
+// listaReparables = new ArrayList<>();
+// almacenRepuestos = new HashMap<>();
+// hojasTrabajo = new ArrayList<>();
+ }
+
+ public Taller(Reparable... reparables) {
+ this.listaReparables = Arrays.asList(reparables);
+ almacenRepuestos = new HashMap<>();
+ hojasTrabajo = new ArrayList<>();
+
+ }
+
+ public Taller(List listaReparables, Map almacenRepuestos,
+ List hojasTrabajo) {
+ super();
+ this.listaReparables = listaReparables;
+ Taller.almacenRepuestos = almacenRepuestos;
+ this.hojasTrabajo = hojasTrabajo;
+ }
+
+ @Override
+ public String toString() {
+ return "Lista de Vehiculos: " + getListaReparables() + ", Almacén de Repuestos: " + getAlmacenRepuestos()
+ + ", Hojas de Trabajo: " + getHojasTrabajo();
+ }
+
+ public List calcularTurnoReparacion(List reparables) {
+ Collections.sort(reparables, COMPARADOR_TURNO_REPARACION);
+ return reparables;
+ }
+
+ static double calcularTiempoReparacion(Reparable reparable) {
+// float tiempo = 0.0f;
+// for (Reparacion reparacion : reparable.getReparacionesPendientes()) {
+// tiempo += reparacion.getHorasManoObra();
+// }
+// return tiempo;
+ return reparable.getReparacionesPendientes().stream().mapToDouble(Reparacion::getHorasManoObra).sum();
+ }
+
+ static int comprobarFaltantesRepuestos(Reparable reparable) {
+ int contador = 0;
+ for (Reparacion reparacion : reparable.getReparacionesPendientes()) {
+ for (Map.Entry entry : reparacion.getRepuestos().entrySet()) {
+ if (comprobarRepuestosAlmacen(entry.getKey(), entry.getValue())) {
+ contador++;
+ }
+ }
+// for (Repuesto repuesto : reparacion.getRepuestos()) {
+// if (!comprobarRepuestosAlmacen(repuesto)) {
+// contador++;
+// }
+// }
+ }
+ return contador;
+ }
+
+ static boolean comprobarRepuestosAlmacen(Repuesto repuesto, int valor) {
+ return (getAlmacenRepuestos().get(repuesto) < valor);
+ }
+
+ public boolean comprobarMalUso(Reparacion reparacion) {
+ boolean resultado = false;
+ if (reparacion.isMalUso()) {
+ resultado = true;
+ }
+ return resultado;
+ }
+
+ public boolean comprobarGarantiaReparacion(Reparacion reparacion) {
+ boolean resultado = false;
+ if (reparacion.getFechaFinGarantiaReparacion().isAfter(LocalDate.now())) {
+ resultado = true;
+ }
+ return resultado;
+ }
+
+ public float calcularPrecioReparaciones(Reparable reparable) {
+ float precioReparaciones = 0;
+ Presupuesto presupuesto = new Presupuesto(reparable);
+ for (Reparacion reparacion : reparable.getReparacionesPendientes()) {
+ if (!comprobarGarantiaReparacion(reparacion) || comprobarMalUso(reparacion)) {
+ precioReparaciones += presupuesto.getPrecioTotal(10f);
+ }
+ }
+ return precioReparaciones;
+ }
+}
diff --git a/src/comun/Identificable.java b/src/comun/Identificable.java
index 0143f21..ceee64b 100644
--- a/src/comun/Identificable.java
+++ b/src/comun/Identificable.java
@@ -1,16 +1,7 @@
package comun;
-public interface Identificable> {//extends Comparable> {//, V extends Identificable> {
+public interface Identificable> {
T getId();
-// @Override
-// default int compareTo(Identificable identificable) {
-// return getId().compareTo(identificable.getId());
-// }
-
-// default Identificable getValor() {
-// return this;
-// }
-
}
diff --git a/src/ejemplos_uso/EjemploAnonima.java b/src/ejemplos_uso/EjemploAnonima.java
index 8f5feb6..9801b22 100644
--- a/src/ejemplos_uso/EjemploAnonima.java
+++ b/src/ejemplos_uso/EjemploAnonima.java
@@ -1,8 +1,5 @@
package ejemplos_uso;
-import java.util.Comparator;
-
-import vehiculos.Coche;
import vehiculos.Moto;
import vehiculos.Vehiculo;
import vehiculos.VehiculoConRuedas;
@@ -10,8 +7,9 @@
public class EjemploAnonima {
private static String colorValido2 = "Verde";
-
+
public static void main(String[] args) {
+
Vehiculo original = new Vehiculo("Original", null);
System.out.println(original.getClass());
@@ -34,17 +32,48 @@ public int getNumeroDeRuedas() {
}
};
+ System.out.println(anonimo);
VehiculoConRuedas triciclo = new VehiculoConRuedas("Fisher-Price", "Multicolor") {
- int numeroRuedas = 0;
-
+
@Override
public int getNumeroDeRuedas() {
- return numeroRuedas++;
+ return 3;
}
+ };
+
+ System.out.println(triciclo);
+ Moto harley = new Moto("Harley-Davidson", "Rosa") {
+ @Override
+ public void setColor(String color) {
+ if (!(color.equals("Rojo") || color.equals("Negro"))) {
+ System.out.println("No se permite ese color para " + getModelo());
+ }
+ }
};
-
+
+ System.out.println(harley);
+ harley.setColor("Rojo");
+ System.out.println(harley);
+
+ Vehiculo barco = new Vehiculo("CMB Yachts", "Blanco") {
+ double eslora = 47.8;
+
+ private double getEslora() {
+ return eslora;
+ }
+
+ public String toString() {
+ return super.toString() + " con " + getEslora() + "m de eslora";
+ }
+ };
+
+ System.out.println(barco);
+ System.out.println(triciclo.getClass());
+ System.out.println(harley.getClass());
+ System.out.println(barco.getClass());
+
System.out.println(anonimo.getClass());
System.out.println(original);
@@ -53,25 +82,24 @@ public int getNumeroDeRuedas() {
System.out.println(triciclo);
System.out.println(triciclo);
System.out.println(triciclo);
-
+
String colorValido1 = "Azul";
// String colorValido2 = "Verde";
-
- Moto harley = new Moto("Harley-Davidson", "Rojo") {
-
- @Override
- public void setColor(String color) {
- if(!(color.equals(colorValido1) || color.equals(colorValido2))) {
- System.out.println("No se permite ese color para " + getModelo());
- }
- else {
- super.setColor(color);
- }
- }
-
- };
- harley.setColor("Verde");
- System.out.println(harley);
+
+ Moto harley2 = new Moto("Harley-Davidson", "Rojo") {
+
+ @Override
+ public void setColor(String color) {
+ if (!(color.equals(colorValido1) || color.equals(colorValido2))) {
+ System.out.println("No se permite ese color para " + getModelo());
+ } else {
+ super.setColor(color);
+ }
+ }
+
+ };
+ harley.setColor("Verde");
+ System.out.println(harley2);
}
}
diff --git a/src/ejemplos_uso/EjemploCollection.java b/src/ejemplos_uso/EjemploCollection.java
index f16600e..cb88ff2 100644
--- a/src/ejemplos_uso/EjemploCollection.java
+++ b/src/ejemplos_uso/EjemploCollection.java
@@ -3,13 +3,12 @@
import java.util.ArrayList;
import java.util.Collection;
-import vehiculos.Coche;
-import vehiculos.Moto;
-import vehiculos.Vehiculo;
+import vehiculos.*;
public class EjemploCollection {
public static void main(String[] args) {
+
String matricula = "1234ABC";
Coche coche = new Coche("Ford Fiesta", "Rojo"); // ¿por que no usar variable Vehiculo?
coche.setMatricula(matricula);
@@ -26,10 +25,11 @@ public static void main(String[] args) {
vehiculos.remove(moto);
vehiculos.forEach(System.out::println);
- Coche aux = coche;
-
coche = new Coche("Ford Fiesta", "Blanco");
coche.setMatricula(matricula);
+
+ Coche aux = coche;
+
System.out.println(coche.equals(aux));
System.out.println("\nAñado nuevo coche");
vehiculos.add(coche);
diff --git a/src/ejemplos_uso/EjemploComparabale.java b/src/ejemplos_uso/EjemploComparabale.java
new file mode 100644
index 0000000..88c8692
--- /dev/null
+++ b/src/ejemplos_uso/EjemploComparabale.java
@@ -0,0 +1,26 @@
+package ejemplos_uso;
+
+import java.util.Arrays;
+import java.util.List;
+
+import vehiculos.*;
+
+public class EjemploComparabale {
+
+ public static void main(String[] args) {
+
+ List vehiculos = Arrays.asList(
+ new Coche("Gris", "Volvo"),
+ new Vehiculo("Triciclo", "Rosa"),
+ new Moto("Aprilla", "Azul")
+ );
+
+ vehiculos.forEach(System.out::println);
+ vehiculos.sort(null);
+
+ System.out.println("\nLista ordenada (por modelo):");
+ vehiculos.forEach(System.out::println);
+
+ }
+
+}
diff --git a/src/ejemplos_uso/EjemploInterface.java b/src/ejemplos_uso/EjemploInterface.java
index d25ca75..232062b 100644
--- a/src/ejemplos_uso/EjemploInterface.java
+++ b/src/ejemplos_uso/EjemploInterface.java
@@ -2,16 +2,15 @@
import vehiculos.Arrancable;
import vehiculos.Coche;
-import vehiculos.Moto;
import vehiculos.Vehiculo;
import vehiculos.VehiculoConRuedas;
public class EjemploInterface {
public static void main(String[] args) {
-
+
Object ordenador = new Arrancable() {
-
+
@Override
public void arrancar() {
System.out.println("Encendido");
@@ -21,32 +20,34 @@ public void arrancar() {
Coche coche = new Coche();
Arrancable a = coche;
Vehiculo v = coche;
-
+
Arrancable persona = new Arrancable() {
-
+
@Override
public void arrancar() {
System.out.println("Me tomo un café");
}
};
-
+
Arrancable vcr = new VehiculoConRuedas() {
-
+
@Override
public int getNumeroDeRuedas() {
// TODO Auto-generated method stub
return 0;
}
};
-
- Arrancable[] arrancables = { (Arrancable)ordenador, coche, persona, new Coche(), vcr };
+
+ vcr.arrancar();
+
+ Arrancable[] arrancables = { (Arrancable) ordenador, coche, persona, new Coche(), vcr };
arrancarTodos(arrancables);
-
+
System.out.println(coche.distanciaRecorrida(3.5f));
-
+
Movible tortuga = new Movible() {
-
+
@Override
public float getVelocidad() {
return 0.2f;
@@ -59,6 +60,6 @@ private static void arrancarTodos(Arrancable[] arrancables) {
for (Arrancable arrancable : arrancables) {
arrancable.arrancar();
}
-
+
}
}
diff --git a/src/ejemplos_uso/EjemploOrdenacion.java b/src/ejemplos_uso/EjemploOrdenacion.java
index e15b57f..9da1a9b 100644
--- a/src/ejemplos_uso/EjemploOrdenacion.java
+++ b/src/ejemplos_uso/EjemploOrdenacion.java
@@ -1,41 +1,45 @@
package ejemplos_uso;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import java.util.stream.Collectors;
import vehiculos.Coche;
import vehiculos.Moto;
-import vehiculos.Motor;
import vehiculos.Vehiculo;
public class EjemploOrdenacion {
public static void main(String[] args) {
+
List listaStrings = Arrays.asList("a", "c", "b", "ab");
Collection strings = listaStrings;
System.out.println(strings);
-
+
listaStrings.sort(null);
- // strings.sort() // Error
-// ((List)strings).sort(null);
+ // strings.sort(); da error porque strings es del tipo collection, y no permite
+ // ordenar
+ System.out.println(listaStrings);
listaStrings.sort(Comparator.reverseOrder());
+ System.out.println(listaStrings);
+
+ ((List) strings).sort(null); // casteo
+ Collections.sort(listaStrings); // clase Collections
+ System.out.println(listaStrings);
+
Collection listaOrdenada = ordenar(strings);
-
+
System.out.println(strings);
System.out.println(listaOrdenada);
-
+
List vehiculos = new ArrayList<>();
vehiculos.add(new Coche("B", "Rojo"));
vehiculos.add(new Coche("C", "Blanco"));
vehiculos.add(new Coche("A", "Verde"));
-
+
Comparator comparador = new Comparator() {
@Override
@@ -43,30 +47,27 @@ public int compare(Vehiculo v1, Vehiculo v2) {
return v1.getColor().compareTo(v2.getColor());
}
};
-
+
// En lambda es:
// comparador = (v1, v2) -> v1.getColor().compareTo(v2.getColor());
-
+
System.out.println(vehiculos);
vehiculos.sort(null);
System.out.println(vehiculos);
-
- vehiculos = Arrays.asList(
- new Coche("Volvo", "Gris"),
- new Vehiculo("Tricico", "Rosa"),
- new Moto("Aprilla", "Azul")
- );
+
+ vehiculos = Arrays.asList(new Coche("Volvo", "Gris"), new Vehiculo("Tricico", "Rosa"),
+ new Moto("Aprilla", "Azul"));
vehiculos.forEach(System.out::println);
- vehiculos.sort(null);//Vehiculo.COMPARADOR_LONGITUD_MODELO);
+ vehiculos.sort(null);// Vehiculo.COMPARADOR_LONGITUD_MODELO);
System.out.println("\nLista ordenada (por modelo):");
vehiculos.forEach(System.out::println);
-
+
// Coche c = new Coche(null, "B", 4, new Motor("C", 90.4f));
// System.out.println(c);
// System.out.println(c.getMotor());
-
+
// try {
// Method method = c.getClass().getDeclaredMethod("getModelo");
// System.out.println(method.invoke(c));
diff --git a/src/ejemplos_uso/EjemploPresupuesto.java b/src/ejemplos_uso/EjemploPresupuesto.java
index a3c483f..aeb9851 100644
--- a/src/ejemplos_uso/EjemploPresupuesto.java
+++ b/src/ejemplos_uso/EjemploPresupuesto.java
@@ -1,8 +1,7 @@
package ejemplos_uso;
+import java.time.LocalDate;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
import java.util.List;
import com.tallerpepe.Presupuesto;
@@ -13,34 +12,34 @@
public class EjemploPresupuesto {
public static void main(String[] args) {
+
Repuesto rueda = new Repuesto("Rueda", 100f);
Repuesto valvula = new Repuesto("Valvula", 5f);
-
- List reparaciones = Arrays.asList(
- new Reparacion(.5f, rueda, valvula), // Cambio rueda
+
+ List reparaciones = Arrays.asList(new Reparacion(.5f, rueda, valvula), // Cambio rueda
new Reparacion(.4f) // Paralelo
- );
+ );
// Pongo en garantia la primera reparacion
reparaciones.get(0).setGarantia(true);
-
+
Reparable reparable = new Reparable() {
-
+
@Override
- public Collection getReparacionesPendientes() {
+ public List getReparacionesPendientes() {
return reparaciones;
}
-
+
@Override
- public Date getFechaEntrada() {
- return new Date();
+ public LocalDate getFechaEntrada() {
+ return LocalDate.now();
}
-
+
@Override
public String toString() {
return "Mi Reparable (pendiente: " + getReparacionesPendientes().size() + ")";
}
};
-
+
Presupuesto presupuesto = new Presupuesto(reparable);
System.out.println(presupuesto.calcularTextoPresupuesto(20f));
}
diff --git a/src/ejemplos_uso/Igualdad.java b/src/ejemplos_uso/Igualdad.java
index 9174cc2..1cd5ae8 100644
--- a/src/ejemplos_uso/Igualdad.java
+++ b/src/ejemplos_uso/Igualdad.java
@@ -21,9 +21,9 @@ public static void main(String[] args) {
coche2.setMatricula("5555 CCC");
System.out.println("Los coches siguen siendo iguales: " + coche1.equals(coche2));
- //Identidad
+ // Identidad
System.out.println("coche1 y coche2 son el mismo: " + (coche1 == coche2));
System.out.println("coche1 y coche3 son el mismo: " + (coche3 == coche1));
- }
+ }
}
diff --git a/src/ejemplos_uso/UsandoLibreria.java b/src/ejemplos_uso/UsandoLibreria.java
index 7bcc23d..a64f8ad 100644
--- a/src/ejemplos_uso/UsandoLibreria.java
+++ b/src/ejemplos_uso/UsandoLibreria.java
@@ -2,10 +2,7 @@
import java.util.Arrays;
import java.util.Collection;
-
import com.github.commerce.Merchantable;
-import com.github.commerce.Product;
-
import vehiculos.CocheProducto;
import vehiculos.Comerciable;
import vehiculos.ProductExterno;
@@ -13,36 +10,34 @@
public class UsandoLibreria {
public static void main(String[] args) {
+
ProductExterno productoExterno = new ProductExterno("CocheRaro", 25000f);
CocheProducto cocheProducto = new CocheProducto("Seat", "Blanco", 16000);
System.out.println("Usando Comerciable");
- Collection productos = Arrays.asList(productoExterno, cocheProducto,
- new Comerciable() {
-
- @Override
- public float getPrecio() {
- return 1000000;
- }
-
- @Override
- public String getDescripcion() {
- return "Sin descrpicion";
- }
- });
+
+ Collection productos = Arrays.asList(productoExterno, cocheProducto, new Comerciable() {
+
+ @Override
+ public float getPrecio() {
+ return 1000000;
+ }
+
+ @Override
+ public String getDescripcion() {
+ return "Sin descrpicion";
+ }
+ });
productos.forEach(System.out::println);
System.out.println(getValorTotal(productos));
-
+
// Collection coches = Arrays.asList(cocheProducto);
// System.out.println(getValorTotal(coches));
sell(cocheProducto);
-
+
System.out.println("\nUsando Merchantable");
- Collection merchantables = Arrays.asList(
- productoExterno,
- cocheProducto
- );
+ Collection merchantables = Arrays.asList(productoExterno, cocheProducto);
merchantables.forEach(System.out::println);
// System.out.println(merchantables.stream().mapToDouble(Merchantable::priceToDouble).sum());
System.out.println(getValorTotal2(merchantables));
@@ -56,7 +51,7 @@ private static float getValorTotal(Collection comerciables) {
}
return resultado;
}
-
+
private static float getValorTotal2(Collection merchantables) {
// return (float) comerciables.stream().mapToDouble(UsandoLibreria::toDouble).sum();
float resultado = 0;
@@ -66,9 +61,11 @@ private static float getValorTotal2(Collection merchantables) {
return resultado;
}
-// private static Double toDouble(Comerciable comerciable) {
-// return new Double(comerciable.getPrecio());
-// }
+ private static Double toDouble(Comerciable comerciable) {
+ return new Double(comerciable.getPrecio());
+ }
- public static boolean sell(Merchantable p) {return false;}
+ public static boolean sell(Merchantable p) {
+ return false;
+ }
}
diff --git a/src/vehiculos/Arrancable.java b/src/vehiculos/Arrancable.java
index c8991ed..de63e3d 100644
--- a/src/vehiculos/Arrancable.java
+++ b/src/vehiculos/Arrancable.java
@@ -1,10 +1,9 @@
package vehiculos;
public interface Arrancable {
-
+
default void arrancar() {
- System.out.println("Ha arrancado");
+ System.out.println("Configuración por defecto en Interfaz Arrancable");
}
-
-
+
}
diff --git a/src/vehiculos/Coche.java b/src/vehiculos/Coche.java
index c0fec61..7691847 100644
--- a/src/vehiculos/Coche.java
+++ b/src/vehiculos/Coche.java
@@ -1,7 +1,6 @@
package vehiculos;
import comun.Identificable;
-import ejemplos_uso.IdentificableArrancable;
public class Coche extends VehiculoConRuedas implements Identificable {
@@ -14,41 +13,41 @@ public class Coche extends VehiculoConRuedas implements Identificable {
public Long getId() {
return id;
}
-
+
public String getMatricula() {
return matricula;
}
-
+
public void setMatricula(String matricula) {
this.matricula = matricula;
}
-
+
public Motor getMotor() {
return motor;
}
public Coche() {
this("Blanco");
-// numeroDeRuedas = 4;
+ // numeroDeRuedas = 4;
}
public Coche(String color) {
-// this();
-// numeroDeRuedas = 4;
-// setColor(color); // como ya tengo el setter lo utilizo
+ // this();
+ // numeroDeRuedas = 4;
+ // setColor(color); // como ya tengo el setter lo utilizo
this(null, color);
}
public Coche(String modelo, String color) {
-// super(modelo, color);
-// numeroDeRuedas = 4;
+ // super(modelo, color);
+ // numeroDeRuedas = 4;
this(modelo, color, 4);
}
public Coche(String modelo, String color, int ruedas) {
this(modelo, color, ruedas, null);
}
-
+
public Coche(String modelo, String color, int ruedas, Motor motor) {
super(modelo, color);
numeroDeRuedas = ruedas;
@@ -56,22 +55,6 @@ public Coche(String modelo, String color, int ruedas, Motor motor) {
this.motor = motor;
}
-// public Coche color(String color) {
-// setColor(color);
-// return this;
-// }
-//
-// public Coche modelo(String modelo) {
-// this.modelo = modelo;
-// return this;
-// }
-
-// public static Coche crearConModelo(String modelo) {
-// Coche coche = new Coche();
-// coche.modelo = modelo;
-// return coche;
-// }
-
@Override
public String toString() {
return "Placa " + getMatricula() + " - " + super.toString() + " | " + getMotor();
@@ -109,13 +92,14 @@ public boolean equals(Object obj) {
}
@Override
- public int getNumeroDeRuedas() {
- return numeroDeRuedas;
+ public void arrancar() {
+ System.out.println("Coche arrancando");
+
}
-
+
@Override
- public void arrancar() {
- System.out.println("Coche arrancado");
+ public int getNumeroDeRuedas() {
+ return numeroDeRuedas;
}
}
diff --git a/src/vehiculos/CocheProducto.java b/src/vehiculos/CocheProducto.java
index 295cc2c..9ba2035 100644
--- a/src/vehiculos/CocheProducto.java
+++ b/src/vehiculos/CocheProducto.java
@@ -31,8 +31,8 @@ public float getPrice() {
return getPrecio();
}
- @Override
public String toString() {
return getString();
}
+
}
diff --git a/src/vehiculos/Comerciable.java b/src/vehiculos/Comerciable.java
index ec47f9d..2388fc6 100644
--- a/src/vehiculos/Comerciable.java
+++ b/src/vehiculos/Comerciable.java
@@ -1,6 +1,8 @@
package vehiculos;
public interface Comerciable {
- String getDescripcion();
- float getPrecio();
+
+ String getDescripcion();
+
+ float getPrecio();
}
diff --git a/src/vehiculos/Moto.java b/src/vehiculos/Moto.java
index b58e166..01503e9 100644
--- a/src/vehiculos/Moto.java
+++ b/src/vehiculos/Moto.java
@@ -15,5 +15,4 @@ public int getNumeroDeRuedas() {
public String toString() {
return "Moto: " + super.toString();
}
-
}
diff --git a/src/vehiculos/Motor.java b/src/vehiculos/Motor.java
index 59a111d..b1cfd24 100644
--- a/src/vehiculos/Motor.java
+++ b/src/vehiculos/Motor.java
@@ -4,11 +4,11 @@ public class Motor {
String modelo;
float potencia; // CV
-
+
public String getModelo() {
return modelo;
}
-
+
public float getPotencia() {
return potencia;
}
@@ -21,8 +21,7 @@ public Motor(String modelo, float potencia) {
@Override
public String toString() {
- return "Motor [modelo=" + modelo + ", potencia=" + potencia + "]";
+ return "Motor: " + getModelo() + ", Potencia: " + getPotencia();
}
-
-
+
}
diff --git a/src/vehiculos/ProductExterno.java b/src/vehiculos/ProductExterno.java
index 60fcede..9d31c77 100644
--- a/src/vehiculos/ProductExterno.java
+++ b/src/vehiculos/ProductExterno.java
@@ -18,4 +18,8 @@ public float getPrecio() {
return getPrice();
}
+ public String toString() {
+ return getString();
+ }
+
}
diff --git a/src/vehiculos/Vehiculo.java b/src/vehiculos/Vehiculo.java
index 7bac65f..9026abd 100644
--- a/src/vehiculos/Vehiculo.java
+++ b/src/vehiculos/Vehiculo.java
@@ -1,12 +1,18 @@
package vehiculos;
+import java.time.LocalDate;
+import java.util.ArrayList;
import java.util.Comparator;
+import java.util.List;
+
+import com.tallerpepe.Reparable;
+import com.tallerpepe.Reparacion;
import ejemplos_uso.Acelerable;
-import ejemplos_uso.Movible;
-public class Vehiculo implements Acelerable, Comparable {
+public class Vehiculo implements Acelerable, Reparable, Comparable {
+ private List reparacionesPendientes = new ArrayList<>();
private static final String MODELO_NO_DISPONIBLE = "N/A";
public static final Comparator COMPARADOR_LONGITUD_MODELO = new Comparator() {
@Override
@@ -14,10 +20,16 @@ public int compare(Vehiculo arg0, Vehiculo arg1) {
return arg0.getModelo().length() - arg1.getModelo().length();
}
};
+
+ private LocalDate fechaEntrada;
private String modelo;
private String color;
protected float velocidad = 0;
-
+
+ public void setFechaEntrada(LocalDate fechaEntrada) {
+ this.fechaEntrada = fechaEntrada;
+ }
+
public String getColor() {
return color;
}
@@ -27,7 +39,7 @@ public void setColor(String color) {
}
protected String getModelo() {
- return modelo == null ? MODELO_NO_DISPONIBLE : modelo + " (" + getColor() + ")";
+ return modelo == null ? MODELO_NO_DISPONIBLE : modelo;
}
public Vehiculo() {
@@ -40,12 +52,12 @@ public Vehiculo(String modelo, String color) {
@Override
public String toString() {
- return modelo + " (" + getColor() + ")";
+ return (getModelo() == null ? MODELO_NO_DISPONIBLE : getModelo()) + " (" + getColor() + ")";
}
@Override
public float getVelocidad() {
- return velocidad ;
+ return velocidad;
}
@Override
@@ -56,15 +68,43 @@ public float getAceleracion() {
@Override
public int compareTo(Vehiculo other) {
int resultado = COMPARADOR_LONGITUD_MODELO.compare(this, other);
- if(resultado == 0) {
+ if (resultado == 0) {
resultado = getColor().compareTo(other.getColor());
}
- if(resultado == 0) {
-
+ if (resultado == 0) {
+
}
-
+
return resultado;
- //return getModelo().compareTo(other.getModelo());
}
+ @Override
+ public LocalDate getFechaEntrada() {
+ return fechaEntrada;
+ }
+
+ @Override
+ public List getReparacionesPendientes() {
+ return reparacionesPendientes;
+ }
+
+// public int compareTo(Vehiculo vehiculo) {
+// // para ordenar por el tamaño de los carateres del modelo
+// return getModelo().length() - (vehiculo.getModelo().length());
+// }
+
+// public int compareTo(Vehiculo vehiculo) {
+// // para ordenar por el tamaño de los carateres del modelo
+// int resultado = getModelo().length() - (vehiculo.getModelo().length());
+// if (resultado==0) {
+// resultado = getColor().compareTo(vehiculo.getColor());
+// }
+// /* en el caso de que el tamaño de caracteres del modelo y los colores sean iguales, puedo
+// * seguir añadiendo más parámetros */
+// if (resultado == 0) {
+// resultado = getColor().length() - (vehiculo.getColor().length());
+// }
+// return resultado;
+// }
+
}
\ No newline at end of file