Polimorfismo
Centro Federal de Educação Tecnológica Celso Suckow da Fonseca CEFET-RJ
Modelo 2011/2012 1
Polimorfismo
• Permite “programar no geral” em vez de “programar no específico”. • O polimorfismo permite escrever programas que processam objetos que compartilham a mesma superclasse como se todas fossem objetos da superclasse; isso pode simplificar a programação.
2
Exemplo
• Suponha que criamos um programa que simula o movimento de vários tipos de animais para um estudo biológico. As classes Peixe, Anfíbio e Pássaro representam os três tipos de animais sob investigação.
– Cada classe estende a superclasse Animal, que contém um método mover e mantém a localização atual de um animal como coordenadas x-y. Toda subclasse implementa o método mover. – Um programa mantém um array Animal que contém referências a objetos das várias subclasses Animal. Para simular os movimentos dos animais, o programa envia a mesma mensagem a cada objeto uma vez por segundo — a saber, move.
3
Exemplo (continuação)
• Cada tipo específico de Animal responde a uma mensagem mover de uma maneira única:
– um Peixe poderia nadar um metro – um Sapo poderia pular um metro e meio – um Pássaro poderia voar três metros.
• O programa emite a mesma mensagem (isto é, mover) para cada objeto animal, mas cada objeto sabe como modificar suas coordenadas x-y apropriadamente de acordo com seu tipo específico de movimento. • Contar com o fato de que cada objeto sabe como “agir corretamente” em resposta à mesma chamada de método é o conceito-chave do polimorfismo. • A mesma mensagem enviada a uma variedade de objetos tem “muitas formas” de resultados — daí o termo polimorfismo. 4
Extensibilidade
• Com o polimorfismo, podemos projetar e implementar sistemas que são facilmente extensíveis.
– Novas classes podem ser adicionadas com pouca ou nenhuma modificação a partes gerais do programa, contanto que as novas classes sejam parte da hierarquia de herança que o programa