En este artículo, abordaremos la implementación de un sistema de gestión para una carnicería utilizando los principios de la Programación Orientada a Objetos (POO) en Java. Crearemos clases para representar los productos de la carnicería y los empleados, incluyendo características como encapsulamiento, constructores, getters y setters, y métodos específicos para la funcionalidad del sistema.
Objetivos del Ejercicio
- Crear clases básicas
Producto
yEmpleado
con atributos específicos y métodos de acceso. - Implementar la clase
Carniceria
para gestionar los productos y empleados. - Proporcionar métodos para añadir y eliminar productos y empleados, calcular inventarios, y gestionar salarios.
- Demostrar el uso de estas clases en un programa principal.
Clases Básicas
Clase Producto
La clase Producto
representará los productos de la carnicería, con atributos como identificador, nombre, tipo de carne, precio por kilogramo, y cantidad en stock.
Implementación:
import java.util.Random;
public class Producto {
private String identificador;
private String nombre;
private String tipoCarne;
private double precioPorKg;
private double cantidadStock;
public Producto() {
Random rand = new Random();
this.identificador = "P" + rand.nextInt(1000);
this.nombre = "";
this.tipoCarne = "";
this.precioPorKg = 0.0;
this.cantidadStock = 0.0;
}
public Producto(String identificador, String nombre, String tipoCarne, double precioPorKg, double cantidadStock) {
this.identificador = identificador;
this.nombre = nombre;
this.tipoCarne = tipoCarne;
this.precioPorKg = precioPorKg;
this.cantidadStock = cantidadStock;
}
public String getIdentificador() {
return identificador;
}
public void setIdentificador(String identificador) {
this.identificador = identificador;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTipoCarne() {
return tipoCarne;
}
public void setTipoCarne(String tipoCarne) {
this.tipoCarne = tipoCarne;
}
public double getPrecioPorKg() {
return precioPorKg;
}
public void setPrecioPorKg(double precioPorKg) {
this.precioPorKg = precioPorKg;
}
public double getCantidadStock() {
return cantidadStock;
}
public void setCantidadStock(double cantidadStock) {
this.cantidadStock = cantidadStock;
}
@Override
public String toString() {
return "Producto:\n" +
"********************************************\n" +
"Identificador: " + identificador + "\n" +
"Nombre: " + nombre + "\n" +
"Tipo de Carne: " + tipoCarne + "\n" +
"Precio por Kg: " + precioPorKg + "\n" +
"Cantidad en Stock: " + cantidadStock + "\n" +
"********************************************";
}
}
Clase Empleado
La clase Empleado
representará a los empleados de la carnicería, con atributos como identificador, nombre, puesto, salario mensual y si es tiempo completo o no.
Implementación:
import java.util.Random;
public class Empleado {
private int identificador;
private String nombre;
private String puesto;
private double salarioMensual;
private boolean esTiempoCompleto;
public Empleado() {
Random rand = new Random();
this.identificador = rand.nextInt(1000);
this.nombre = "";
this.puesto = "";
this.salarioMensual = 0.0;
this.esTiempoCompleto = false;
}
public Empleado(int identificador, String nombre, String puesto, double salarioMensual, boolean esTiempoCompleto) {
this.identificador = identificador;
this.nombre = nombre;
this.puesto = puesto;
this.salarioMensual = salarioMensual;
this.esTiempoCompleto = esTiempoCompleto;
}
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getPuesto() {
return puesto;
}
public void setPuesto(String puesto) {
this.puesto = puesto;
}
public double getSalarioMensual() {
return salarioMensual;
}
public void setSalarioMensual(double salarioMensual) {
this.salarioMensual = salarioMensual;
}
public boolean isEsTiempoCompleto() {
return esTiempoCompleto;
}
public void setEsTiempoCompleto(boolean esTiempoCompleto) {
this.esTiempoCompleto = esTiempoCompleto;
}
@Override
public String toString() {
return "Empleado:\n" +
"********************************************\n" +
"Identificador: " + identificador + "\n" +
"Nombre: " + nombre + "\n" +
"Puesto: " + puesto + "\n" +
"Salario Mensual: " + salarioMensual + "\n" +
"Es Tiempo Completo: " + esTiempoCompleto + "\n" +
"********************************************";
}
}
Clase Carniceria
La clase Carniceria
gestionará los productos y empleados, proporcionando métodos para añadir, eliminar y listar productos y empleados, así como calcular inventarios y gestionar salarios.
Implementación:
import java.util.ArrayList;
import java.util.List;
public class Carniceria {
private List<Producto> productos;
private List<Empleado> empleados;
public Carniceria() {
productos = new ArrayList<>();
empleados = new ArrayList<>();
}
public void agregarProducto(Producto producto) {
productos.add(producto);
}
public void eliminarProducto(String identificador) {
productos.removeIf(producto -> producto.getIdentificador().equals(identificador));
}
public void listarProductos() {
for (Producto producto : productos) {
System.out.println(producto);
}
}
public void agregarEmpleado(Empleado empleado) {
empleados.add(empleado);
}
public void eliminarEmpleado(int identificador) {
empleados.removeIf(empleado -> empleado.getIdentificador() == identificador);
}
public void listarEmpleados() {
for (Empleado empleado : empleados) {
System.out.println(empleado);
}
}
public double calcularInventario() {
double total = 0;
for (Producto producto : productos) {
total += producto.getPrecioPorKg() * producto.getCantidadStock();
}
return total;
}
public double calcularSalarios() {
double total = 0;
for (Empleado empleado : empleados) {
total += empleado.getSalarioMensual();
}
return total;
}
public static void main(String[] args) {
Carniceria carniceria = new Carniceria();
Producto producto1 = new Producto("P001", "Carne de Res", "Res", 15.0, 50.0);
Producto producto2 = new Producto("P002", "Carne de Cerdo", "Cerdo", 12.0, 30.0);
carniceria.agregarProducto(producto1);
carniceria.agregarProducto(producto2);
Empleado empleado1 = new Empleado(1, "Pedro", "Cajero", 1500.0, true);
Empleado empleado2 = new Empleado(2, "Maria", "Cortador", 1200.0, false);
carniceria.agregarEmpleado(empleado1);
carniceria.agregarEmpleado(empleado2);
System.out.println("Productos en la carnicería:");
carniceria.listarProductos();
System.out.println("\nEmpleados en la carnicería:");
carniceria.listarEmpleados();
System.out.println("\nValor total del inventario: " + carniceria.calcularInventario());
System.out.println("Costo total de salarios mensuales: " + carniceria.calcularSalarios());
carniceria.eliminarProducto("P001");
carniceria.eliminarEmpleado(1);
System.out.println("\nProductos después de eliminación:");
carniceria.listarProductos();
System.out.println("\nEmpleados después de eliminación:");
carniceria.listarEmpleados();
}
}
Conclusión
Este ejercicio práctico proporciona una introducción a la implementación de un sistema de gestión para una carnicería utilizando los principios de la Programación Orientada a Objetos en Java. A través de la creación de clases con constructores, getters y setters, y métodos específicos, se puede gestionar eficazmente los productos y empleados de la carnicería, calcular inventarios y gestionar salarios. Practicar estos conceptos fortalecerá tus habilidades en POO y te preparará para desarrollar aplicaciones más complejas.