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