Pular para o conteúdo principal

Questão de Programação — Frameworks Java — Avança SP 2025

ProgramaçãoFrameworks Java
Código
qg425156
Banca
Avança SP
Órgão
UNITAU
Ano
2025
Nível
Superior
Cargo
Programador Pleno
Qual dos seguintes conceitos em programação funcional evita mudanças no estado dos dados?
  1. AMutabilidade
  2. BRecursão
  3. CImutabilidade
  4. DHerança
  5. EPolimorfismo
Revelar gabarito e comentário

GabaritoC — Imutabilidade

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Programação funcional: imutabilidade de dados

Gabarito: letra C. Em programação funcional, o conceito que evita mudanças no estado dos dados é a imutabilidade — dados imutáveis não podem ser alterados após sua criação, e qualquer transformação gera um novo valor. Esse é um dos pilares do paradigma funcional, que trata a computação como avaliação de funções matemáticas, evitando estados ou dados mutáveis.

A programação funcional é um paradigma que trata a computação como uma avaliação de funções matemáticas, evitando estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste com a programação imperativa, que enfatiza mudanças no estado do programa. Em vez de modificar variáveis existentes, o paradigma funcional trabalha com valores imutáveis: uma vez criado, um dado não muda; qualquer operação que precisaria alterá-lo produz um novo valor. Isso traz benefícios como previsibilidade, facilidade de teste e segurança em ambientes concorrentes, pois não há corrida por escrita em dados compartilhados.

Na prática, linguagens funcionais como Haskell, Erlang e Elixir adotam a imutabilidade como regra. Em Java, embora seja uma linguagem predominantemente imperativa e orientada a objetos, é possível aplicar princípios funcionais — por exemplo, usando final para impedir reatribuição de referências, ou criando classes com atributos imutáveis (sem setters). As Streams do Java 8+ também incentivam operações que não modificam a fonte de dados, mas produzem novos resultados.

A distinção central que a questão explora é entre mutabilidade e imutabilidade. Mutabilidade é a capacidade de um objeto ter seu estado alterado após a criação — é o oposto do que a programação funcional busca. Imutabilidade é a característica de um objeto cujo estado não pode ser modificado depois de criado. Enquanto a programação imperativa frequentemente depende de variáveis mutáveis, a funcional prefere valores imutáveis para garantir que funções sejam determinísticas e sem efeitos colaterais.

A pegadinha da banca está em associar conceitos de outros paradigmas (herança, polimorfismo, recursão) à pergunta sobre imutabilidade. Recursão, por exemplo, é uma técnica de repetição usada em programação funcional, mas não é o conceito que evita mudanças de estado — é apenas uma forma de iterar sem laços imperativos. Herança e polimorfismo são pilares da orientação a objetos, não da programação funcional. A alternativa correta é a que nomeia diretamente a propriedade dos dados, não uma técnica ou conceito relacionado.

Guarde a fronteira: a pergunta é sobre o que evita mudanças no estado dos dados — a resposta é a característica dos próprios dados (imutabilidade), não uma técnica de controle de fluxo (recursão) nem um conceito de outro paradigma (herança, polimorfismo). É exatamente nessa distinção que as alternativas se dividem.

Alternativa A — ❌ Incorreta

Mutabilidade é exatamente o oposto: é a capacidade de um objeto ter seu estado alterado após a criação. A programação funcional busca evitar dados mutáveis, não promovê-los. A alternativa inverte o conceito — quem responde isso confunde o problema com a solução.

Alternativa B — ❌ Incorreta

Recursão é uma técnica de repetição em que uma função chama a si mesma, comum em programação funcional como alternativa aos laços imperativos. Porém, ela não é o conceito que evita mudanças de estado — é apenas uma forma de estruturar o fluxo de execução. A imutabilidade é independente do uso de recursão.

Alternativa C — ✅ Correta ⟵ GABARITO

Imutabilidade é a propriedade de um dado cujo estado não pode ser modificado após sua criação. É um dos pilares da programação funcional, que trata a computação como avaliação de funções matemáticas, evitando estados ou dados mutáveis. Qualquer transformação gera um novo valor, em vez de alterar o existente.

Alternativa D — ❌ Incorreta

Herança é um conceito da programação orientada a objetos, onde uma classe pode herdar atributos e métodos de outra. Não tem relação com evitar mudanças de estado — é um mecanismo de reutilização e extensão de código, não uma propriedade de dados.

Alternativa E — ❌ Incorreta

Polimorfismo é um conceito da programação orientada a objetos, que permite que referências de tipos mais abstratos representem o comportamento de classes concretas. Não está relacionado a evitar mudanças de estado — é sobre como objetos de tipos diferentes respondem à mesma mensagem.

Gabarito: letra C — imutabilidade é o conceito que evita mudanças no estado dos dados em programação funcional.

Link permanente: /questoes/qg425156