programar no geral ao invés de programar no específico permite escrever programas que processam...
TRANSCRIPT
![Page 1: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/1.jpg)
Polimorfismo em C#
![Page 2: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/2.jpg)
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
Polimorfismo
![Page 3: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/3.jpg)
Veja o diagrama
Exemplo de Polimorfismo
Ave
Animal
MacacoPeixe
![Page 4: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/4.jpg)
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
Exemplo de Polimorfismo
estendem a superclasse Animal
![Page 5: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/5.jpg)
Polimorfismo – Classe Animal
![Page 6: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/6.jpg)
Polimorfismo – Classe Peixe
![Page 7: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/7.jpg)
Polimorfismo – Classe Macaco
![Page 8: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/8.jpg)
Polimorfismo – Classe Ave
![Page 9: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/9.jpg)
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– Programa Principal
![Page 10: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/10.jpg)
Polimorfismo– Programa Principal
![Page 11: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/11.jpg)
Conceito chave de polimorfismo:
◦ Cada objeto sabe fazer a coisa certa em resposta à mesma chamada de método!
Polimorfismo
![Page 12: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/12.jpg)
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
![Page 13: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/13.jpg)
Resposta:◦ As partes do programa que exige conhecimento
direto das novas classes adicionadas
Vantagens do Polimorfismo
![Page 14: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/14.jpg)
Qual a diferença entre polimorfismo e herança?
Polimorfismo
![Page 15: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/15.jpg)
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
![Page 16: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/16.jpg)
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
![Page 17: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/17.jpg)
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
Polimorfismo
![Page 18: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/18.jpg)
Para utilizar polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamento diferente
Mais de Polimorfismo
![Page 19: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/19.jpg)
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
Mais de Polimorfismo
![Page 20: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/20.jpg)
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
![Page 21: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/21.jpg)
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
Interface - exemplo
![Page 22: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/22.jpg)
Interface - exemplo
![Page 23: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/23.jpg)
Interface – Classe para SqlServer
![Page 24: 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](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc12c497959413d8d228e/html5/thumbnails/24.jpg)
Interface – Classe para MySql