Definimos Polimorfismo como um princípio a partir do qual as classes derivadas de uma única classe base são capazes de invocar os métodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas.
O Polimorfismo é um mecanismo por meio do qual selecionamos as funcionalidades utilizadas de forma dinâmica por um programa no decorrer de sua execução.
Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porém, com implementações lógicas diferentes.
Por exemplo: podemos assumir que uma bola de futebol e uma camisa da seleção brasileira são artigos esportivos, mais que o cálculo deles em uma venda é calculado de formas diferentes.
Outro exemplo: podemos dizer que uma classe chamada Vendedor e outra chamada Diretor podem ter como base uma classe chamada Pessoa, com um método chamado CalcularVendas. Se este método (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instância de Vendedor e para as chamadas feitas a partir de uma instância de Diretor, ele será considerado um método polimórfico, ou seja, um método de várias formas.
Assim podemos ter na classe base o método CalcularVendas:
public decimal CalcularVendas()
{
decimal valorUnitario = decimal.MinValue;
decimal produtosVendidos = decimal.MinValue;
return valorUnitario * produtosVendidos;
}
Na classe Vendedor temos o mesmo método, mais com a codificação diferente:
public decimal CalcularVendas()
{
decimal valorUnitario = 50;
decimal produtosVendidos = 1500;
return valorUnitario * produtosVendidos;
}
O mesmo ocorre na classe Diretor:
public decimal CalcularVendas()
{
decimal valorUnitario = 150;
decimal produtosVendidos = 3800;
decimal taxaAdicional = 100;
return taxaAdicional + (valorUnitario * produtosVendidos);
}
Links Úteis
- Documentação: Java: Declaração e utilização de classes.
- Minha primeira aplicação C#.
- Carreira Programador .NET.
Saiba mais sobre Orientação a objetos ;)
- Principais conceitos da Programação Orientada a Objetos: Neste artigo serão mostrados os principais conceitos do paradigma da programação Orientada a Objetos. Veja também como implementar os conceitos de POO com exemplos em Java.
- Orientação a Objetos - simples assim!: Antes de nos aventurarmos no universo dos Games ou da Web, precisamos conhecermos bem, alguns fundamentos básicos. A POO (Programação Orientada a Objetos) não é um paradigma ou conceito de desenvolvimento de software moderno.
- Fundamentos básicos da Orientação a Objetos: Este artigo trata sobre os principais fundamentos da orientação a objetos em C# explicando os conceitos de abstração, herança e polimorfismo.