Modelar un sistema con clases
Cuando un proyecto maneja estado que cambia (una lista de tareas, un carrito, un inventario), las clases ayudan a agrupar los datos y las operaciones que actúan sobre ellos.
class Carrito {
constructor() {
this.items = [];
}
agregar(producto, precio) {
this.items.push({ producto, precio });
}
eliminar(producto) {
this.items = this.items.filter((i) => i.producto !== producto);
}
total() {
return this.items.reduce((acc, i) => acc + i.precio, 0);
}
get cantidad() {
return this.items.length;
}
}
const carrito = new Carrito();
carrito.agregar("libro", 20);
carrito.agregar("café", 5);
console.log(carrito.total()); // 25
console.log(carrito.cantidad); // 2
Buenas prácticas
- Mantén el estado interno coherente: modifícalo solo a través de métodos.
- Cada método debe tener una responsabilidad clara.
- Usa getters para valores derivados (
cantidad,total).
Esta forma de pensar — datos + comportamiento juntos — es la base de la programación orientada a objetos.
Ejemplos
Una clase con estado y métodos
class Contador {
constructor() { this.valor = 0; }
subir() { this.valor++; return this; }
bajar() { this.valor--; return this; }
}
const c = new Contador();
c.subir().subir().bajar();
console.log("Valor final:", c.valor);