Questão nº 26
Questão de Conhecimentos Específicos · FCC TRF4 2025 (nº 26)
Considere o exemplo abaixo, relacionado ao sistema de tramitação processual em um tribunal:
```
interface ServidorJudiciario {
void analisarProcesso();
void realizarAudiencia();
}
class AnalistaTI implements ServidorJudiciario { }
```
Segundo o Princípio da Segregação de Interface (ISP), pertencente ao conjunto de princípios SOLID, esse código apresenta um problema de design, já que a classe `AnalistaTI` é obrigada a implementar o método `realizarAudiencia()`, mesmo que esse comportamento não se aplique a sua função, que é técnica e não jurisdicional. Para corrigir essa violação ao ISP, a abordagem mais adequada é
- Aremover o método `realizarAudiencia()` da interface `ServidorJudiciario`, criando interfaces separadas para responsabilidades distintas, pois nenhum cliente deve ser forçado a depender de métodos que não utiliza. (alternativa correta)
- Bmanter a interface `ServidorJudiciario` como está, mas implementar o método `realizarAudiencia()` na classe `AnalistaTI` com um corpo vazio, garantindo compatibilidade com a interface.
- Ctornar o método `realizarAudiencia()` um método default com implementação vazia na interface, permitindo que `AnalistaTI` não precise sobrescrevê-lo.
- Dsubstituir a interface `ServidorJudiciario` por uma classe abstrata que implemente `analisarProcesso()` e `realizarAudiencia()` com comportamento genérico, permitindo que `AnalistaTI` herde dela.
- Eimplementar uma exceção no método `realizarAudiencia()` da classe `AnalistaTI`, lançando `UnsupportedOperationException` sempre que ele for chamado.
Resposta comentada
Gabarito Alternativa A
O Princípio da Segregação de Interface (ISP) afirma que nenhuma classe deve ser forçada a implementar interfaces que não utiliza. Em outras palavras, interfaces devem ser pequenas e específicas, para que os clientes (classes que as implementam) não dependam de métodos que não lhes são relevantes.
- (A) Correta: Remover o método
realizarAudiencia()da interfaceServidorJudiciarioe criar interfaces mais específicas (comoServidorComFuncaoJurisdicionaleServidorComFuncaoTecnica) é a essência do ISP, garantindo que cada classe implemente apenas o que realmente precisa. - (B) Incorreta: Implementar um método com corpo vazio é uma "implementação nula" e viola o ISP, pois a classe
AnalistaTIainda é forçada a ter um método que não faz sentido para ela, podendo levar a comportamentos inesperados ou silenciosamente incorretos. - (C) Incorreta: Tornar o método
realizarAudiencia()um método default com implementação vazia na interface é uma forma de contornar a obrigatoriedade, mas não resolve a violação do ISP. A interfaceServidorJudiciarioainda estaria "gorda" e conteria um método que não se aplica a todos os seus implementadores, poluindo a interface. - (D) Incorreta: Substituir a interface por uma classe abstrata muda a natureza do relacionamento (de "pode fazer" para "é um tipo de") e não aborda a segregação de responsabilidades. A classe
AnalistaTIainda herdaria um método irrelevante, mantendo a violação do ISP. - (E) Incorreta: Lançar
UnsupportedOperationExceptioné uma forma explícita de indicar que a operação não é suportada, mas ainda significa que a classeAnalistaTIé forçada a implementar um contrato que não pode cumprir, violando o ISP e forçando os clientes a lidar com exceções desnecessárias.
Fonte: FCC TRF4 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Análise de Sistemas de Informação (Caderno Tipo 001). Reproduzida para fins de estudo.