programação orientada à objetos aula 11 – polimorfismo
TRANSCRIPT
![Page 1: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/1.jpg)
Programação Orientada à Objetos
Aula 11 – Polimorfismo
![Page 2: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/2.jpg)
♦ Origem da palavra?
O termo polimorfismo é originário do grego e significa “muitas formas”.
Poli = muitasMorphos = formas
Polimorfismo
![Page 3: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/3.jpg)
♦ 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.
Polimorfismo – O que é?
![Page 4: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/4.jpg)
Polimorfismo – O que é?
![Page 5: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/5.jpg)
Polimorfismo – O que é?
![Page 6: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/6.jpg)
Polimorfismo – O que é?
![Page 7: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/7.jpg)
Conceito chave de polimorfismo:
◦ Cada objeto sabe fazer a coisa certa em resposta à mesma chamada de método!
Polimorfismo
![Page 8: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/8.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
◦ 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?
Vantagens do Polimorfismo
![Page 9: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/9.jpg)
Resposta:◦ As partes do programa que exige conhecimento
direto das novas classes adicionadas
Vantagens do Polimorfismo
![Page 10: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/10.jpg)
Para utilizar polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamento diferente
Mais de Polimorfismo
![Page 11: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/11.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 12: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/12.jpg)
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.
![Page 13: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/13.jpg)
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).
![Page 14: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/14.jpg)
14
Sobrescrita (overriding)
![Page 15: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/15.jpg)
15
Sobrescritas de função
Capacidade de um objeto responder comdiferentes comportamentos uma mesma solicitação
Exemplo:
Suponha um método que receba um objeto ContaEmBanco eque neste método seja solicitado a ativação do método Sacar.O comportamento do objeto vai ser diferente em função doobjeto real:
1 - ContaEspecial permite que o saldo fique negativo2 - ContaComum não
O comportamento do objeto será relativo aoobjeto real a qual é feita a referência
![Page 16: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/16.jpg)
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.
![Page 17: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/17.jpg)
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).
![Page 18: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/18.jpg)
18
Sobrecarga de função
Atribui a um único operador a capacidade de agir dediferentes formas em função dos parâmetros recebidos
Exemplo:
Na classe ContaEmBanco, o método Depositar possuiduas implementações diferentes:
1 - uma para depósitos em dinheiro2 - outra para depósitos em cheque
O serviço escolhido depende do parâmetroenviado junto à ativação do serviço
(cheque ou dinheiro)
![Page 19: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/19.jpg)
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.
![Page 20: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/20.jpg)
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
![Page 21: Programação Orientada à Objetos Aula 11 – Polimorfismo](https://reader036.vdocuments.mx/reader036/viewer/2022081504/552fc134497959413d8d8073/html5/thumbnails/21.jpg)
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.