POO: Principal conceito de Polimorfismo

Fala, pessoal! Beleza?

Os quatros pilares da POO são:

  • Abstração;
  • Encapsulamento;
  • Herança; e
  • Polimorfismo.

Em relação ao polimorfismo, o principal conceito é a propriedade de duas ou mais classes derivadas de uma mesma superclasse responderem a mesma mensagem, cada uma de uma forma diferente. Ocorre quando uma subclasse redefine um método existente na superclasse, ou seja, quando temos os métodos sobrescritos (overriding).

Por exemplo, na imagem abaixo, temos uma hierarquia da classe Mamífero:

 

 

A classe Mamífero tem o método locomoverSe():

Superclasse Mamífero:

locomoverSe() {
     // A ser implementado em alguma subclasse. 
}

 

As subclasses Macaco, Homem e Baleia herdam e sobrescrevem o método citado da seguinte forma:

Subclasse Macaco:

locomoverSe() {
     pulandoDeGalhoEmGalho; 
}

 

Subclasse Homem:

locomoverSe() {
     andando; 
}

 

Subclasse Baleia:

locomoverSe() {
     nadando;
}

 

Os objetos de cada classe responderam à mesma mensagem (locomoverSe()), mas cada um de uma forma diferente. O que caracteriza o principal conceito do polimorfismo:

Mamifero variavelObjeto; 

variavelObjeto = new Macaco(); 
variavelObjeto.locomoverSe(); // pulando de galho em galho 

variavelObjeto = new Homem(); 
variavelObjeto.locomoverSe(); // andando 

variavelObjeto = new Baleia(); 
variavelObjeto.locomoverSe(); // nadando

 

Com a mesma variável-objeto do tipo Mamifero, podemos usá-la para receber objetos dos tipos das subclasses de Mamifero. O que torna o código bem enxuto e limpo.

Recapitulando: o principal conceito do polimorfismo é a propriedade de duas ou mais classes derivadas (Macaco, Homem e Baleia) de uma mesma superclasse (Mamifero) responderem a mesma mensagem (locomoverSe()), cada uma de uma forma diferente (pulando de galho em galho, andando e nadando, respectivamente).

Finalizando, há autores que citam outros tipos de polimorfismo, porém, o que foi estudado aqui é o principal conceito.

 

[IFSE 2016 IFSE – Analista de Tecnologia da Informação – Desenvolvimento] Analise o trecho de código abaixo:

animal a = new animal( );
a.locomover( );
a = new cobra( );
a.locomover( );
a = new gato( );
a.locomover( );

 

É um exemplo de:

[A] Encapsulamento

[B] Polimorfismo

[C] Troca de mensagens

[D] Classe abstrata

Comentários:

O código da questão é bem parecido com o exemplo que foi dado no artigo. Há uma superclasse animal e duas subclasses: cobra e gato. A variável-objeto a é do tipo da superclasse e pode apontar para objetos das subclasses.

Cada subclasse pode sobrescrever o método locomover(), herdado da superclasse animal.

O polimorfismo é uma consequência da herança e o principal conceito vem da sobrescrita dos métodos.

Gabarito: letra B.

 

[FCC 2016 TRT 14ª Região – Técnico Judiciário – Tecnologia da Informação – Questão 49] São, dentre outros, recursos essenciais em uma aplicação orientada a objetos para se obter polimorfismo:

[A] Herança e sobrescrita de métodos.

[B] Classes estáticas, com métodos protegidos.

[C] Interfaces, contendo métodos não abstratos e implementados.

[D] Classes abstratas, sem subclasses.

[E] Arrays unidimensionais ou multidimensionais.

Comentários:

O polimorfismo é uma consequência da herança e o principal conceito vem da sobrescrita dos métodos.

Gabarito: letra A.

 

[FCC 2016 PRODATER Teresina/PI – Analista Tecnológico – Analista de Sistemas – Questão 33] Na orientação a objetos o entendimento dos conceitos é fundamental para se explorar ao máximo os recursos disponibilizados neste paradigma de programação. Um destes conceitos é o de

[B] polimorfismo, que ocorre quando não há sobrescrita nem sobrecarga de métodos nas classes e interfaces da aplicação.

