Questão de Engenharia de Software — Orientação a Objetos — FGV 2025
Engenharia de Software›Orientação a Objetos
Código
fg104561
Banca
FGV
Órgão
AL-AM
Ano
2025
Nível
Superior
Cargo
Analista Legislativo - Analista de Sistema
Em um sistema de folha de pagamento da Assembleia, o Analista de Sistemas está modelando a hierarquia de funcionários. A classe base Pessoa contém atributos comuns como nome e cpf. A classe Funcionario herda de Pessoa e possui o método calcularRemuneracaoMensal(). No entanto, a forma de cálculo varia radicalmente entre subtipos como Efetivo e Comissionado, e a classe Funcionario por si só nunca deve ser instanciada, servindo apenas como um contrato para as classes filhas.O conceito de Orientação a Objetos aplicado à classe Funcionario para impedir sua instanciação direta, ao mesmo tempo em que impõe a obrigatoriedade de implementação do método calcularRemuneracaoMensal() nas suas subclasses é o(a)
AEncapsulamento, por meio de um construtor privado.
BPolimorfismo, por meio de sobrecarga do método.
CHerança Múltipla, por meio de interfaces.
DAbstração, por meio da definição como Classe Abstrata e método Abstrato.
ECoesão, garantindo a especialização dos métodos
Revelar gabarito e comentário▾
GabaritoD — Abstração, por meio da definição como Classe Abstrata e método Abstrato.
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”.
Orientação a Objetos – Classe Abstrata e Método Abstrato
Gabarito: letra D. O cenário descreve uma classe Funcionario que não deve ser instanciada e que obriga suas subclasses a implementar o método calcularRemuneracaoMensal(). Esse é exatamente o papel de uma classe abstrata com método abstrato, mecanismo que fornece um contrato para as subclasses sem permitir a criação de objetos da própria classe. A abstração é o conceito central, pois permite modelar a ideia genérica de funcionário sem se preocupar com a implementação concreta.
Conceito
Impede instanciação direta?
Obriga subclasses a implementar método?
Mecanismo principal
Classe Abstrata + Método Abstrato (D)
Sim
Sim
Abstração
Construtor privado (A)
Sim
Não
Encapsulamento
Sobrecarga de método (B)
Não
Não
Polimorfismo
Interface / Herança Múltipla (C)
Sim (interface)
Sim
Contrato, mas não é herança de classe
Coesão (E)
Não
Não
Especialização de responsabilidades
Classe abstrata
1Não pode ser instanciada
2Serve como contrato
Método abstrato
Sem corpo
Obriga implementação nas subclasses
3Exemplo: Funcionario
Efetivo
Comissionado
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Encapsulamento com construtor privado de fato impede a instanciação direta, mas não impõe a obrigatoriedade de implementação do método nas subclasses. Uma classe com construtor privado pode até ter o método implementado nela mesma, e as subclasses podem ou não sobrescrevê-lo. Não gera o contrato exigido.
Alternativa B — ❌ Incorreta
Polimorfismo por sobrecarga (mesmo nome com parâmetros diferentes) permite que um método se comporte de formas distintas, mas não impede instanciação nem força implementação. A sobrecarga é resolvida em tempo de compilação e não estabelece um contrato de herança.
Alternativa C — ❌ Incorreta
Herança múltipla por interfaces é uma forma de contrato, mas não é o mecanismo descrito. O enunciado fala de herança de classe (Funcionario herda de Pessoa) e não menciona múltiplas superclasses. Interfaces são um conceito diferente; aqui a classe Funcionario é uma classe (não interface) que serve como base, o que remete a classe abstrata.
Alternativa D — ✅ Correta ⟵ GABARITO
Abstração, por meio da definição como Classe Abstrata e método Abstrato. Uma classe abstrata não pode ser instanciada (impede new Funcionario()) e um método abstrato é declarado sem corpo, forçando todas as subclasses concretas a implementá-lo. Isso atende exatamente ao requisito: Funcionario nunca é instanciada e serve como contrato para Efetivo e Comissionado.
SE LIGUE NESSA!
O conteúdo de apoio destaca que "classes abstratas não podem ser instanciadas em objetos, elas existem apenas para o propósito de herança em outras classes 'concretas'". O método abstrato é a forma de garantir que as subclasses forneçam sua própria implementação.
Alternativa E — ❌ Incorreta
Coesão refere-se ao grau em que os elementos de um módulo (classe) estão relacionados entre si. Não está ligada a impedir instanciação nem a obrigar implementação de métodos. É um princípio de design, não um mecanismo de linguagem.
Resposta: letra D – Classe abstrata com método abstrato.