1 / 21

Programação Orientada à Objetos

Programação Orientada à Objetos. Aula 11 – Polimorfismo. Polimorfismo. ♦ Origem da palavra? O termo polimorfismo é originário do grego e significa “muitas formas”. Poli = muitas Morphos = formas. Polimorfismo – O que é?.

gurit
Download Presentation

Programação Orientada à Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação Orientada à Objetos Aula 11 – Polimorfismo

  2. Polimorfismo ♦ Origem da palavra? O termo polimorfismo é originário do grego e significa “muitas formas”. Poli = muitas Morphos = formas

  3. Polimorfismo – O que é? ♦ A POO diz que Polimorfismo nada mais é que uma referência de uma classe abstrata a uma classe concreta, também é a capacidade de um operador executar a ação operada dependendo do tipo do operando. ♦ Em outras palavras, várias formas de fazer várias coisas.

  4. Polimorfismo – O que é?

  5. Polimorfismo – O que é?

  6. Polimorfismo – O que é?

  7. Polimorfismo • Conceito chave de polimorfismo: • Cada objeto sabe fazer a coisa certa em resposta à mesma chamada de método!

  8. 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 • Através da utilização do Polimorfismo é possível trazer clareza ao código, diminuir linhas do mesmo e ainda é possível inserir aplicações flexíveis. • O que é necessário alterar no programa quando uma nova classe é gerada?

  9. Vantagens do Polimorfismo • Resposta: • As partes do programa que exige conhecimento direto das novas classes adicionadas

  10. Mais de Polimorfismo • Para utilizar polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamento diferente

  11. 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

  12. Formas de Polimorfismos • Sobrescrita (overriding): mesma função mas comportamentos diferentes. • Sobrecarga(overloading): nome de uma função usado mais de uma vez com diferentes tipos de parâmetros.Ex: operação soma com dois parâmetros reais e outra com parâmetros inteiros.

  13. Sobrescrita (overriding) • Recurso da linguagem onde uma impleemntação específica é provida pela subclasse de algum método já provido pela superclasse. • A implementação da subclasse substitui a implementação da classe pai. • Métodos sobrescritos DEVEM possuir a mesma assinatura (tipo de retorno, nome do método, tipos e quantidade de parâmetros).

  14. Sobrescrita (overriding)

  15. Sobrescritas de função Capacidade de um objeto responder com diferentes comportamentos uma mesma solicitação Exemplo: • Suponha um método que receba um objeto ContaEmBanco e • que neste método seja solicitado a ativação do método Sacar. • O comportamento do objeto vai ser diferente em função do • objeto real: • 1 - ContaEspecial permite que o saldo fique negativo • 2 - ContaComum não O comportamento do objeto será relativo ao objeto real a qual é feita a referência

  16. Sobrecarga(overloading) • Em orientação a objetos, uma sobrecarga refere-se aos métodos de uma classe, sendo que os mesmos podem ser sobrecarregados em relação aos seus nomes, podendo diversos métodos possuir o mesmo nome, porém a os tipos de dados da lista de parâmetros deve ser divergente, conforme pode ser observado na Figura 3.

  17. Sobrecarga(overloading) • No exemplo presente na Figura 3, pode-se observar a repetição da declaração do método escreverNome(), porém nota-se também a diferenciação de seus parâmetros (ora sem parâmetros, ora um texto, ora um número). • Esta situação deixa clara a existência de comportamentos diferentes para um único serviço. • Esta diferenciação deve ser controlada na classe que implementa os métodos, podendo ainda o método invocado chamar outro método de mesmo nome (porém com lista de parâmetros diferente).

  18. Sobrecarga de função Atribui a um único operador a capacidade de agir de diferentes formas em função dos parâmetros recebidos Exemplo: • Na classe ContaEmBanco, o método Depositar possui • duas implementações diferentes: • 1 - uma para depósitos em dinheiro • 2 - outra para depósitos em cheque O serviço escolhido depende do parâmetro enviado junto à ativação do serviço (cheque ou dinheiro)

  19. Sobrecarga de Construtores: • Podemos definir mais de que um construtor seguindo as mesmas regras de sobrecarga de métodos. • A partir do momento em que definimos um construtor diferente do default, o compilador não irá mais aceitar o construtor default.

  20. Resumo (Sobrecarga x Sobreposição) • Sobrecarga • Métodos com mesmo nome, mas assinaturas diferentes • Não necessita herança • Sobreposição (sobrescrita) • Métodos com mesmo nome e assinatura • Necessita de herança

  21. Exercícios • O que é polimorfismo em POO? Quais são seus benefícios? • Qual a diferença entre herança e polimorfismo? • Qual a diferença entre sobrecarga e sobrescrita? • De exemplos práticos (reais) de aplicação de uma sobrecarga e de uma sobrescrita.

More Related