Getters e setters
Getters e setters são úteis quando você precisa controlar como uma propriedade é lida ou modificada. Em vez de expor diretamente um atributo, você pode usar um getter para calcular um valor dinâmico (como a área de um círculo) e um setter para validar entradas (como impedir um raio negativo). Isso é comum em bibliotecas de gráficos, jogos ou APIs financeiras, onde dados inconsistentes podem causar erros difíceis de rastrear.
O PROBLEMA
Crie objeto circulo com raio, getter area e setter raio que valida valor positivo.
EXEMPLO
circulo.raio = 5; circulo.area → 78.54 circulo.raio = -1 → throw Error
SOBRE O CONCEITO
Getters e setters permitem que você defina funções que são executadas ao acessar ou atribuir uma propriedade, mas sem usar sintaxe de método. No exercício, get area() calcula a área com Math.PI * this.raio ** 2 e é acessado como circulo.area (sem parênteses). Já set raio(valor) verifica se valor > 0; caso contrário, lança um erro com throw new Error(...). O erro comum é tentar chamar o getter com circulo.area() — isso falha porque area não é uma função, mas uma propriedade. O setter também não é chamado como método; a atribuição circulo.raio = -1 dispara a validação automaticamente.
RESOLUÇÃO