Ola Andre e Christian (e lista),

Essa "nova" discussao sobre polimorfismo iniciou-se qdo eu enviei a citacao 
do Bruce Eckel. Antes q isso vire off-topic e uma guerra, deixe-me explicar 
pra todo mundo o q acontece e pq este assunto eh pertinente (espero q seja a 
ultima vez... :-))

-> O que eh polimorfismo?

Ateh o inicio da decada de 90, polimorfismo era (com certeza, 
indiscutivelmente) a capacidade presente no C de se declarar uma funcao com 
um mesmo nome e varios argumentos - void funcao(int a), void funcao(int a, 
int b).
Com o surgimento das linguagens orientadas a objeto, polimorfismo passou a 
ser definido como a capacidade de uma chamada de metodo sempre acontecer no 
ultimo objeto da hierarquia que o redefine (em Java eh assim, em C++ eh 
preciso usar virtual).
No contexto de OOP, polimorfismo conforme definido somente no paragrafo 
acima (juntamente com abstracao de dados, encapsulamento e heranca) passou a 
ser um dos conceitos essenciais para que uma linguagem pudesse ser 
considerada orientada a objetos. A primeira definicao deveria continuar 
sendo usada somente nas linguagens antigas, mas jah q Java e C++ suportam 
overloading, alguns autores continuaram utilizando o termo
polimorfismo para se referiri a ele tb. Aih comeca nossa discussao...

-> Por q ha esssa discussao?

Ha duas semanas atras, alguem na lista falou q estava lendo um livro sobre 
Java e disse que este livro SOH CONSIDERAVA POLIMORFISMO COMO OVERLOADING, 
ALGO COMPLETAMENTE INCONCEBIVEL MESMO PARA OS QUE DEFENDEM Q OVERLOADING TB 
EH POLIMORFISMO. Daih, eu e o Sven nos revezamos (pode-se dizer) para 
explicar q o termo polimorfimo (DENTRO DO CONTEXTO OOP) se aplica a 
OVERRIDING ou DYNAMIC BINDING.

-> Pq a discussao eh pertinente?

Conforme jah explicado, polimorfismo (significando overriding) eh um dos
conceitos essenciais da OOP (object-oriented programming ou POO ou OO, como 
desejarem). Se vc nao sabe como funciona  a ligacao dinamica, entao vc vai 
ter SERIOS PROBLEMAS EM JAVA. Por isso q eu disse q era um conceito basico, 
no sentido de ser ESSENCIAL, A BASE PARA PROGRAMAR BEM EM JAVA.
Se polimorfismo tb pode ser aplicado a overloading (q tb eh uma "feature" 
utilissima do Java, indiscutivelmente) eh uma questao quase religiosa em q 
cada um faz sua decisao. O grande ponto da questao eh q, qdo disserem 
polimorfismo no contexto OOP, sempre pense somente em OVERRIDING. Agora, qdo 
ponto for somente PROGRAMACAO JAVA, aih vc decide se polimorfismo tb eh 
overloading ou nao. Como alguns acham (eu nao, but anyway) q religiao nao se 
discute, eh bom a gente parar por aki.


Espere q tenha ficado claro o ponto. Respeito a opiniao dos colegas q acham 
q o termo polimorfismo tb deveria ser aplicado a overloading e reconheco q 
uma traducao literal do termo (muitas formas) poderia induzir alguem a 
aceitar a ideia, mas por razoes historicas, mantenho minha opiniao sobre se 
aplicar somente  a overriding, dynamic binding e afins.
Poderiamos fazer 12.000.000 de citacoes de livros e nunca chegariamos a 
lugar algum, jah q comecariamos a discutir quem acha qual autor melhor q o 
outro - e aih entrariamos em uma discussao completamente pessoal e 
off-topic.
Em suma:

-> Polimorfismo significa muitas formas;
-> Polimorfismo eh um dos conceitos essenciais da OOP;
-> Dentro do contexto OOP, polimorfismo refere-se unica e exclusivamente a 
overloading, dynamic binding e afins;
-> Dentro do contexto de programacao, alguns afirmam q polimorfismo tb se 
aplica a overloading, conceito este q vem da epoca em q existia somente o C 
e do qual alguns discordam;
-> Overriding e dynamic binding sao essenciais para q o Java seja 
considerado uma linguagem orientada a objetos, enquanto overloading existe 
em varias linguagens nao-orientadas tb, o q nao faz com q deixe de ser uma 
caracteristica extremamente util do Java
-> CHEGA DE DISCUTIR POLIMORFISMO; CADA UM DECIDA SE ACHA Q O TERMO SE 
APLICA, ALEM DE A OVERRIDING (O Q EH INDISCUTIVEL) TB A OVERLOADING (EU, 
SVEN E OUTROS - NAO, ANDRE, CHRISTIAN E OUTROS - SIM).

Obrigado pela atencao e paciencia de terem lido ate aki.
[]'s

Michael Nascimento Santos
Analista/Consultor
CPM Sistemas - www.cpm.com.br

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Reply via email to