JavaScriptPOOintermediario

Classe genérica Stack

Pilhas estão em todo lugar: no botão 'voltar' do navegador, no undo de editores de texto e na avaliação de expressões matemáticas. A ordem LIFO (último a entrar, primeiro a sair) resolve problemas de backtracking e desfazer ações. Dominar a implementação de uma pilha com uma classe te dá um componente reutilizável e encapsulado para qualquer projeto.

O PROBLEMA

Implemente classe Stack (pilha) com: push, pop, peek, isEmpty, size, toString.

EXEMPLO

const s = new Stack();
s.push(1); s.push(2); s.push(3);
s.peek() → 3
s.pop() → 3
s.size() → 2

SOBRE O CONCEITO

A classe Stack usa um campo privado #items (array) para armazenar os elementos, garantindo encapsulamento — ninguém de fora pode acessar ou modificar o array diretamente. O erro mais comum é chamar pop() sem antes verificar se a pilha está vazia: isso retorna undefined ou, se você tentar acessar uma posição inexistente, causa um erro inesperado. A solução é lançar uma exceção com throw ou usar isEmpty() para proteger a operação. Outro erro frequente é em peek(): se o elemento for um objeto, retornar a referência permite que o chamador altere o objeto internamente, quebrando o encapsulamento. O ideal é retornar uma cópia (caso necessário) ou, se for valor primitivo, o próprio valor. O método toString() deve percorrer os itens e montar uma string, sem expor o array privado.

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP008 · Básicoinstanceof e verificação de tipoJSP009 · BásicoClasse abstrata simulada
Ver todos os exercícios de JavaScript