Polimorfismo

23
Polimorfismo Tiago Alves de Oliveira Tiago Alves de Oliveira 1

description

Aula de Polimorfismo em JAVA

Transcript of Polimorfismo

PolimorfismoTiago Alves de OliveiraTiago Alves de Oliveira 1Polimorfismo O poliformismo deriva da palavra polimorfo, que significa multiforme, ouque pode variar a forma. Para a POO, polimorfismo a habilidade de objetos de classes diferentesresponderema mesma mensagemde diferentes maneiras. Ou seja,vrias formas de responder mesma mensagem.Tiago Alves de Oliveira 2PolimorfismoTiago Alves de Oliveira 3Polimorfismo Vejamos o seguinte exemplo: um dono de uma fbrica de brinquedos solicitou que seus engenheiros criassem ummesmo controle remoto para todos os brinquedos de sua fbrica. Anica restrio era que cada brinquedo atendesse aos comandos especficosdefinidos pelo controle.Tiago Alves de Oliveira 4PolimorfismoTiago Alves de Oliveira 5Polimorfismo Assim quando o brinquedo recebe o sinal MOVER, ele se move de acordo com a sua funo. Para o avio, mover significa VOAR; Para o barco significa NAVEGAR, e Para o automvel CORRER. Observe que os brinquedos respondem ao mesmo sinal de formas diferentes.Tiago Alves de Oliveira 6 O Polimorfismo permite que diferentes objetos (avio, barco, automvel) respondam uma mesma mensagem (mover) de formas diferentes (voar, navegar e correr).PolimorfismoTiago Alves de Oliveira 7Polimorfismo Tipos de polimorfismo O Polimorfismo pode ser classificado de trs maneiras: Polimorfismo de Sobrecarga Polimorfismo de Sobreposio Polimorfismo de InclusoTiago Alves de Oliveira 8Polimorfismo Polimorfismo de Sobrecarga Permite que um mtodo de determinado nome tenha comportamentos distintos, emfuno de diferentes parmetros que ele recebe. Cada mtodo difere no nmero eno tipo de parmetros.Tiago Alves de Oliveira 9Polimorfismo Veja no exemplo uma aplicao prtica do uso do polimorfismo de sobrecarga.Tiago Alves de Oliveira 10Polimorfismo A sobrecarga e os construtores O polimorfismo de sobrecarga normalmente acontece sobre os mtodosconstrutores, pois comum para uma classe ter vrias maneiras de instanci-la. O programa abaixo ilustra um exemplo de polimorfismo de sobrecarga nosconstrutores da classe Pessoa.Tiago Alves de Oliveira 11Polimorfismo Observe que so declarados 3 construtores e todos eles tm o mesmo nome da classe. Entretanto,cada um deles recebe um nmero diferente de parmetros.Tiago Alves de Oliveira 12Polimorfismo Polimorfismo de Sobreposio a redefinio de mtodos em classes descendentes. Ou seja, um mtodo de umaclasse filha com o mesmo nome de um mtodo de uma classe me ir sobrepor esseltimo. Vejamos o exemplo.Tiago Alves de Oliveira 13Polimorfismo O polimorfismo de sobreposio em Java ConsiderequeaclasseBrinquedopossui comodescendentesasclassesCarro,Avio e Barco, conforme ilustra a Figura. Observe que as classes filhas sobrepem o mtodo mover() da classe Brinquedo.Tiago Alves de Oliveira 14Polimorfismo Vejamosentocomoficam essas classescodificadas em Java.Tiago Alves de Oliveira 15Polimorfismo Considerandoomtodomover()decadaclassefilha, comopoderamoschamar o mtodo mover() do brinquedo (classe) correto? Ou seja, como oControleRemoto saber que mtodo mover ele deve chamar se ele temdisponvel trs tipos de mover diferentes (um para cada brinquedo)?Tiago Alves de Oliveira 16Polimorfismo Vamos ver inicialmente como fica a implementao do Controle Remoto.Tiago Alves de Oliveira 17Polimorfismo OprogramamostracomoficaaclassePrincipal queinstanciaumobjetocontroleRemoto e um objeto carro para ser controlado automaticamente. Foi criado um brinquedo do tipo Carro, e o ControleRemoto. Foi enviado o objeto carro para o objeto controleRemoto atravs da chamada ao seuconstrutor. Assim, quando acionado o comando controleRemoto.mover(), ser chamado omtodo mover() do carro.Tiago Alves de Oliveira 18Atividade Implemente as classes da hierarquia da classe Figura Geometrica mostrada naFigura abaixoemJava, aplicandoopolimorfismodesobreposiopara omtodo desenha(). Emseguida, crieumaclassePrincipal comummtodomainquecriaumobjeto de cada uma das classes e chama seus respectivos mtodos desenha().Tiago Alves de Oliveira 19Polimorfismo Polimorfismo de Incluso No exemplo visto anteriormente, em que na classe Principal, foi criado um objetodotipoCarroeoutrodotipoControleRemoto, utilizou-seopolimorfismodeincluso. Isso foifeito substituindo a classe Brinquedo pela classe Carro dentro da classeControleRemoto.Tiago Alves de Oliveira 20Polimorfismo Veja a Figura. Tiago Alves de Oliveira 21Polimorfismo Observe que a classe ControleRemotoest relacionada coma classeBrinquedo, pois possui um atributo do tipo Brinquedo. Mas, como as classes Carro, Avio e Barco so do tipo Brinquedo, elaspodem substituir a classe Brinquedo em qualquer mtodo que a utilize. A capacidade do objeto (brinquedo) do tipo Brinquedo da classeControleRemotodereceber qualquer umobjetodesubclasses da classeBrinquedo que caracteriza o polimorfismo de incluso.Tiago Alves de Oliveira 22Trabalho Faa um exemplo prtico para apresentar os seguintes conceitos em Java. Static Interface, Implements e AbstractTiago Alves de Oliveira 23