En las compras que realiza por internet, identifique 4 clases con 3 atributos y 3 métodos relevantes, además de sus respectivos constructores getter/setters. Con su UML
A continuación, te presento una posible implementación de la clase `Compra` con 4 subclases (`Electrónica`, `Ropa`, `Electrodoméstico`, `Juguete`) cada una con 3 atributos y 3 métodos relevantes, además de sus respectivos constructores getter/setters en Java. **UML de la clase Compra** ```java // Clase Compra class Compra { private int idCompra; private String fechaCompra; private double montoTotal; // Constructor public Compra(int idCompra, String fechaCompra, double montoTotal) { this.idCompra = idCompra; this.fechaCompra = fechaCompra; this.montoTotal = montoTotal; } // Getter y setter public int getIdCompra() { return idCompra; } public void setIdCompra(int idCompra) { this.idCompra = idCompra; } public String getFechaCompra() { return fechaCompra; } public void setFechaCompra(String fechaCompra) { this.fechaCompra = fechaCompra; } public double getMontoTotal() { return montoTotal; } public void setMontoTotal(double montoTotal) { this.montoTotal = montoTotal; } // Método para agregar un producto a la compra public void agregarProducto(Producto producto) { // Implementación del método } // Método para calcular el monto total de la compra public double calcularMontoTotal() { return montoTotal; } // Método para imprimir la información de la compra public void imprimirInformacion() { System.out.println("Id de la compra: " + idCompra); System.out.println("Fecha de la compra: " + fechaCompra); System.out.println("Monto total: " + montoTotal); } } // Clase Producto class Producto { private String nombre; private double precio; private int cantidad; // Constructor public Producto(String nombre, double precio, int cantidad) { this.nombre = nombre; this.precio = precio; this.cantidad = cantidad; } // Getter y setter public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public double getPrecio() { return precio; } public void setPrecio(double precio) { this.precio = precio; } public int getCantidad() { return cantidad; } public void setCantidad(int cantidad) { this.cantidad = cantidad; } } // Clase Electrónica class Electrónica extends Compra { private String marca; private String modelo; // Constructor public Electrónica(int idCompra, String fechaCompra, double montoTotal, String marca, String modelo) { super(idCompra, fechaCompra, montoTotal); this.marca = marca; this.modelo = modelo; } // Getter y setter public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } public String getModelo() { return modelo; } public void setModelo(String modelo) { this.modelo = modelo; } // Método para calcular el monto total de la compra de electrónica public double calcularMontoTotal() { return super.montoTotal + (getPrecio() * getCantidad()); } // Método para imprimir la información de la compra de electrónica public void imprimirInformacion() { super.imprimirInformacion(); System.out.println("Marca: " + marca); System.out.println("Modelo: " + modelo); } } // Clase Ropa class Ropa extends Compra { private String talla; private String color; // Constructor public Ropa(int idCompra, String fechaCompra, double montoTotal, String talla, String color) { super(idCompra, fechaCompra, montoTotal); this.talla = talla; this.color = color; } // Getter y setter public String getTalla() { return talla; } public void setTalla(String talla) { this.talla = talla; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } // Método para calcular el monto total de la compra de ropa public double calcularMontoTotal() { return super.montoTotal + (getPrecio() * getCantidad()); } // Método para imprimir la información de la compra de ropa public void imprimirInformacion() { super.imprimirInformacion(); System.out.println("Talla: " + talla); System.out.println("Color: " + color); } } // Clase Electrodoméstico class Electrodoméstico extends Compra { private String marca; private String modelo; // Constructor public Electrodoméstico(int idCompra, String fechaCompra, double montoTotal, String marca, String modelo) { super(idCompra, fechaCompra, montoTotal); this.marca = marca; this.modelo = modelo; } // Getter y setter public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } public String getModelo() { return modelo; } public void setModelo(String modelo) { this.modelo = modelo; } // Método para calcular el monto total de la compra de electrodoméstico public double calcularMontoTotal() { return super.montoTotal + (getPrecio() * getCantidad()); } // Método para imprimir la información de la compra de electrodoméstico public void imprimirInformacion() { super.imprimirInformacion(); System.out.println("Marca: " + marca); System.out.println("Modelo: " + modelo); } } // Clase Juguete class Juguete extends Compra { private String nombre; private String edadRecomendada; // Constructor public Juguete(int idCompra, String fechaCompra, double montoTotal, String nombre, String edadRecomendada) { super(idCompra, fechaCompra, montoTotal); this.nombre = nombre; this.edadRecomendada = edadRecomendada; } // Getter y setter public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getEdadRecomendada() { return edadRecomendada; } public void setEdadRecomendada(String edadRecomendada) { this.edadRecomendada = edadRecomendada; } // Método para calcular el monto total de la compra de juguete public double calcularMontoTotal() { return super.montoTotal + (getPrecio() * getCantidad()); } // Método para imprimir la información de la compra de juguete public void imprimirInformacion() { super.imprimirInformacion(); System.out.println("Nombre: " + nombre); System.out.println("Edad recomendada: " + edadRecomendada); } } ``` En este ejemplo, se definen 4 subclases (`Electrónica`, `Ropa`, `Electrodoméstico`, `Juguete`) que heredan de la clase `Compra`. Cada subclase tiene 3 atributos y 3 métodos relevantes, además de sus respectivos constructores getter/setters. La clase `Compra` tiene un constructor que recibe los atributos `idCompra`, `fechaCompra` y `montoTotal`. También tiene métodos para agregar un producto a la compra, calcular el monto total de la compra y imprimir la información de la compra. Las subclases `Electrónica`, `Ropa`, `Electrodoméstico` y `Juguete` tienen constructores que reciben los atributos específicos de cada clase, además de los atributos heredados de la clase `Compra`. También tienen métodos para calcular el monto total de la compra y imprimir la información de la compra. Es importante destacar que en este ejemplo se utiliza la herencia para crear subclases que heredan los atributos y métodos de la clase `Compra`. Esto permite reutilizar código y crear clases más específicas y especializadas.