Sven,
Concordo com voc� e ainda digo mais. Conceitualmente, polimorfirsmo � a
capacidade dos objetos responderem diferenciadamente a mesma mensagem (ou
est�mulo) de acordo com sua classe no momento.
Dois
m�todos com assinaturas diferentes n�o podem ser considerados a mesma mensagem.
Apenas possuem o mesmo nome (ou token) com o fim de facilitar o entendimento do
programador, mas em momento algum representam a mesma
mensagem.
abra�os
Jorge
-----Original Message-----
From: Sven van �t Veer [mailto:[EMAIL PROTECTED]]
Sent: ter�a-feira, 20 de mar�o de 2001 17:37
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Polimorfismo
N�o concordamos com este explica��o pelo
seguinte.From: Sven van �t Veer [mailto:[EMAIL PROTECTED]]
Sent: ter�a-feira, 20 de mar�o de 2001 17:37
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Polimorfismo
Polimorfismo � um dos conceitos mais importante de OOP. O que � Polimorfismo, � a capacidade de uma referencia de um superclasse (ou interface) conter a refer�ncia de uma subclasse que inclui o conceito de �Dynamic Binding� ou a possibilidade de escolher o methodo certo para invocar at runtime.
Com overloading o progammador escolha qual vers�o do methodo dentro da mesma classe tem que ser executado num certo momento durante a executa��o do programma. Isso N�O � polimorfismo.
veja:
interface a{
foo();
}
interface b extends a{
bar();
}
class c implements b{
foo(){}
}
class d extends c{
bar(){}
}
class e extends d{
foo(){}
bar(){}
}
class q{
a e = new e();
e.foo(); // foo chamada da classe e
e = new c();
e.foo(); //foo chamada da classe c
// esses s�o do seu exemplo.. O compilador sabe o que receber�
doFoo(a x){
a.foo() // nesse methodo, somente sabemos que a classe que foi recebido � uma implementa��o da interface a O foo() ser� escolhido at runtime, n�o � possivel de fazer optima��o
}
}
apesar que a classe
Christian Rauh wrote:
[EMAIL PROTECTED]" type="cite">Caro Michael,
Estou entrando tarde nesta discuss�o. N�o sei qual � o ponto
exato que voc� e o Sven est�o defendendo mas a sua cita��o �
errada. No livro "An Introduction to Object-Oriented Progamming"
de Timothy Budd [Budd], temos:
"The most common form of polymorphism in conventional programming
languages is overloading". pg. 185
Como a referencia [Budd] � mais importante do que [Eckel], temos
que: overloading � polimorfismo. O que me parece que � o
contr�rio do que voc� pretende provar.
Em particular, analisemos o trecho citado por voc� de [Eckel]:
Mister M wrote:People are often confused by other,
non-object-oriented features of C++, like overloading and default
arguments, which are sometimes presented as object-oriented.
Don’t be fooled; if it isn’t late binding, it isn’t polymorphism.
Aqui ele implica que "se n�o � linkagem din�mica" ent�o "n�o �
polimorfismo". Revertendo:
polimorfismo -> linkagem din�mica
Por�m, [Budd] diz logo a frente na se��o 13.2 sobre overloading
que:
"The facts that the compiler can often determine the correct
[overloading] function at compile time (in a strongly typed
language), and can generate only a single code sequence, are
simply optimizations"
Ou seja, o fato de que o compilador pode descobrir a fun��o
correta em linguagem fortemente tipadas (como C++) e fazer
linkagem est�tica � simplesmente um otimiza��o. Assim, o C++ est�
simplesmente otimizando uma caracter�stica orientada a objeto.
Obrigado,
Christian Rauh
NewTrade
Refer�ncias:
[Budd] Budd, Timothy. "An Introduction to Object-Oriented
Progamming", Addison-Wesley, 1991.
[Eckel] Eckel, Bruce. "Thinking C++".
------------------------------ 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]
-------------------------------------------------------------------------
