JavaScriptObjetosdesafio

State machine

Em sistemas reais, um pedido não pode pular de 'pendente' para 'entregue' sem passar pelos estágios intermediários. Máquinas de estado resolvem isso definindo regras claras de transição, evitando estados inválidos e bugs difíceis de rastrear. Você encontra esse padrão em fluxos de pagamento, jogos (fases de personagem) e interfaces com etapas obrigatórias.

O PROBLEMA

Implemente máquina de estados para pedido: pendente → confirmado → enviado → entregue.

EXEMPLO

pedido.estado → "pendente"
pedido.transicionar("confirmar") → "confirmado"

SOBRE O CONCEITO

Uma máquina de estados é um modelo onde um objeto só pode estar em um estado por vez e só muda seguindo regras pré-definidas. No exercício, usamos um objeto de configuração (const transicoes = { pendente: ['confirmar'], ... }) que mapeia cada estado para as ações permitidas. O erro comum é não validar a transição: se o código tentar transicionar('enviar') a partir de 'pendente', deve lançar um erro (com throw) para impedir o estado inválido. Usar includes na array de ações válidas resolve isso de forma limpa, sem if/else extensos.

RESOLUÇÃO

Mais exercícios de Objetos

JSO011 · IntermediárioFactory functionJSO001 · BásicoCriar objeto simplesJSO003 · BásicoMétodo no objetoJSO006 · BásicoDesestruturação de objeto
Ver todos os exercícios de JavaScript