Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

sábado, 18 de junho de 2011

...tentando entender Polimorfismo em Java! Pedi a meu amigo Ivan pra explicar.

By @Ivan_Lavanarc


Pois é.... nem só de hardware vive o homem! bora falar de coisa boa? Bora falar de java! Pedi a meu amigo e grande programador em Java, IVAN KNOW, pra falar um pouco sobre polimorfismo em java. blz então? ....


Um assunto abordado em todo curso que tem algum envolvimento com orientação a objeto é o Polimorfismo. Na minha vida de programador já vi muitas definições explicações sobre esse tema e a única coisa que fica clara é que Polimorfismo é uma palavra que vem do grego onde Poli significa muitos e morfus significa forma sendo assim a capacidade de assumir muitas formas. Até esse ponto todo mundo entende, mas quando começa o assunto de verdade, a maioria das pessoas que eu conheço (inclusive eu) não entende muita coisa e acaba tornando esse assunto algo evitado quando está escrevendo seus códigos. No entanto o Polimorfismo é uma propriedade da  Orientação a objeto muito útil que nos permite estruturar computacionalmente problemas reais com muito mais precisão.  Nesse artigo irei mostrar alguns exemplos de como o polimorfismo acontece na linguagem Java e qual são as vantagens de se utilizar esse recurso.

Na linguagem Java existem 3 tipos básicos de polimorfismo:  Paramétrico, Inclusão e Sobrecarga. O polimorfismo paramétrico é aquele no qual o tipo que o objeto vai assumir durante a execução do programa é passado a ele como parâmetro. As classes que tem essa propriedade de assumir tipos passados por parâmetros são conhecidas como classes genéricas.Um exemplo comum da aplicação desse tipo de polimorfismo se encontra quando utilizamos estruturas de dados já disponíveis no Java padrão como por exemplo a classe Vector. Veja o exemplo a seguir:


Figura 1. Exemplo 1.

Outro tipo de polimorfismo, que é talvez o mais utilizado, é o polimorfismo de sobrecarga no qual podemos escrever métodos com mesmo nome e diferentes parâmetros, dessa forma podemos de acordo com a forma de entrada proceder de forma diferente. Veja o exemplo:


Figura 2. Exemplo 2.


Agora chamamos os dois métodos e de acordo com a entrada eles, que parecem ser o mesmo, tem comportamentos diferentes

Figura 3. Exemplo Polimorfismo.


O terceiro tipo é o polimorfismo de inclusão, no qual construir um objeto do tipo Superclasse(classe pai) com o construtor de uma de suas subclasses(classe filha) . Esse tipo de polimorfismo é o mais discutido em sala de aula e é também o que a maioria das pessoas tem dúvida. No exemplo a seguir temos a classe “Pessoa” e a classe “PessoaFisica” que é herdeira da classe pessoa. A idéia é construir um objeto pessoa física numa variável do tipo Pessoa. A seguir mostrarei a estrutura das classes e um código utilizando o polimorfismo:


Figura 4. Classe Pessoa.

Figura 5. Pessoa Física.


Figura 6. Exemplo 3.


Esse último tipo de polimorfismo talvez seja o que traz mais vantagens para o programador, mas muitos programadores ao olharem esse código se perguntam “Qual a utilidade de construir uma classe pai com o construtor de uma classe filha? “. A resposta pra essa pergunta da pra fazer outro artigo(que eu pretendo fazer em breve), pois são muitas a ocasiões que esse recurso é muito útil. Mas, sucintamente, a utilidade desse tipo de polimorfismo é que em momentos diferentes do seu programa você vai precisar que um mesmo objeto se comporte de forma diferente mas esse assunto fica pra próxima.

5 comentários: