Buscar

Slides15 Polimorfismo.ppt

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

POO 
Slides 15 – Polimorfismo 
Universidade Federal do Ceará 
Prof. Marcos Antonio de Oliveira 
Quixadá-CE, 22/11/2010 
Sistema de Instrumentos 
•  Imagine o sistema a seguir: 
Sistema de Instrumentos 
•  Podemos fazer alguma observações sobre este sistema: 
–  Um violão é um instrumento, portanto violão herda de 
Instrumento; 
–  Um saxofone é um instrumento, portanto saxofone herda de 
Instrumento; 
–  Uma flauta é um instrumento, portanto o flauta herda de 
Instrumento; 
–  O método tocar é um método que foi definido em Instrumento 
e sobrescrito em cada classe filha (Violão, Saxofone e Flauta). 
Sistema de instrumentos 
•  A classe música (Ou banda como queira chamar) faz uma 
agregação dos instrumentos; 
•  Uma banda tem um instrumento, tem um violão, tem um 
saxofone, tem uma flauta; 
Implementação do sistema 
Implementação do sistema 
•  Até o momento para instanciarmos nossos objetos fazíamos 
o seguinte: 
 
 Instrumento i = new Instrumento(); 
 Violao v = new Violao(); 
 Flauta f = new Flauta(); 
 Saxofone s = new Saxofone(); 
 
•  Ou seja, a referência apontava sempre para um objeto do 
mesmo tipo. 
Ligação precoce 
•  Neste caso quando acessamos o método sobrescrito 
tocar, fazemos da seguinte maneira: 
•  Em tempo de compilação sabemos que a chamada ao método 
tocar da linha 6 executará de acordo com o código definido em 
instrumento; 
•  Isto é conhecido como ligação precoce, pois em tempo de 
compilação o compilador já liga a chamada do método ao 
código que vai executar, ou seja, ele sabe que método irá 
executar em tempo de compilação; 
Ligação tardia 
•  Em java podemos Criar uma referência do tipo de uma 
classe pai e fazê-la referenciar um objeto de uma de suas 
classes filha; 
•  Um exemplo segue abaixo: 
 
 Instrumento i = new Flauta(); 
 
•  Observe: 
–  A referência deve ser definida a partir da classe pai, neste caso 
a classe instrumento é a classe pai como mostrado 
anteriormente; 
–  O objeto criado com o new é de qualquer uma das classes 
filhas, neste caso a classe Flauta foi utilizada; 
 
Ligação tardia 
Flauta 
tocar(String 
nota) 
teste() 
i 
Ligação tardia 
•  Neste caso o método tocar será executado de acordo com a 
classe Flauta; 
•  Isto pode ficar transparente para nós, mas o compilador faz 
esta ligação apenas em tempo de execução; 
•  Como a ligação entre a chamada do método e o código que ele 
irá executar é feita apenas em tempo de execução, este 
processo é conhecido como ligação tardia; 
Ligação tardia 
•  Neste caso podemos acessar apenas os métodos que foram 
definidos na classe pai; 
•  Se formos acessar o método teste, por exemplo, vai dar 
erro! 
 i.teste(); 
 
•  Teste é um método que foi definido em Flauta e que a 
classe Instrumento não possui; 
 
Conceitos de polimorfismo 
•  Polimorfismo é o princípio pelo qual duas ou mais classes 
derivadas de uma mesma superclasse podem invocar 
métodos que têm a mesma identificação (assinatura) mas 
comportamentos distintos, especializados para cada classe 
derivada, usando para tanto uma referência a um objeto do 
tipo da superclasse. 
•  Possibilidade dos objetos de comportarem-se de maneiras 
diferentes, de acordo com a sua implementação, ao receber 
uma mesma mensagem. 
Conceitos de polimorfismo 
•  Em particular, o polimorfismo permite escrever programas 
que processam objetos que compartilham a mesma 
superclasse em uma hierarquia de classes como se todas 
fossem objetos da superclasse. (Deitel) 
•  Para os exemplos a seguir considere as classes 
Instrumento, Violao, Flauta e Saxofone que foram 
apresentadas anteriormente; 
Exemplos de polimorfismo 
Exemplos de polimorfismo 
Polimorfismo 
•  Que método tocar será chamado na linha 26 da classe 
música? 
•  R – Não podemos afirmar isto em tempo de compilação, ele 
poderá ser executado de VÁRIAS FORMAS. Poderemos 
definir a execução apenas em tempo de execução. 
•  O método tocar está sendo executado polimorficamente nas 
classes Musica e Musica2; 
Exercício 
•  Crie um programa com as classes Figura, Retangulo, Circulo 
e Quadrado. 
•  Essas classes devem ter o método desenhar() que imprimirá 
uma mensagem informando que a figura está sendo 
desenhada. 
•  O método desenhar deve ser redefinido nas subclasses de 
figura. 
•  Crie uma classe Principal para imprimir figuras utilizando 
polimorfismo! 
•  Realize a escolha de que Figura será instanciada em tempo 
de execução. 
31/05/17 17 Prof. Marcos Antonio de Oliveira

Outros materiais