Comentários:

Polimorfismo ocorre quando uma subclasse redefine um método existente na superclasse, ou seja, quando há métodos sobrescritos (overriding).

Gabarito: ERRADO.

 

[FCC 2013 MPE/MA – Analista Ministerial – Análise e Desenvolvimento de Sistemas – Questão 37] Um dono de uma fábrica de brinquedos solicitou que seus engenheiros criassem um mesmo controle remoto para os brinquedos avião, carro e barco. A única restrição era que cada brinquedo atendesse aos comandos específicos definidos pelo controle. O controle remoto teria vários botões, sendo que todos eles seriam úteis para todos os brinquedos. Por exemplo, quando o usuário apertasse o botão mover, o controle enviaria o sinal MOVER para todos os brinquedos que estivessem em um raio de 2 metros. Desta forma, quando o brinquedo recebesse o sinal MOVER, ele se moveria de acordo com a sua função. Para o avião, mover significa VOAR, para o barco significa NAVEGAR e, para o automóvel, significa CORRER. Observe que os brinquedos respondem ao mesmo sinal de formas diferentes.

Na programação orientada a objetos, este exemplo ilustra um caso de

[A] Herança.

[B] Polimorfismo.

[C] Sobrecarga de métodos.

[D] Classe abstrata.

[E] Hierarquia de herança.

Comentários:

Vejam que o enunciado da questão é idêntico ao exemplo da hierarquia de classes Mamífero.

Gabarito: letra B.

 

[FCC 2013 Assembleia Legislativa/RN – Analista Legislativo – Analista de Sistemas – Questão 50] José foi incumbido de modelar as classes do sistema que a empresa estava desenvolvendo. Ele se deparou com as seguintes classes:

  • Classe 1, que possui os atributos data de nascimento, nome, sexo e um método para calcular a idade no calendário Gregoriano.
  • Classe 2, que possui os atributos data de nascimento, nome, sexo, telefone e um método para calcular a idade no calendário Chinês.
  • Classe 3, que possui os atributos data de nascimento, nome, sexo e um método para calcular a idade no calendário Juliano.

Por ser conhecedor de técnicas de orientação a objetos, ele propôs que fosse criada uma classe com os atributos comuns e o método de cálculo da idade. Sugeriu que fossem criadas classes baseadas nessa primeira e que apenas alterassem o que não fosse comum, como a inclusão do atributo telefone e diferentes tipos de implementação para o método do cálculo da idade.

Deste modo ele utilizou, respectivamente, as técnicas de

[A] herança e polimorfismo.

[B] abstração e agregação.

[C] encapsulamento e abstração.

[D] polimorfismo e encapsulamento.

[E] abstração e herança.

Comentários:

Novamente, um enunciado da questão é idêntico ao exemplo da hierarquia de classes Mamífero.

Gabarito: letra A.

 

[CESPE 2019 MPC/PA – Assistente Ministerial de Informática] Uma das principais características das linguagens orientadas a objetos é o polimorfismo. Ele envolve o nível de abstração desejado, a troca de mensagens entre os objetos e o comportamento do método (operação efetivamente executada).

A seguinte figura ilustra um exemplo dessa característica.

 

 

A partir dessas informações, assinale a opção correta, acerca do método CalcularSalario(), apresentado na figura.

[A] Uma única chamada a esse método pode proporcionar a ocorrência de diferentes comportamentos.

[B] O comportamento desse método, quando da sua chamada, já será definido na sua programação.

[C] Diferentes mensagens para esse método serão interpretadas de maneira única.

[D] O referido método na classe contratado-carteira é uma generalização desse mesmo método na classe funcionário.

[E] O programador escolhe polimorficamente a forma de calcular o salário de um funcionário, de acordo com a forma de contratação deste.

Comentários:

Letra A: “Uma única chamada a esse método pode proporcionar a ocorrência de diferentes comportamentos.”

CERTO. É o conceito dos métodos sobrescritos, o qual é a fonte do principal conceito sobre polimorfismo.

Letra B: “O comportamento desse método, quando da sua chamada, já será definido na sua programação.”

ERRADO. O comportamento desse método, quando da sua chamada, já será definido na subclasse específica.

