Cálculo de Precios, Descuentos y Gestión de Productos en Java: Ejemplo Práctico

Informática4,67 KB

Cálculo de Totales y Descuentos en Java

A continuación se presenta un conjunto de métodos en Java para calcular el total de una compra, aplicar descuentos según el horario y la marca del producto, y gestionar una colección de productos.

Método calcularTotal

El método calcularTotal determina el precio final de una compra. Primero valida el stock disponible, luego calcula el descuento aplicable y, por último, añade el IVA del 19%.

public int calcularTotal(int cantidad, String horario) {
int total = 0, descuentos = 0;
if (super.validar(cantidad)) {
descuentos = calcularDescuento(horario);
total = (super.precioBase - descuentos) * cantidad;
total = (int) (total + total * 0.19);
}
return total;
}

Método calcularDescuento (producto de la marca Zoni)

Este método aplica un descuento del 11% únicamente cuando se cumplen tres condiciones: el horario es nocturno, la marca es Zoni y la carga es de tipo A.

public int calcularDescuento(String horario) {
int descuento = 0;
if (horario.equals("nocturno") && super.marca.equals("Zoni") && this.carga == 'A') {
descuento = (int) (super.precioBase * 0.11);
}
return descuento;
}

Método validar

El método validar comprueba que la cantidad solicitada no supere el stock disponible. En caso contrario, muestra un mensaje de advertencia.

public boolean validar(int cantidad) {
boolean valida = false;
if (cantidad <= this.stock) {
valida = true;
} else {
System.out.println("NO HAY STOCK DEL PRODUCTO");
}
return valida;
}

Interfaz ProductoDescontable

La interfaz ProductoDescontable define una constante con el porcentaje de descuento del 13% y declara el método calcularDescuento, que las clases que la implementen deberán desarrollar.

public interface ProductoDescontable {
// descuento 13%
double porcentajeDescuento = 0.13;

// método calcular descuento
public int calcularDescuento(String horario);
}

Implementación del método para la marca Acme:

public int calcularDescuento(String horario) {
int descuento = 0;
if (horario.equals("nocturno") && super.marca.equals("Acme") && this.cantidadPies == 15) {
descuento = (int) (super.precioBase * porcentajeDescuento);
}
return descuento;
}

Gestión de la colección de productos

Los siguientes métodos estáticos permiten administrar la colección productos: agregar, buscar, mostrar y eliminar elementos.

Agregar producto

Añade un nuevo producto únicamente si su código no existe previamente en la colección.

public static void agregarProducto(Producto nuevoProducto) {
if (buscarProducto(nuevoProducto.getCodigo()) == false) {
productos.add(nuevoProducto);
}
}

Buscar producto por código

Recorre la colección y devuelve true si encuentra un producto con el código indicado.

public static boolean buscarProducto(String codigo) {
boolean valida = false;

for (Producto temporalProducto : productos) {
if (temporalProducto.getCodigo().equals(codigo)) {
valida = true;
break;
}
}
return valida;
}

Mostrar productos

Imprime los atributos de cada producto de la colección, separados por una línea decorativa.

public static void mostrarProductos() {
for (Producto temporalProducto : productos) {
temporalProducto.imprimir();
System.out.println("---------------------");
}
}

Eliminar producto

Elimina todos los productos cuyo código coincida con el indicado. Se decrementa el índice i tras cada eliminación para no omitir elementos consecutivos.

public static void eliminarProducto(String codigo) {
for (int i = 0; i < productos.size(); i++) {
if (productos.get(i).getCodigo().equals(codigo)) {
productos.remove(i);
i = i - 1;
}
}
}

Conclusiones

Este conjunto de métodos ilustra conceptos fundamentales de programación orientada a objetos en Java: herencia, interfaces, validación de datos, uso de colecciones y métodos estáticos. Su correcta comprensión es esencial para desarrollar sistemas de gestión de inventario y facturación.

Descargar

PDF Word HTML