Ejercicio Práctico de Programación Orientada a Objetos: Sistema de Gestión para una Carnicería

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

  1. Crear clases básicas Producto y Empleado con atributos específicos y métodos de acceso.
  2. Implementar la clase Carniceria para gestionar los productos y empleados.
  3. Proporcionar métodos para añadir y eliminar productos y empleados, calcular inventarios, y gestionar salarios.
  4. 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.

person encoding in laptop
Photo by Lukas on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad