Questão de Programação — Frameworks Java — Avança SP 2025
- Código
- qg425156
- Banca
- Avança SP
- Órgão
- UNITAU
- Ano
- 2025
- Nível
- Superior
- Cargo
- Programador Pleno
- AMutabilidade
- BRecursão
- CImutabilidade
- DHerança
- EPolimorfismo
GabaritoC — Imutabilidade
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.
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.
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.
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.
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.
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