programação orientada à objetos

21
Programação Orientada à Objetos Aula 11 – Polimorfismo

Upload: gurit

Post on 24-Feb-2016

28 views

Category:

Documents


1 download

DESCRIPTION

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 é?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programação Orientada à Objetos

Programação Orientada à Objetos

Aula 11 – Polimorfismo

Page 2: Programação Orientada à Objetos

♦ Origem da palavra?

O termo polimorfismo é originário do grego e significa “muitas formas”.

Poli = muitasMorphos = formas

Polimorfismo

Page 3: Programação Orientada à Objetos

♦ 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

Polimorfismo – O que é?

Page 5: Programação Orientada à Objetos

Polimorfismo – O que é?

Page 6: Programação Orientada à Objetos

Polimorfismo – O que é?

Page 7: Programação Orientada à Objetos

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

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

Resposta:◦ As partes do programa que exige conhecimento

direto das novas classes adicionadas

Vantagens do Polimorfismo

Page 10: Programação Orientada à Objetos

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

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

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

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

14

Sobrescrita (overriding)

Page 15: Programação Orientada à Objetos

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

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

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

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

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

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

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.