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