Questão nº 28

Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 28)

FGV2022Analista Judiciário - Análise de SistemasAnálise de Sistemas
Gabarito: Ever comentário ↓

Observe as classes abaixo descritas na linguagem de programação Java.

```java
public class DocumentoProcesso extends Object
{
private String docNumero;
private int classificacao;
public DocumentoProcesso(String docNumero, int classificacao){
if (classificacao < 1)
throw new IllegalArgumentException(
"A classificação do documento deve ser no mínimo 1.");
this.docNumero = docNumero;
this.classificacao = classificacao;
}
public String getDocNumero()
{ return docNumero; }
public int getClassificacao()
{ return classificacao; }
public void setDocNumero(String docNumero)
{ this.docNumero = docNumero; }
public void setClassificacao(int classificacao)
{ this.classificacao = classificacao; }
public int promove()
{ return classificacao + 1; }
}
public class Oficio extends DocumentoProcesso
{
private int precedencia;
public Oficio(String docNumero, int classificacao, int precedencia)
{ super(docNumero,classificacao);
this.precedencia = precedencia; }
public int getPrecedencia()
{ return precedencia;
}
public void setPrecedencia(int precedencia)
{ this.precedencia = precedencia; }
@Override
public int promove()
{ return precedencia + 1; }
}
```

Com base nos conceitos de orientação a objetos, é correto afirmar que:

Resposta comentada

Gabarito Alternativa E

Conceito-chave: Encapsulamento é a ideia de esconder os dados (atributos) de uma classe, permitindo que eles sejam acessados ou modificados apenas por métodos controlados (os getters e setters). Isso protege o objeto de estados inválidos, pois o método pode validar o valor antes de atribuí-lo.

  • (A) Incorreta: Atributos private são acessíveis somente dentro da própria classe DocumentoProcesso; a subclasse Oficio não pode acessá-los diretamente, apenas via métodos públicos como getDocNumero().
  • (B) Incorreta: A anotação @Override apenas indica que o método promove() da subclasse sobrescreve (redefine) o método da superclasse; não significa que o método é abstrato (ele tem implementação) nem que é polimórfico por si só (o polimorfismo ocorre em tempo de execução, mas a anotação não o define).
  • (C) Incorreta: A classe Oficio herda de uma única classe (DocumentoProcesso), que por sua vez herda de Object; isso é herança simples, não múltipla.
  • (D) Incorreta: A relação entre Oficio e DocumentoProcesso é de herança (é um), não de composição (tem um). A classe Oficio não contém uma referência a um objeto DocumentoProcesso; ela é um DocumentoProcesso.
  • (E) Correta: Os métodos getDocNumero() e setDocNumero() encapsulam o atributo docNumero, controlando o acesso a ele. Embora o setDocNumero() não valide o valor, o encapsulamento permite que validações sejam adicionadas futuramente, mantendo a consistência do objeto. Além disso, o construtor já valida classificacao, mostrando a intenção de proteger o estado.

Armadilha do distrator mais tentador (A): A banca quer que você confunda herança com acesso direto. Muitos alunos acham que, por Oficio herdar de DocumentoProcesso, ela pode acessar os atributos private da superclasse. Não pode! O private é o nível mais restritivo: só a própria classe enxerga. A subclasse só acessa via métodos públicos ou protected.

Fonte: FGV TJDFT 2022 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho