Caro Christian

Ok, minha vez...

>Caro Michael,
>
>Eu vou lhe fazer uma pergunta e se a sua resposta for adequada eu posso
>mudar de opinião quanto a minha posição. A pergunta é:
>
>   Porque o overloading não é polimorfismo?
>
>Acredito que a resposta a esta pergunta é crucial para definirmos se
>overloading é ou não é polimorfismo.
>

Com certeza. Acho q vc nao prestou atencao a certas partes do e-mail 
anterior. Frisando:

-> No tempo do C puro, overloading ERA POLIMORFISMO.
-> Depois, alguem em algum ponto do universo (nao lembro quem, estou 
correndo atras, acho q era um grupo de autores) determinou q para ser uma 
linguagem OO, vc precisa ter abstracao, encapsulamento, heranca e 
polimorfismo. Foram essas caras (preciso achar isso, tah dificil...) q 
definiram q polimorfismo EH OVERRING E DYNAMIC BINDING.
-> Por isso, o uso de polimorfismo significando overloading foi considerado 
inapropriado para OOP, jah q, segundo a definicao dos camaradas acima, vc 
precisa implementar o polimorfismo para ser uma linguagem OO mas nao precisa 
implementar overloading. Matematicamente,
se todo conjunto L (linguagem) precisa conter o conjunto P (polimorfismo) 
mas nao o conjunto O (overloading), isso significa q O nao esta contido em P 
(overloading nao faz parte do polimorfismo).

>Acho que você está colocando a sua definição como final e acredito que a
>discussão é longe de final. Se devemos fechar a questão, ela deve ser
>fechada como está: em aberto (paradoxal mas inevitável). A sua argumentação
>é baseada nas suas idéias e está desconsiderando toda e qualquer
>arguemntação que eu coloquei.

Nao, nao estou desprezando. Soh estou comentando q sua definicao vem de 
conceitos q foram se tornando "deprecated" com o tempo.

>Quanto ao seu email, tenho alguns comentários:
>
>Segue:
>
>Mister M wrote:
> >
> > -> Pq a discussao eh pertinente?
> >
> > 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.
>
>Não. Quando disserem polimorfismo, pense em overriding e overloading.

Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo no conceito 
OOP. Polimorfismo em OO eh sempre overriding e dynamic binding

>
> > Espere q tenha ficado claro o ponto.
>
>Idem.

Idem

> > 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.
>
>Também mantenho minha opinião de que polimorfismo aplica-se a overriding e
>overloading, dynamic binding e afins.

E eu a minha...

> > 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.
>
>Concordo, vamos então mudar o foco da discussão a teoria em si e tentarmos
>chegar em uma conclusão.

Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o polimorfismo 
(por consequencia) do jeito q expliquei (so preciso achar...)

>
> > 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;
>
>Ou:
>
>  - Dentro do contexto OOP, polimorfismo refere-se unica e
>    exclusivamente a overloading, OVERRIDING, dynamic binding
>    e afins;

Eu quis dizer overriding, dynamic binding e afins e nao overloading (foi a 
pressa :-));

> > -> 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;
>
>Dentro do contexto de OO também diz-se isto.

Nao, dentro do contexto de algumas linguagens sim, mas em OO, 
conceitualmente nao (vide explicacao acima). Alguns seguem o conceito 
herdado do C, q nao eh parte da OO, mas sim da linguagem. Polimorfismo tem a 
ver com a mesma mensagem e mudar a lista de argumentos muda a mensagem (por 
mais q isso vah iniciar outra discussao...)

>
> > -> 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
>
>Você está cometendo uma falácia lógica. Se para algo pertencer a um
>conjunto A ele tem que ter as características {X,Y,Z}, não quer dizer que
>se um elemento que não pertence ao conjunto A contém alguma das
>características então estas caracterísitcas não definem o conjunto A.

Nao quis dizer o q vc entendeu (nem lembrava mais o q era falacia, tive isso 
em filosofia... :-) Obrigado - programador Java tb eh cultura!!!). 
Overloading nao faz do Java uma linguagem OO, mas overriding e dynamic 
binding sim. Este era o ponto em questao. O Java trouxe o overloading das 
linguagens nao-OO.

> > -> 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).
>
>Eu estou aprendendo muito com esta discussão e acredito que é totalmente
>válida na lista. Para mim a discussão não está fechada.

Tah bom entao, ateh q alguem xinge a gente... :-) Qualquer coisa a gente vai 
pra off-list, mas acho q a discussao eh pertinente...
Espero nao estar ofendendo ou sendo rude... :-)

Uma citacao q encontrei em 
http://www.cyberdyne-object-sys.com/oofaq/oo-faq-S-2.1.0.7.html#S-2.1.0.7

Stroustrup's Definition [Stroustrup 90, p. 209]:
The use of derived classes and virtual functions is often called 
"object-oriented programming".  Furthermore, the ability to call a variety 
of functions using exactly the same interface - as is provided by virtual 
functions - is sometimes called "polymorphism".

[The Author notes this is a functional view of polymorphism (as provided in 
C++).  [Stroustrup 91, p. 136] has an example of polymorphism with void *'s, 
but a newer template function is incomparably preferable, as implied in
[Stroustrup 90, ch 14]]

Rumbaugh's Definition [Rumbaugh 91, p. 2]:

"Polymorphism" means that the same operation may behave differently on
different classes.

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

Responder a