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