260 likes | 520 Views
Polimorfismo em C#. Polimorfismo. Programar no geral ao invés de programar no específico Permite escrever programas que processam objetos que compartilham a mesma classe base em uma hierarquia de classes, como se todas fossem objetos da classe base. Exemplo de Polimorfismo.
E N D
Polimorfismo • Programar no geral ao invés de programar no específico • Permite escrever programas que processam objetos que compartilham a mesma classe base em uma hierarquia de classes, como se todas fossem objetos da classe base
Exemplo de Polimorfismo • Veja o diagrama Animal Peixe Macaco Ave
Exemplo de Polimorfismo • Programa de simulação de movimento de vários tipos de animais para um estudo biológico • Três tipos de animais sob investigação: • Peixe • Macaco • Ave • Animal contém método mover estendem a superclasse Animal
Polimorfismo– Programa Principal • No programa principal criamos um vetor de referências a objetos dasvárias subclasses Animal simulando os movimentos • Programa envia mensagem a cada objeto e cada tipo específico de Animal responde à mensagem de maneira diferente • Peixe – nada 1 metro • Macaco – pula 1 ½ metro • Pássaro – voa 3 metros
Polimorfismo • Conceito chave de polimorfismo: • Cada objeto sabe fazer a coisa certa em resposta à mesma chamada de método!
Vantagens do Polimorfismo • Projeto e implementação de sistemas que são facilmente extensíveis • Novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação • O que é necessário alterar no programa quando uma nova classe é gerada?
Vantagens do Polimorfismo • Resposta: • As partes do programa que exige conhecimento direto das novas classes adicionadas
Polimorfismo • Qual a diferença entre polimorfismo e herança?
Polimorfismo • Herança: objeto éinstanciado e o método é chamado diretamente do objeto • Peixe p = new Peixe(); • p.mover(); • Polimorfismo: o método a ser executado é decidido em tempo de execução • Animal vetor[] animais; • // animais são inicializados e instanciados • animais[i].mover();
Polimorfismo • Programadores tratam generalidades • Ambientes de execução tratam de especificidades • Programadores instruem objetos a se comportarem de maneira apropriada, sem nem mesmo conhecer seus tipos
Polimorfismo • Polimorfismo promove extensibilidade • O software que invoca comportamento polimórfico é independente dos tipos para os quais as mensagens são enviadas • Novos tipos de objetos que podem responder a chamadas de método existente podem ser incorporados sem exigir modificações no sistema básico
Mais de Polimorfismo • Para utilizar polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamento diferente
Mais de Polimorfismo • OO oferece uma capacidade que exige que classes não relacionadas implementem um conjunto de métodos comuns? • Em outras palavras: • Há como forçar que a implementação de uma ação comum a classes de objetos diferentes sejam implementadas nessas classes? • Ex: mover para Macaco, Pássaro e Peixe
Interface • Resposta: SIM! Interfaces • Interfaces que definem e padronizam coisas, pessoas e sistemas podem interagir entre si • Uma interface contém apenas as assinaturas de métodos, propriedades, eventosou indexadores • A implementação de membros é feita na classe ou struct que implementa a interface, conforme o exemplo seguinte:
Interface - exemplo • Construir uma biblioteca de classes para comunicação com banco de dados • Criamos uma interface para que todos as classes a implementem, assim todas terão os mesmos métodos