Sesion 09 3 PDS

Código Java para el Patrón Command ///////////////////Elaborar el diagrama de clases///////////////////////// import jav

Views 65 Downloads 3 File size 108KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Código Java para el Patrón Command ///////////////////Elaborar el diagrama de clases///////////////////////// import java.util.*; public class Catalogo { protected List vehiculosStock = new ArrayList(); protected List solicitudes = new ArrayList(); public void ejecutaSolicitudRebaja(SolicitudRebaja solicitud) { solicitudes.add(0, solicitud); solicitud.rebaja(vehiculosStock); } public void anulaSolicitudRebaja(int orden) { solicitudes.get(orden).anula(); } public void restableceSolicitudRebaja(int orden) { solicitudes.get(orden).restablece(); } public void agrega(Vehiculo vehiculo) { vehiculosStock.add(vehiculo); } public void visualiza() { for (Vehiculo vehiculo: vehiculosStock) vehiculo.visualiza(); } }

//////////////////////////////////////////// import java.util.*; public class SolicitudRebaja { protected List vehiculosEnStock = new ArrayList(); protected long hoy; protected long tiempoEnStock;

protected double tasaDescuento; public SolicitudRebaja(long hoy, long tiempoEnStock, double tasaDescuento) { this.hoy = hoy; this.tiempoEnStock = tiempoEnStock; this.tasaDescuento = tasaDescuento; } public void rebaja(List vehiculos) { vehiculosEnStock.clear(); for (Vehiculo vehiculo: vehiculos) if (vehiculo.getTiempoEnStock(hoy) >= tiempoEnStock) vehiculosEnStock.add(vehiculo); for (Vehiculo vehiculo: vehiculosEnStock) vehiculo.modificaPrecio(1.0 - tasaDescuento); } public void anula() { for (Vehiculo vehiculo: vehiculosEnStock) vehiculo.modificaPrecio(1.0 / (1.0 tasaDescuento)); } public void restablece() { for (Vehiculo vehiculo: vehiculosEnStock) vehiculo.modificaPrecio(1.0 - tasaDescuento); } }

//////////////////////////////////////////// public class Vehiculo { protected String nombre; protected long fechaEntradaStock; protected double precioVenta; public Vehiculo(String nombre, long fechaEntradaStock, double precioVenta) { this.nombre = nombre; this.fechaEntradaStock = fechaEntradaStock;

this.precioVenta = precioVenta; } public long getTiempoEnStock(long hoy) { return hoy - fechaEntradaStock; } public void modificaPrecio(double coeficiente) { this.precioVenta = 0.01 * Math.round(coeficiente * this.precioVenta * 100); } public void visualiza() { System.out.println(nombre + " precio: " + precioVenta + " fecha entrada stock " + fechaEntradaStock); } }

//////////////////////////////////////////// public class Usuario { public static void main(String[] args) { Vehiculo vehiculo1 = new Vehiculo("Toyota Corola", 1, 12000.0); Vehiculo vehiculo2 = new Vehiculo("Toyota Yaris", 6, 15000.0); Vehiculo vehiculo3 = new Vehiculo("Nissan Xtrail", 2, 33000.0); Catalogo catalogo = new Catalogo(); catalogo.agrega(vehiculo1); catalogo.agrega(vehiculo2); catalogo.agrega(vehiculo3); System.out.println("Visualizacion inicial del catalogo"); catalogo.visualiza(); System.out.println(); SolicitudRebaja solicitudRebaja = new SolicitudRebaja (10, 5, 0.1); catalogo.ejecutaSolicitudRebaja(solicitudRebaja); System.out.println("Visualizacion del catalogo tras " + "ejecutar la primera solicitud"); catalogo.visualiza(); System.out.println(); SolicitudRebaja solicitudRebaja2 = new SolicitudRebaja (10, 5, 0.5); catalogo.ejecutaSolicitudRebaja(solicitudRebaja2);

System.out.println("Visualizacion del catalogo tras " + "ejecutar la segunda solicitud"); catalogo.visualiza(); System.out.println(); catalogo.anulaSolicitudRebaja(1); System.out.println("Visualizacion del catalogo tras " + "anular la primera solicitud"); catalogo.visualiza(); System.out.println(); catalogo.restableceSolicitudRebaja(1); System.out.println("Visualizacion del catalogo tras " + "restablecer la primera solicitud"); catalogo.visualiza(); System.out.println(); } }

//////////////salida/////////////////// Visualizacion inicial del catalogo Toyota Corola precio: 12000.0 fecha entrada stock 1 Toyota Yaris precio: 15000.0 fecha entrada stock 6 Nissan Xtrail precio: 33000.0 fecha entrada stock 2 Visualizacion del catalogo tras ejecutar la primera solicitud Toyota Corola precio: 10800.0 fecha entrada stock 1 Toyota Yaris precio: 15000.0 fecha entrada stock 6 Nissan Xtrail precio: 29700.0 fecha entrada stock 2 Visualizacion del catalogo tras ejecutar la segunda solicitud Toyota Corola precio: 5400.0 fecha entrada stock 1 Toyota Yaris precio: 15000.0 fecha entrada stock 6 Nissan Xtrail precio: 14850.0 fecha entrada stock 2 Visualizacion del catalogo tras anular la primera solicitud Toyota Corola precio: 6000.0 fecha entrada stock 1 Toyota Yaris precio: 15000.0 fecha entrada stock 6 Nissan Xtrail precio: 16500.0 fecha entrada stock 2 Visualizacion del catalogo tras restablecer la primera solicitud Toyota Corola precio: 5400.0 fecha entrada stock 1 Toyota Yaris precio: 15000.0 fecha entrada stock 6 Nissan Xtrail precio: 14850.0 fecha entrada stock 2

////////////////////////////////////////////