Questão de Programação — Programação Orientada a Objetos — FGV 2024
Programação›Programação Orientada a Objetos
Código
fg077100
Banca
FGV
Órgão
CGM de Belo Horizonte - MG
Ano
2024
Nível
Superior
Cargo
Auditor Interno - Ciência da Computação - Manhã
Com relação à programação orientada a objetos usando Java, avalie o código a seguir.
Em relação ao código, analise as afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.
( ) A classe Mobi é um exemplo de herança, um dos fundamentos da programação orientada a objetos.
( ) A classe Veiculo não pode ser instanciada porque é uma classe abstrata.
( ) O método getPortas() é um exemplo de encapsulamento, outro fundamento da programação orientada a objetos.
As afirmativas são, respectivamente,
AV – V – F.
BV – F – V.
CF – V – V.
DF – F – V.
Revelar gabarito e comentário▾
GabaritoB — V – F – V.
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 Orientada a Objetos em Java: herança, classes abstratas e encapsulamento
Gabarito: letra B (V – F – V). A primeira afirmativa é verdadeira porque a classe Mobi estende Veiculo, caracterizando herança; a segunda é falsa porque, embora Veiculo seja abstrata, a afirmativa generaliza que "não pode ser instanciada" sem considerar que subclasses concretas podem ser instanciadas; a terceira é verdadeira porque getPortas() é um método getter que expõe o atributo privado portas, exemplificando encapsulamento. A análise se baseia nos fundamentos da POO: herança, classes abstratas e encapsulamento.
A programação orientada a objetos (POO) é um paradigma que organiza o código em torno de "objetos", que são instâncias de classes. Uma classe define a estrutura (atributos) e o comportamento (métodos) dos objetos. Os quatro pilares fundamentais da POO são: abstração, encapsulamento, herança e polimorfismo. Nesta questão, três desses conceitos são diretamente cobrados: herança, classes abstratas (relacionadas à abstração) e encapsulamento.
Herança é o mecanismo pelo qual uma classe (subclasse ou classe filha) herda atributos e métodos de outra classe (superclasse ou classe pai). Em Java, isso é feito com a palavra-chave extends. A classe Mobi estende Veiculo, portanto, Mobi é uma subclasse de Veiculo e herda seus membros. Isso permite a reutilização de código e a criação de hierarquias de classes.
Classes abstratas são classes que não podem ser instanciadas diretamente; elas servem como modelo para outras classes. Em Java, uma classe é declarada abstrata com a palavra-chave abstract. Uma classe abstrata pode conter métodos abstratos (sem implementação) e métodos concretos. Subclasses concretas devem implementar os métodos abstratos, e é a partir delas que objetos podem ser criados. A afirmativa II diz que "A classe Veiculo não pode ser instanciada porque é uma classe abstrata". Isso é verdadeiro em relação à classe Veiculo em si, mas a afirmativa é apresentada de forma absoluta, sem considerar que subclasses concretas podem ser instanciadas. A banca explora essa generalização indevida.
Encapsulamento é o princípio de esconder os detalhes internos de um objeto e restringir o acesso direto aos seus atributos, expondo apenas o necessário por meio de métodos públicos (getters e setters). Em Java, isso é feito declarando atributos como private e fornecendo métodos públicos para acessá-los e modificá-los. O método getPortas() é um getter que retorna o valor do atributo privado portas, exemplificando encapsulamento.
A pegadinha desta questão está na segunda afirmativa: ela mistura uma verdade (a classe Veiculo é abstrata e não pode ser instanciada) com uma generalização indevida (a afirmativa sugere que isso é uma regra absoluta, ignorando que subclasses concretas podem ser instanciadas). A banca quer que o candidato perceba que a afirmativa é falsa porque, embora Veiculo não possa ser instanciada, isso não impede que suas subclasses concretas sejam instanciadas.
Afirmativa 1 — ✅ Verdadeira
A classe Mobi estende Veiculo, o que caracteriza herança. Em Java, a herança é implementada com a palavra-chave extends, e a subclasse herda os atributos e métodos da superclasse. Isso permite a reutilização de código e a criação de hierarquias de classes, um dos fundamentos da POO.
Afirmativa 2 — ❌ Falsa
A afirmativa diz que "A classe Veiculo não pode ser instanciada porque é uma classe abstrata". Embora seja verdade que classes abstratas não podem ser instanciadas diretamente, a afirmativa é falsa porque generaliza de forma indevida: subclasses concretas de Veiculo podem ser instanciadas. A classe Mobi, por exemplo, se for concreta, pode ser instanciada. A banca explora a generalização indevida, apresentando uma verdade parcial como absoluta.
Afirmativa 3 — ✅ Verdadeira
O método getPortas() é um getter que retorna o valor do atributo privado portas. Isso exemplifica encapsulamento, pois o atributo é privado e o acesso é feito por um método público. O encapsulamento é um dos fundamentos da POO, permitindo controlar o acesso aos dados e garantir a integridade do objeto.
Conclusão: As afirmativas verdadeiras são a 1 e a 3, e a falsa é a 2. Portanto, a sequência correta é V – F – V, correspondente à letra B.
NÃO CAIA NESSA!
A banca adora generalizar indevidamente. A afirmativa 2 mistura uma verdade (classe abstrata não pode ser instanciada) com uma generalização falsa (ignora que subclasses concretas podem ser instanciadas). Fique atento a palavras como "não pode" e "sempre" — elas costumam sinalizar exceções.
PEGA ESSA DICA!
Para resolver questões de POO, identifique os pilares: herança (extends), encapsulamento (atributos private + getters/setters), abstração (classes abstratas/interfaces) e polimorfismo (sobrecarga/sobrescrita). Se a afirmativa mencionar um conceito, verifique se o código realmente o implementa.