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.
- 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
- 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.
- 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.
- 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.
- 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.