sábado, 10 de maio de 2014

Polimorfismo

Polimorfismo

Significado: Muitas Formas
É a técnica de invocar métodos de uma superclasse que tem a mesma identificação, porém com comportamento diferente especializada para aquela classe que esta sendo invocada.

Explicando melhor
Por exemplo, suponhamos que estamos fazendo um sistema de vendas de telefone  primeiro criamos a  Superclasse telefone com as características que todo telefone  tem, peso, marca ,modelo etc. Porem a loja só trabalha com dois tipos de telefone celular ou fixo, e temos a necessidade do aumento destes produtos pois a loja aumenta o preço de tempos em tempos.   Então criamos um método na Superclasse chamado de discar, quando criamos as subclasses de cada  tipo de telefone Poderemos fazer com que cada telefone tenha seu aumento diferente do outro , criando um método nesta subclasse do fixo ou celular, invocando o método aumento  da superclasse, como fixo, por exemplo, ficaria (fixo. aumento()) , com celular ficaria (celular. aumento()).

                                  Como aplica-lo no Java.
Agora vamos aplica-lo no Java suponhamos que o fixo tem 10% de aumento e o celular tenha 5% de aumento. com  base no diagrama abaixo vamos programa-lo no Java.
Criamos o método de aumento na superclasse e depois nas subclasses chamamos o método e passamos neste método o quanto que cada produto vai aumentar.








O polimorfismo e uma ação realizada de uma forma diferente como foi feito nas classes anteriores o método aumento foi usado em diferentes classes dando o aumento certo para cada produto.
  
No que Facilita a vida do programador
Como visto na programação em Java ou em qualquer outro tipo de linguagem orientada a objeto, o polimorfismo facilita a utilização do mesmo método com mais de uma forma, em mais de uma classe.
O polimorfismo facilita entendimento do código e o deixa mais limpo, em outras palavras o polimorfismo tem o objetivo de reutilização de código, que traz também maior agilidade na manutenção do sistema.
Um exemplo da facilidade do polimorfismo seria se tivéssemos um software com muitas classes, para utilizar um mesmo método para todas estas classes com um comportamento diferente teríamos que nomear estes métodos com nomes diferentes, se o softwares necessitar de 30 classes diferentes utilizando o mesmo método com comportamentos diferentes teríamos 30 métodos nomeados diferentemente e a manutenção deste software seria bem mais complexa.

Parte do site onde aborda este assunto 
 
Imagine que você é o criador do joguinho Colheita feliz ou Fazenda Feliz (sei lá), onde terá vários bichos nesse jogo. Como você é esperto, vai logo abstrair e criar uma classe "Animal" com as características que todos tem: idade, peso, espécie etc. Porém, nesse game, os animais fazem seu som característico: o cachorro late, o gato mia, o pinto pia, a vaca muge etc. E aí? Como criar um método na superclasse que sirva para todos estes animais? Ora, não cria, pois cada animal age diferente nesse aspecto.  Veja, polimorfismo é isso: embora objetos sejam da mesma superclasse, vão agir de maneira diferente em algum aspecto. Ou seja, terão várias(poli) formas diferentes (morfismo).
A saída é criar um método chamado "som()" na superclasse (só o cabeçalho, como veremos nos próximos tutoriais) e em cada subclasse criar um método diferente, que caracterize cada bicho. 
Veja que se não fizessemos isso e invocassemos os métodos: vaca.som(), cachorro.som(), gato.som(), todos iriam fazer o mesmo barulho. Com o polimorfismo: vaca.som() faria a vaquinha mugir, cachorro.som() faria o cachorro latir e gato.som() faria o objeto miar. Porém, todos continuam sendo, também, objetos da classe "Animal".  E quando chegar mais animais na sua fazenda, adicione o método som() nesse animal, de modo que ele poderá agir conforme suas características. 

Exercício Pratico

1-Com este mesmo assunto abordado neste exemplo, faça o polimorfismo de desconto no preço de 3% para telefone e 4% no celular.

 2: Crie a classe Imóvel, que possui um endereço e um preço.
a. crie uma classe Novo, que herda Imóvel e possui um adicional no preço.
b. crie uma classe Velho, que herda Imóvel e possui um desconto no preço.
Exercicio Teórico
O que você entende por polimorfismo?
R: polimorfismo é a maneira de utilizar o mesmo método em mais de um classe de uma maneira diferente.
Dos objetos abaixo separe em grupos aqueles que possuem “métodos” em comum, mas que são executados de forma diferente que apresentam polimorfismo entre eles.


R:Homem, canguru, aranha e coelho andam de maneiras diferentes.
Carro, avião, barco, transportam
Disquete e disco rígido grava informações
Computador e calculadora realizam cálculos
Avião e borboleta voam

Link do vídeo
Referencia
http://www.javaprogressivo.net/2012/10/Polimorfismo-em-Java--o-que-e-pra-que-serve-como-e-onde-usar.html


Um comentário:

  1. Tecnicamente ok, muito bom. Mas olhem o tópico e revejam os alinhamentos, acentuações, isso também é muito importante.

    abçs

    ResponderExcluir