class Client{ /* * Clase padre de la cual heredaran las clases Premium, Oro y Plata * */ private String nombre; private String ruc; private int numVisita; private Producto[] productosCompradosNow; private Servicio[] serviciosCompradosNow; public String getRuc() { return ruc; } public void setRuc(String ruc) { this.ruc = ruc; } public Client(String nombre, String ruc, Producto[] productosCompradosNow, Servicio[] serviciosCompradosNow) { this.nombre = nombre; this.ruc = ruc; this.productosCompradosNow = productosCompradosNow; this.serviciosCompradosNow = serviciosCompradosNow; this.numVisita = (int)(Math.random()*125); } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getNumVisita() { return numVisita; } public void setNumVisita(int numVisita) { this.numVisita = numVisita; } public void addVisita(){ numVisita++; } public Producto[] getProductosCompradosNow() { return productosCompradosNow; } public Servicio[] getServiciosCompradosNow() { return serviciosCompradosNow; } public void setProductosCompradosNow(Producto[] productosCompradosNow) { this.productosCompradosNow = productosCompradosNow; } public void setServiciosCompradosNow(Servicio[] serviciosCompradosNow) { this.serviciosCompradosNow = serviciosCompradosNow; } public float calcularTotalFactura(){ int descuento; if(this instanceof PremiumClient){ descuento = 30; }else if(this instanceof OroClient){ descuento = 20; }else if(this instanceof PlataClient){ descuento = 10; }else{ descuento = 0; } float montoTotal = 0; for(Producto item: productosCompradosNow){ montoTotal += item.getPrecio(); } for(Servicio item: serviciosCompradosNow){ montoTotal += item.getCosto(); } return montoTotal - montoTotal*descuento/100; } } class PremiumClient extends Client{ private String[] servicios; private String[] beneficios; private String[] premios; public PremiumClient(String nombre, String ruc, Producto[] comprapro, Servicio[] compraserv, String[] servicios, String[] beneficios, String[] premios) { super(nombre, ruc, comprapro, compraserv); this.servicios =servicios; this.beneficios = beneficios; this.premios = premios; } public String[] getServicios() { return servicios; } public void setServicios(String[] servicios) { this.servicios = servicios; } public String[] getBeneficios() { return beneficios; } public void setBeneficios(String[] beneficios) { this.beneficios = beneficios; } public String[] getPremios() { return premios; } public void setPremios(String[] premios) { this.premios = premios; } } class OroClient extends Client{ private String[] beneficios; private String[] servicios; public OroClient(String nombre, String ruc, Producto[] comprapro, Servicio[] compraserv, String[] servicios, String[] beneficios){ super(nombre, ruc, comprapro, compraserv); this.beneficios = beneficios; this.servicios = servicios; } public String[] getBeneficios() { return beneficios; } public void setBeneficios(String[] beneficios) { this.beneficios = beneficios; } public String[] getServicios() { return servicios; } public void setServicios(String[] servicios) { this.servicios = servicios; } } class PlataClient extends Client{ private String[] servicios; public PlataClient(String nombre, String ruc, Producto[] comprapro, Servicio[] compraserv, String[] servicios) { super(nombre, ruc, comprapro, compraserv); this.servicios = servicios; } public String[] getServicios() { return servicios; } public void setServicios(String[] servicios) { this.servicios = servicios; } } class Producto{ private float precio; private String descripcion; public float getPrecio() { return precio; } public void setPrecio(float precio) { this.precio = precio; } public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } public Producto(float precio, String descripcion) { this.precio = precio; this.descripcion = descripcion; } } class Servicio{ private float costo; private String descripcion; public Servicio(float costo, String descripcion) { this.costo = costo; this.descripcion = descripcion; } public float getCosto() { return costo; } public void setCosto(float costo) { this.costo = costo; } public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } } public class SalonBellezaConHerencia { public static void main(String[] args){ Producto producto1 = new Producto(15.4f, "Producto"); Servicio servicio1 = new Servicio(20.4f, "Servicio"); Producto[] productos = {producto1}; Servicio[] serviciosComprea = {servicio1}; Client client1 = new Client("Jose", "594", productos, serviciosComprea); String[] servicios = {"pedicura", "manicura"}; String[] beneficios = {"Descuento 10%"}; String[] premios = {"Vale de compras", "Manicura de Regalo"}; PremiumClient client2 = new PremiumClient("Antonio", "564", productos, serviciosComprea, servicios, beneficios, premios); OroClient client3 = new OroClient("Juan", "548", productos, serviciosComprea, servicios, beneficios); PlataClient client4 = new PlataClient("Carlos", "891", productos, serviciosComprea, servicios); System.out.println("El cliente "+client1.getNombre()+" tiene que pagar "+client1.calcularTotalFactura()); System.out.println("El cliente "+client2.getNombre()+" tiene que pagar "+client2.calcularTotalFactura()); System.out.println("El cliente "+client3.getNombre()+" tiene que pagar "+client3.calcularTotalFactura()); System.out.println("El cliente "+client4.getNombre()+" tiene que pagar "+client4.calcularTotalFactura()); } }