Ejercicio Práctico de Programación Orientada a Objetos (POO): Sistema de Gestión para una Carnicería con Asesoría

En este artículo, desarrollaremos 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 productos, empleados y la carnicería, incluyendo características como encapsulamiento, constructores, getters y setters, y métodos específicos para la funcionalidad del sistema. Además, añadiremos una clase de asesoría para gestionar las operaciones.

Objetivos del Ejercicio

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

La clase Asesoria representará las sesiones de asesoría proporcionadas a la carnicería, con atributos como identificador, nombre del asesor, tema y duración en horas.

Implementación:

import java.util.Random;

public class Asesoria {
    private String identificador;
    private String nombreAsesor;
    private String tema;
    private int duracionHoras;

    public Asesoria() {
        Random rand = new Random();
        this.identificador = "A" + rand.nextInt(1000);
        this.nombreAsesor = "";
        this.tema = "";
        this.duracionHoras = 0;
    }

    public Asesoria(String identificador, String nombreAsesor, String tema, int duracionHoras) {
        this.identificador = identificador;
        this.nombreAsesor = nombreAsesor;
        this.tema = tema;
        this.duracionHoras = duracionHoras;
    }

    public String getIdentificador() {
        return identificador;
    }

    public void setIdentificador(String identificador) {
        this.identificador = identificador;
    }

    public String getNombreAsesor() {
        return nombreAsesor;
    }

    public void setNombreAsesor(String nombreAsesor) {
        this.nombreAsesor = nombreAsesor;
    }

    public String getTema() {
        return tema;
    }

    public void setTema(String tema) {
        this.tema = tema;
    }

    public int getDuracionHoras() {
        return duracionHoras;
    }

    public void setDuracionHoras(int duracionHoras) {
        this.duracionHoras = duracionHoras;
    }

    @Override
    public String toString() {
        return "Asesoría:\n" +
                "********************************************\n" +
                "Identificador: " + identificador + "\n" +
                "Nombre del Asesor: " + nombreAsesor + "\n" +
                "Tema: " + tema + "\n" +
                "Duración en Horas: " + duracionHoras + "\n" +
                "********************************************";
    }
}

Clase Carniceria

La clase Carniceria gestionará los productos, empleados y asesorías, proporcionando métodos para añadir, eliminar y listar productos, empleados y asesorías, 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;
    private List<Asesoria> asesorias;

    public Carniceria() {
        productos = new ArrayList<>();
        empleados = new ArrayList<>();
        asesorias = 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 void agregarAsesoria(Asesoria asesoria) {
        asesorias.add(asesoria);
    }

    public void eliminarAsesoria(String identificador) {
        asesorias.removeIf(asesoria -> asesoria.getIdent

java
import java.util.ArrayList;
import java.util.List;

public class Carniceria {
private List productos;
private List empleados;
private List asesorias;

public Carniceria() {
    productos = new ArrayList<>();
    empleados = new ArrayList<>();
    asesorias = 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 void agregarAsesoria(Asesoria asesoria) {
    asesorias.add(asesoria);
}

public void eliminarAsesoria(String identificador) {
    asesorias.removeIf(asesoria -> asesoria.getIdentificador().equals(identificador));
}

public void listarAsesorias() {
    for (Asesoria asesoria : asesorias) {
        System.out.println(asesoria);
    }
}

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);

    Asesoria asesoria1 = new Asesoria("A001", "Juan Pérez", "Mejoras en Ventas", 5);
    Asesoria asesoria2 = new Asesoria("A002", "Ana López", "Gestión de Inventario", 3);

    carniceria.agregarAsesoria(asesoria1);
    carniceria.agregarAsesoria(asesoria2);

    System.out.println("Productos en la carnicería:");
    carniceria.listarProductos();

    System.out.println("\nEmpleados en la carnicería:");
    carniceria.listarEmpleados();

    System.out.println("\nAsesorías en la carnicería:");
    carniceria.listarAsesorias();

    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);
    carniceria.eliminarAsesoria("A001");

    System.out.println("\nProductos después de eliminación:");
    carniceria.listarProductos();

    System.out.println("\nEmpleados después de eliminación:");
    carniceria.listarEmpleados();

    System.out.println("\nAsesorías después de eliminación:");
    carniceria.listarAsesorias();
}

}
«`

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, empleados y asesorías 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
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

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
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.