domingo, 16 de febrero de 2014

Práctica Coche y Coche Importado de Herencia

Cread la clase Coche cuyas instancias mantienen el nombre del coche y su precio (antes de impuestos).
El precio total de un coche se calcula aplicando un IVA al precio marcado.
Este IVA puede variar (por defecto el IVA es del 16%), pero será siempre el mismo para todos los coches.
Proporcionad métodos para cambiar el IVA, calcular el precio total y mostrar el coche como cadena de caracteres con el formato "nombre -> precio".

Un coche importado es un coche para el que además del IVA aplicamos un impuesto de homologación. El impuesto de homologación es específico de cada vehículo, y será dado en el momento de su creación. El precio total de un coche importado se calcula como el de cualquier coche pero ahora hay que sumar este nuevo impuesto. Cread la clase CocheImportado para mantener información de coches importados. El impuesto se guardará como total, mientras que el IVA se guardará como porcentaje(por ejemplo, el IVA de 16% se guardará como 0.16).

Aquí teneis la clase de testeo.
public class EjCoches {
 static public void main(String[] args) {
  Coche[] cs = { new Coche(" Seat Panda", 15000),
  new CocheImportado("Ferrari T-R", 65000, 8000),
  new Coche("Seat Toledo", 21000),
  new CocheImportado("Jaguar XK", 41000, 6000),
  new CocheImportado("Porche GT3", 44000, 7000) };
  for(Coche c : cs) {
   System.out.println(c);
  }
  // Cambiamos el iva a todos los coches
  Coche.setPiva(0.18);
  System.out.println("Con IVA de 18%");
  for(Coche c : cs) {
   System.out.println(c);
  }
 }
}

Y aquí los resultados del test:



Seat Panda -> 17400.0
Ferrari T-R -> 83400.0
Seat Toledo -> 24360.0
Jaguar XK -> 53560.0
Porche GT3 -> 58040.0
Con IVA de 18%
 Seat Panda -> 17700.0
Ferrari T-R -> 84700.0
Seat Toledo -> 24780.0
Jaguar XK -> 54380.0
Porche GT3 -> 58920.0

Ahora os dejo el código de la clase Coche:



public class Coche {
 private String nombre;
 private double precio;
 public static double PIVA = 0.16;
 
 public Coche(String n, double p) {
  nombre = n;
  precio = p;
 }
 
 public double precioTotal() {
  
  return precio*(1+PIVA);
 }
 
 public static void setPiva( double i) {
  PIVA = i;
 }
 
 public String Nombre() {
  return nombre;
 }
 
 public String toString() {
  return this.Nombre() + " -> " + this.precioTotal();
 }
}
Y el de la clase CocheImportado:

public class CocheImportado  extends Coche{
 private double homologacion;
 
 public CocheImportado(String nombre, double p, double h) {
  super(nombre, p);
  homologacion = h;
 }
 
 public double precioTotal() {
  
  return super.precioTotal()+homologacion;
 }
}

Lo único que hay que recalcar es que para la clase Coche Importado hemos usado un "super(nombre, p);" en el constructor. Ésto lo que dice es algo como "CocheImportado es un coche con las caracterñisticas nombre y p" pero que además tiene otro valor más. También hemos usado super en el método precioTotal. De esa forma calculamos el precioTotal del coche tal y como lo calcularía el otro método. De esta forma nos ahorramos bastante que escribir ^^ Saludos ;)

No hay comentarios:

Publicar un comentario