Link sobre Polimorfismo em Java  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
André Fonseca
JWizard
[Avatar]

Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline

Oi

Segue um link interessante explicando polimorfismo em Java.
Duas coisas importantes que eu concordo e que causam muita confusão

  • polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador

  • para termos polimorfismo não necessariamente precisamos de herança, podemos ter o mesmo comportamento usando interfaces


  • Sei que já foi muito batido esse assunto aqui, mas acho que quanto mais discussão melhor, o que acham?

    Você é novo no GUJ?


    Como fazer perguntas?



    www.twitter.com/_afonseca
    adriano_si
    JWizard
    [Avatar]

    Membro desde: 01/10/2006 15:29:40
    Mensagens: 2047
    Offline

    A palavra Herança, foi o que me matou por muito tempo para entender Polimorfismo em Java... não sei se é a mais adequada para explicar o que conhecemos como "HERANÇA"... acho que poderiam arranjar outro conceito melhor... mas pelo jeito a JAVA "Herdou" isso do C++, hehehehe

    Perfeito o Link pra quem quer ter uma visão inicial e clara do conceito...

    Falows
    André Fonseca
    JWizard
    [Avatar]

    Membro desde: 23/02/2007 15:52:55
    Mensagens: 2034
    Offline

    não é a toa que a Katty vive repetindo no livro Head First

    Java NÃO é C++

    This message was edited 1 time. Last update was at 19/05/2009 08:54:05


    Você é novo no GUJ?


    Como fazer perguntas?



    www.twitter.com/_afonseca
    adriano_si
    JWizard
    [Avatar]

    Membro desde: 01/10/2006 15:29:40
    Mensagens: 2047
    Offline

    hehehehe... pior...

    O conceito de "herdar" pra mim, é bem diferente do que realmente ocorre quando nossa classe possui uma superclasse (ou seja, sempre)... mas como eu acho que não há uma palavra que defina o que realmente ocorre HERANÇA entrou por tabela...

    Blz
    Lavieri
    GUJ Master
    [Avatar]

    Membro desde: 27/01/2004 13:39:31
    Mensagens: 1851
    Localização: João Pessoa / PB
    Offline

    não li o artigo.... então não sei bem o que ele quis dizer com

    polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador


    vou ler agora... mas c ele kiz dizer, que sobrecarga tem a ver com polimorfismo não esta correto... portanto o polimorfismo em se, não depende do objeto chamador, depende do objeto que esta sendo chamado.... ou seja.... vc tem um objeto, chama um método dele... e a depender da forma dentro do objeto, um comportamento diferente é executado....

    vou ler, e depois entender o q ele kiz dizer e volto a falar

    EDIT.: agora eu li, e realmente é muito bom o artigo, e totalmente coerente... mostra corretamente cada ponto... boa leitura a quem for ler


    This message was edited 2 times. Last update was at 19/05/2009 09:22:43


    Sun Certified Java Programmer (SCJP 6)

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
    -Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

    Meu blog -> http://blog.tomazlavieri.com.br/
    [ICQ]
    Mak
    Debugger

    Membro desde: 22/10/2008 22:13:38
    Mensagens: 68
    Offline

    para termos polimorfismo não necessariamente precisamos de herança, podemos ter o mesmo comportamento usando interfaces


    Perfeito ... eu no início confundia mto polimorfismo com sobrecarga de métodos (na verdade até hj as vezes me enrolo um pko) ... Mas quando vi acho q em um livro qualquer um exemplo do q eles denominaram polimorfismo dinâmico (pra mim o verdadeiro polimorfismo) q necessitava do uso d interfaces, fiquei deslumbrado com o potencial do verdadeiro polimorfismo ... mto massa ... por essas e outras q OO é massa ... não q outros paradigmas não possam ser melhores ... mas não é a toa q OO está aí até hj ...
    [MSN]
    André Fonseca
    JWizard
    [Avatar]

    Membro desde: 23/02/2007 15:52:55
    Mensagens: 2034
    Offline

    oi

    pois é, ao invés de

    polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador


    melhor

    polimorfismo nada mais é do que a chamada do mesmo método sendo executada de formas diferentes, o que depende do tipo do objeto referenciado



    Você é novo no GUJ?


    Como fazer perguntas?



    www.twitter.com/_afonseca
    Lavieri
    GUJ Master
    [Avatar]

    Membro desde: 27/01/2004 13:39:31
    Mensagens: 1851
    Localização: João Pessoa / PB
    Offline

    André Fonseca wrote:
    polimorfismo nada mais é do que a chamada do mesmo método sendo executada de formas diferentes, o que depende do tipo do objeto referenciado


    com essa segunda frase fica bem + claro ^^

    abraços

    Sun Certified Java Programmer (SCJP 6)

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
    -Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

    Meu blog -> http://blog.tomazlavieri.com.br/
    [ICQ]
    adriano_si
    JWizard
    [Avatar]

    Membro desde: 01/10/2006 15:29:40
    Mensagens: 2047
    Offline

    denominaram polimorfismo dinâmico

    Nome mais bonitinho e enfeitado para POLIMORFISMO... não vejo um como estático, por isso, só polimorfismo já basta... hehehehe

    Falows
    Lavieri
    GUJ Master
    [Avatar]

    Membro desde: 27/01/2004 13:39:31
    Mensagens: 1851
    Localização: João Pessoa / PB
    Offline

    eu so não concordo muito que o polimorfismo seja apenas na chamada do método... os tipos das variáveis em java tb são polimorficos, e é por isso que os métodos podem ser polimorficos, pois se não pudessomos passar varias formas para uma única variável tipada, não teriamos como chamar um método polimorficamente

    Sun Certified Java Programmer (SCJP 6)

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
    -Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

    Meu blog -> http://blog.tomazlavieri.com.br/
    [ICQ]
    leandronsp
    Virtual Machine Man
    [Avatar]

    Membro desde: 22/03/2008 22:24:29
    Mensagens: 520
    Localização: São Paulo
    Offline

    Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
    Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.

    E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
    Abraços pessoal, e nos vemos domingão no Falando em Java!



    Blog | Github | About me! |

    Contribua => Parser HTML

    Compartilhe arquivos e ideias no ebaH!
    [Email] [WWW] [MSN]
    Lavieri
    GUJ Master
    [Avatar]

    Membro desde: 27/01/2004 13:39:31
    Mensagens: 1851
    Localização: João Pessoa / PB
    Offline

    leandronsp wrote:Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
    Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.

    E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
    Abraços pessoal, e nos vemos domingão no Falando em Java!




    so uma correção, ele executa o comportamento, e olha para o tipo em tempo de execução, e não de compilação... em tempo de compilação, ele apenas "tenta" (e quanto fala tenta, é pq ele não garante, por isso existe os CastClassException em tempo de execução) garantir que vc "não tente enfiar uma bicicleta onde deveria existir um espelho por exemplo".

    Sun Certified Java Programmer (SCJP 6)

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
    -Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

    Meu blog -> http://blog.tomazlavieri.com.br/
    [ICQ]
    André Fonseca
    JWizard
    [Avatar]

    Membro desde: 23/02/2007 15:52:55
    Mensagens: 2034
    Offline

    a definição de polimorfismo, feita pela Monica Pawlan , que é criticada pelo professor, pode ser encontrada aqui, deve ter sido ela quem escreveu já que ela trabalha na SUN..

    aqui temos uma outra definição

    Polymorphism means "any forms." In object-oriented programming, it refers to the capability of objects to react differently to the same method. Polymorphism can be implemented in the Java language in the form of multiple methods having the same name. Java code uses a late-binding technique to support polymorphism; the method to be invoked is decided at runtime.


    Segundo essa definição polimorfismo poderia ser implementado usando overload ou overriding - multiple methods having the same name

    aqui tem outra definição, segundo a qual podemos ter tres tipos de implementação

  • overloading

  • overriding através de herança

  • overriding através de interface


  • e ainda aqui tem outra definição mais completa ainda, segundo a qual temos 4 tipos de implementalção, coerção, overloading, parametrica e inclusão, a parametrica acho que seria o que o Lavieri quis dizer

    resumindo, a definição de polimorfismo é clara, agora parece que não chegaram ainda a um consenso na forma de implementa-la..

    nada é tão simples como parece.. rs

    Você é novo no GUJ?


    Como fazer perguntas?



    www.twitter.com/_afonseca
    André Fonseca
    JWizard
    [Avatar]

    Membro desde: 23/02/2007 15:52:55
    Mensagens: 2034
    Offline

    Lavieri wrote:
    leandronsp wrote:Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
    Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.

    E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
    Abraços pessoal, e nos vemos domingão no Falando em Java!




    so uma correção, ele executa o comportamento, e olha para o tipo em tempo de execução, e não de compilação... em tempo de compilação, ele apenas "tenta" (e quanto fala tenta, é pq ele não garante, por isso existe os CastClassException em tempo de execução) garantir que vc "não tente enfiar uma bicicleta onde deveria existir um espelho por exemplo".


    seria isso?

    Java code uses a late-binding technique to support polymorphism; the method to be invoked is decided at runtime.


    http://www.javabeat.net/javabeat/scjp5/tutorials/scjp-basics/13-polymorphism.php

    Você é novo no GUJ?


    Como fazer perguntas?



    www.twitter.com/_afonseca
    Mak
    Debugger

    Membro desde: 22/10/2008 22:13:38
    Mensagens: 68
    Offline

    Então eu sempre tive o seguinte:

    Dada a Classe Soma a seguir:


    tem-se a Classe Main


    Neste caso eu teria sobrecarga de método no método soma, ou polimorfismo estático (o polimorfismo dá-se em tempo de compilação)

    No seguinte exemplo, polimorfismo dinâmico (o polimorfismo dá-se em tempo de execução), com o uso de Interface





    Basicamente é assim q eu entendo polimorfismo hj ... seria + ou - isso??
    [MSN]
     
    Índice dos Fóruns » Java Básico
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team