Modelar um sistema com classes
Quando um projeto lida com estado que muda (uma lista de tarefas, um carrinho, um inventário), as classes ajudam a agrupar os dados e as operações que atuam sobre eles.
class Carrinho {
constructor() {
this.itens = [];
}
adicionar(produto, preco) {
this.itens.push({ produto, preco });
}
remover(produto) {
this.itens = this.itens.filter((i) => i.produto !== produto);
}
total() {
return this.itens.reduce((acc, i) => acc + i.preco, 0);
}
get quantidade() {
return this.itens.length;
}
}
const carrinho = new Carrinho();
carrinho.adicionar("livro", 20);
carrinho.adicionar("café", 5);
console.log(carrinho.total()); // 25
console.log(carrinho.quantidade); // 2
Boas práticas
- Mantenha o estado interno consistente: modifique-o apenas através de métodos.
- Cada método deve ter uma responsabilidade clara.
- Use getters para valores derivados (
quantidade,total).
Essa forma de pensar — dados + comportamento juntos — é a base da programação orientada a objetos.
Exemplos
Uma classe com estado e métodos
class Contador {
constructor() { this.valor = 0; }
subir() { this.valor++; return this; }
baixar() { this.valor--; return this; }
}
const c = new Contador();
c.subir().subir().baixar();
console.log("Valor final:", c.valor);