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.

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



Responder a