Letra C: “Diferentes mensagens para esse método serão interpretadas de maneira única.”

ERRADO. Diferentes mensagens para esse método serão interpretadas de maneiras diferentes.

Letra D: “O referido método na classe contratado-carteira é uma generalização desse mesmo método na classe funcionário.”

ERRADO. O referido método na classe contratado-carteira é uma especialização desse mesmo método na classe funcionário.

Letra E: “O programador escolhe polimorficamente a forma de calcular o salário de um funcionário, de acordo com a forma de contratação deste.”

ERRADO. A máquina virtual escolhe polimorficamente a forma de calcular o salário de um funcionário, de acordo com a forma de contratação deste.

Gabarito: letra A.

 

[CESPE 2017 TRE/TO – Técnico Judiciário – Programação de Sistemas] Na orientação a objetos, a alteração do comportamento dos métodos herdados das superclasses para um comportamento mais específico nas subclasses, de forma a se criar um novo método na classe filha que contém a mesma assinatura e o mesmo tipo de retorno, relaciona-se a

[A] sobrecarga.

[B] overloading.

[C] portabilidade.

[D] abstração.

[E] sobrescrita.

Comentários:

O enunciado trouxe o conceito de métodos sobrescritos.

Gabarito: letra A.

 

[CESPE 2013 STF – Cargo 2] Em relação aos conceitos de programação orientada a objetos e lógica de programação, julgue o item subsequente.

[105] Em programação orientada a objetos, polimorfismo é o princípio pelo qual duas ou mais classes derivadas da mesma superclasse podem invocar métodos que têm a mesma assinatura, mas comportamentos distintos.

Comentários:

É o principal conceito do polimorfismo.

Gabarito: CERTO.

 

Então é isso! Abraços e até a próxima!

Rogério Araújo – Trabalha na Secretaria do Tesouro Nacional/Ministério da Fazenda, exercendo o cargo de Auditor Federal de Finanças e Controle. Formado em Bacharelado em Ciência da Computação pela UESPI (Universidade Estadual do Piauí) e especialista em Governança em TI pela Unieuro e em Desenvolvimento de Sistemas Baseados em Software Livre pela UNAMA (Universidade da Amazônia). Possui as certificações COBIT 4.1 Foundation Certified e SCJA (Sun Certified Associate for J2SE). É autor de artigos no site www.rogeraoaraujo.com.br e professor de cursos na área de Desenvolvimento de Sistemas para concursos. Foi aprovado em alguns concursos, tais como, em ordem decrescente de ano, STN 2013 (nomeado e onde estou hoje), TST 2012 (nomeado), TSE 2012 (aproveitado e nomeado no TRF 1ª Região), TRE/PE 2011 (classificado), TRT 19ª Região 2011 (classificado), MPU 2010 (classificado), STM 2010 (classificado), SERPRO 2008 (nomeado), TRT 18ª Região 2008 (classificado), MPU 2006 (classificado), BACEN 2005 (classificado), TRE/MA 2005 (classificado), TRT 16ª Região 2005 (classificado), TCE/PI 2005 (classificado) e MPU 2004 (nomeado).

WHATSAPP GCO: receba gratuitamente notícias de concursos! Clique AQUI!

CONCURSOS ABERTOS: veja aqui os editais publicados e garanta a sua vaga!

CONCURSOS 2019: clique aqui e confira as oportunidades para este ano!

Estudando para concursos públicos? Prepare-se com quem mais entende do assunto! Cursos completos 2 em 1, professores especialistas e um banco com mais de 920.000 questões de prova! Garanta já a sua vaga! Mude de vida em 2019!

Estude onde, quando, como quiser e em até 12x sem juros! Teste agora por 30 dias!

Matricule-se!

 

Quer conquistar a sua aprovação em concursos públicos?
Prepare-se com quem mais entende do assunto!
Comece a estudar no Gran Cursos
Rogério Araújo
Rogério Araújo
Auditor Federal do STN, especialista em Governança em TI e professor de Desenvolvimento de Sistemas
Clique para comentar

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Quer conquistar a sua aprovação em concursos públicos?
Prepare-se com quem mais entende do assunto!
Comece a estudar no Gran Cursos
Para o Topo