Polimorfismo

Porque irmãos nunca são iguais.

Lia Kassardjian
Zero e Umas
3 min readAug 28, 2020

--

Em outros artigos do Zero e Umas, conversamos sobre objetos e sobre a possibilidade de classes derivadas herdarem características de suas classes base. Você pode conferir os artigos nesses links:

O Polimorfismo

Na programação, classes podem gerar outras classes, assim como pais geram filhos. Se formos fazer uma comparação com o mundo real, podemos dizer que classes com mesmos "pais" são classes "irmãs".

Photo by Eye for Ebony on Unsplash

Mas, como sabemos, por mais que irmãos sejam muito parecidos, nunca são iguais. Da mesma forma, na programação, podemos ter várias subclasses, herdando características das mesmas superclasses, mas diferentes entre si. Na Orientação a Objetos, chamamos isso de Polimorfismo.

Classes derivadas de uma mesma classe base podem implementar métodos que, apesar de terem a mesma assinatura, comportam-se de maneira diferente em cada classe.

O Programa

No artigo sobre herança de classes, analisamos um exemplo em que havia uma classe Mamífero, da qual duas classes, Cachorro e Gato, herdavam. Vamos relembrar o diagrama de classes:

Diagrama de Classes: Cachorro e Gato herdam de Mamífero

Ambos Cachorro e Gato se comunicam, mas fazem isso de maneiras diferentes, pois o cachorro late, enquanto o gato mia.

Também fizemos uma implementação básica das classes Mamífero e Cachorro em C++, para exemplificar a herança. Vamos relembrar o código:

Como observamos no código, comunicar() é uma função de todos os mamíferos, mas os cachorros se comunicam de forma única deles. Se chamarmos a função comunicar() a partir de uma instância de Mamífero, obteremos o resultado "Comunicar!", enquanto para uma instância de Cachorro, o resultado é "Latido!". Como poderíamos, então, implementar a comunicação de gatos?

Vamos construir a classe Gato:

Podemos observar que é muito similar à classe Cachorro, a diferença está na implementação de comunicar(), que, no caso de gatos, resulta em "Miado!".

Vamos rodar nosso código e observar como ele se comporta. Na função main() do programa, vamos instanciar três objetos diferentes: um mamífero, um cachorro e um gato. Ao fazer isso, vamos analisar como cada um deles implementou o método comunicar().

Criamos aqui três objetos e chamados o método comunicar() para cada um deles. Ao executar, obtemos o resultado:

Comunicar!
Latido!
Miado!

Apesar dos três objetos chamarem um método com a mesma assinatura, o comportamento da função é diferente para cada classe. Isso é polimorfismo!

Obrigada por ler esse artigo! Deixe um comentário abaixo se tiver alguma dúvida. Não esqueça de nos seguir aqui no Medium e nossa Newsletter, para as dicas, aulas e notícias sobre tecnologia, feito por mulheres para mulheres. Nos siga também no Instagram, para se conectar mais ainda com o Coletivo Zero e Umas!

A Lia Kassardjian é uma das integrantes do Coletivo Zero e Umas! Ela estuda Ciência da Computação e quer ajudar a trazer mais mulheres para o ambiente científico. Música e Programação são duas de suas paixões!

Você consegue se conectar com ela no LinkedIn, Medium, ou nos seguindo através do Instagram.

--

--