top of page

📦¡Proyecto: ¡Inventario de Productos!

  • Foto del escritor: Coachs Desarrollo
    Coachs Desarrollo
  • 19 ago
  • 4 Min. de lectura

Prepárate para llevar tus habilidades de programación al siguiente nivel con este proyecto de Inventario de Productos. Este no es un simple ejercicio de HTML, CSS y JavaScript; es una inmersión profunda en el fascinante mundo de la Programación Orientada a Objetos (POO) y las estructuras de datos.

Tu misión es construir un sistema robusto que gestione productos, centrándote en la lógica detrás de bambalinas. La interfaz gráfica es opcional porque la verdadera magia de este proyecto está en la arquitectura del código. ¡Vamos a crear un inventario que demuestre tu maestría en POO!


🔧 ¿Qué vas a lograr?


Al final de este desafío, no solo habrás creado una aplicación funcional, sino que también habrás dominado conceptos clave:


  • Modelado de la vida real: Aprenderás a transformar un objeto del mundo real (un producto) en una clase de código, definiendo sus características (atributos) y comportamientos (métodos).



  • Encapsulamiento y seguridad: Utilizarás atributos privados (#atributo) y métodos getters y setters para proteger la información de tus productos y asegurar que solo pueda ser modificada de manera controlada.



  • Dominio de estructuras complejas: Manejarás un inventario como una estructura de datos avanzada, como un arreglo de objetos, y aplicarás métodos potentes como push(), filter(), y map() para gestionar la información de manera eficiente.



  • Lógica de negocio: Diseñarás e implementarás métodos personalizados para operaciones clave como añadir stock, eliminar productos y actualizar precios.


🧠 Conceptos clave antes de empezar



  • Programación Orientada a Objetos (POO): Un paradigma de programación basado en el concepto de "objetos" que contienen datos (atributos) y código (métodos).


  • Clase: Una plantilla para crear objetos. Se declara con la palabra clave

    class.



  • Objeto/Instancia: Un ejemplar de una clase, creado con la palabra clave new.



  • Encapsulamiento: El concepto de agrupar los datos y los métodos que operan sobre esos datos en una sola unidad, restringiendo el acceso a algunos componentes.



  • #propiedad: La sintaxis en JavaScript para definir un atributo o método privado dentro de una clase.



  • get y set: Son métodos que permiten acceder o modificar propiedades privadas de manera controlada.



  • Estructuras de datos complejas: Formas de organizar datos, como un arreglo de objetos, donde cada objeto puede tener múltiples propiedades (nombre, precio, cantidad, etc.).


🧪 Desarrollo paso a paso



Paso 1 – Clase Producto y atributos (20 min, dificultad baja)


  1. Crea un archivo JavaScript.

  2. Define una clase llamada

    Producto usando la palabra clave class.


  3. Dentro de la clase, crea un

    constructor() que inicialice los atributos del producto, como nombre, precio y cantidad.


  4. Define algunos de estos atributos como privados (usando #) para aplicar el encapsulamiento. Por ejemplo,

    #precio o #cantidad.


  5. Instancia al menos dos objetos de la clase

    Producto para verificar que todo funciona correctamente.


JavaScript


ree


Paso 2 – Métodos, getters y setters (30 min, dificultad media)


  1. Implementa

    getters (get) para poder leer los valores de los atributos privados (#precio, #cantidad).


  2. Implementa

    setters (set) para modificar los atributos privados de manera controlada.


  3. Crea un método público en la clase

    Producto, como actualizarStock(), que tome un valor y lo sume o reste a la cantidad.


  4. Crea un método privado en la clase, como

    #verificarCantidad(), para validar que la cantidad no sea negativa.


JavaScript

ree

Paso 3 – Estructura del inventario y operaciones (40 min, dificultad media)


  1. Define una estructura de datos compleja para el inventario, como un arreglo de objetos.


  2. Crea una clase Inventario que contenga este arreglo. El constructor de esta clase puede inicializar el arreglo vacío.


  3. Agrega un método

    añadirProducto() en la clase Inventario que reciba un objeto Producto y lo agregue al arreglo, por ejemplo, usando push().


  4. Agrega un método

    buscarProductoPorNombre() que recorra el arreglo (con find(), forEach() o un bucle for) y devuelva el producto si lo encuentra.



Paso 4 – Funcionalidades avanzadas (40 min, dificultad media/alta)


  1. Implementa más métodos en la clase Inventario para manipular los productos, como:


    • eliminarProducto(): Elimina un producto del arreglo basándose en su nombre.



    • actualizarPrecio(): Busca un producto y usa el setter para actualizar su precio.



    • calcularValorTotal(): Recorre el inventario con reduce() para sumar el valor total de todos los productos.


  2. Crea un método para mostrar el estado actual del inventario en la consola, formateando la salida para que sea legible.


Paso 5 – Pruebas y presentación (15 min, dificultad baja)


  1. Crea una secuencia de llamadas a los métodos que demuestre la funcionalidad del inventario: añadir productos, actualizar su stock, buscar uno en específico, eliminar otro y, finalmente, mostrar el estado actual y el valor total del inventario.


  2. Explica cómo los principios de POO (clases, encapsulamiento, métodos) hicieron que el código fuera más modular y fácil de entender.


✅ Criterios de logro


Tu proyecto será un éxito si cumples con los siguientes criterios:



  • Modelado de clases: La clase Producto debe estar correctamente definida con atributos y métodos que representen las características y comportamientos de un producto real.



  • Encapsulamiento efectivo: Se debe demostrar el uso de atributos y métodos privados (#) para proteger la integridad de los datos, con el acceso controlado a través de getters y setters.



  • Manejo de estructuras de datos: El inventario debe ser gestionado como una estructura compleja, preferiblemente un arreglo de objetos, y se deben aplicar métodos de arreglo para manipular los datos de manera eficiente.


  • Funcionalidad completa: El sistema debe ser capaz de realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) básicas sobre los productos del inventario de forma programática.

  • Código legible y modular: El proyecto debe tener una estructura lógica, con las clases y métodos bien definidos y con nombres que reflejen su propósito.



🤯 Retos Adicionales: ¿Aceptas el desafío?


Si quieres llevar este proyecto más lejos, aquí tienes algunas ideas para un reto épico:


  • Interfaz de comandos: Crea una interfaz de línea de comandos (CLI) simple para interactuar con tu inventario sin tener que modificar el código directamente.


  • Validaciones robustas: Añade validaciones en los setters y métodos para manejar casos de error (por ejemplo, evitar precios negativos, cantidades no numéricas o la adición de productos duplicados).






(Blog hecho por Frank Iglesias)

 
 
 

Comentarios


bottom of page