Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — FUNDATEC 2026

ProgramaçãoProgramação Orientada a Objetos
Código
qg685508
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Computação
Considere uma linguagem orientada a objetos com despacho dinâmico para métodos sobrescritos. Uma empresa de RH desenvolve um sistema de folha de pagamento que modela funcionários por meio de uma classe base `Funcionario`, da qual derivam `FuncionarioCLT` e `FuncionarioPJ`, cada uma sobrepondo (overriding) o método `calcularSalario()` com regras de cálculo distintas. Um módulo de relatórios recebe uma lista do tipo `Funcionario` e invoca `calcularSalario()` em cada elemento sem conhecer o tipo concreto de cada objeto. Quando a empresa contrata um novo tipo de vínculo e cria a classe `FuncionarioSocio` — também derivando de `Funcionario` e sobrepondo `calcularSalario()` — o módulo de relatórios não precisa de nenhuma alteração. Nesse contexto, assinale a alternativa que identifica corretamente os mecanismos de orientação a objetos que tornam esse comportamento possível e explica por que o módulo não precisa ser modificado.
  1. AO encapsulamento permite às subclasses acessar diretamente os atributos privados da superclasse; `calcularSalario()` pode ser invocado sem conhecimento do tipo concreto, e novas subclasses dispensam alterações no módulo, pois os campos privados são acessíveis por herança
  2. BA herança estabelece relação de subtipo que permite a referências do tipo `Funcionario` apontarem para qualquer instância concreta; o polimorfismo por ligação dinâmica resolve `calcularSalario()` em tempo de execução para a implementação correta — novas subclasses de `Funcionario` são automaticamente compatíveis com o módulo.
  3. CA sobrecarga (overloading) de `calcularSalario()` nas subclasses permite ao compilador selecionar a implementação correta em tempo de compilação, com base nos tipos declarados; por ser estática, essa seleção não é afetada pela adição de novos tipos.
  4. DO encapsulamento impede que subclasses redefinam `calcularSalario()` de forma incompatível com a superclasse, garantindo que o módulo nunca receba objetos cujo comportamento contradiga o contrato da classe base.
  5. EO polimorfismo é implementado via sobrecarga (overloading): versões distintas de `calcularSalario()` são definidas na própria classe `Funcionario` e selecionadas em tempo de compilação pelos argumentos; herança não é necessária.
Revelar gabarito e comentário

GabaritoB — A herança estabelece relação de subtipo que permite a referências do tipo `Funcionario` apontarem para qualquer instância concreta; o polimorfismo por ligação dinâmica resolve `calcularSalario()` em tempo de execução para a implementação correta — novas subclasses de `Funcionario` são automaticamente compatíveis com o módulo.

Link permanente: /questoes/qg685508