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]
-------------------------------------------------------------------------