Questão nº 102
Questão de Tecnologia da Informação · FGV CGE-SP 2025 (nº 102)
Considere um sistema desenvolvido com base nos princípios da Orientação a Objetos. O sistema possui uma classe base abstrata Funcionario e duas classes derivadas: Gerente e Vendedor.
A classe Funcionario define um método calcularSalario() que é implementado de forma diferente em Gerente (com bônus de gestão) e Vendedor (com comissão de vendas). A capacidade de utilizar uma referência do tipo Funcionario para chamar o método calcularSalario() e ter a versão correta do método (Gerente ou Vendedor) sendo executada em tempo de execução, é uma característica fundamental do seguinte conceito da Orientação a Objetos:
- Apolimorfismo, especificamente o polimorfismo de inclusão. (alternativa correta)
- Bencapsulamento, protegendo os dados internos das classes.
- Cherança, definindo a relação 'é um tipo de' entre as classes.
- Dabstração, garantindo que apenas detalhes essenciais sejam expostos.
- Ecoesão, medindo o quão relacionados estão os elementos dentro de um módulo.
Resposta comentada
Gabarito Alternativa A
Polimorfismo (do grego "muitas formas") é a capacidade de objetos de diferentes classes responderem ao mesmo método de maneiras distintas, mas esperadas. No contexto do polimorfismo de inclusão (ou de subtipo), isso significa que você pode tratar objetos de classes diferentes (mas relacionadas por herança) de forma uniforme, usando uma referência da classe base, e o sistema automaticamente executa a versão correta do método para o tipo de objeto real em tempo de execução.
- (A) Correta: A situação descrita – usar uma referência do tipo
Funcionariopara chamarcalcularSalario()e ter a implementação específica deGerenteouVendedorexecutada – é a definição exata de polimorfismo, mais especificamente o polimorfismo de inclusão (ou de subtipo). Ele permite que o sistema decida qual método executar em tempo de execução, com base no tipo real do objeto, e não no tipo da referência. - (B) Incorreta: Encapsulamento refere-se à ocultação dos detalhes internos de uma classe e à proteção de seus dados, expondo apenas uma interface controlada. Não descreve o comportamento de métodos diferentes sendo chamados através de uma referência comum.
- (C) Incorreta: Herança é o mecanismo que permite que uma classe (subclasse) herde características e comportamentos de outra classe (superclasse), estabelecendo uma relação "é um tipo de". Embora a herança seja um pré-requisito para o polimorfismo de inclusão (pois
GerenteeVendedorherdam deFuncionario), ela por si só não descreve a capacidade de chamar o método e ter a versão correta executada em tempo de execução. A herança define a estrutura; o polimorfismo define o comportamento dinâmico. A armadilha aqui é confundir a fundação (herança) com o comportamento resultante (polimorfismo). - (D) Incorreta: Abstração é o processo de identificar os aspectos essenciais de um objeto e ocultar os detalhes de implementação. A classe
Funcionarioser abstrata é um exemplo de abstração, mas a execução dinâmica do métodocalcularSalario()não é a abstração em si, e sim uma característica do polimorfismo que se beneficia da abstração. - (E) Incorreta: Coesão é um princípio de design que mede o grau em que os elementos de um módulo ou classe estão relacionados funcionalmente entre si. É uma métrica de qualidade de design, não um mecanismo de execução de métodos.
Fonte: FGV CGE-SP 2025 Auditor Estadual de Controle - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.