Re: RES: [java-list] Polimorfismo só pode ser aplicado em classes que tenha =?iso-8859-1?Q?Heran=E7a????=
Isaque, O que você perguntou é conhecido como 'Sobrecarga de Métodos', Polimorfismo já é outra coisa.veja abaixo: public class A{ public M1(){ ... } } public class B{ public M1(){ ... } public M2(){ ... } } public static void main (String args[]){ A objA = new A(); B objb = new B(); objA.M1(); -- chama o método M1 do objeto A objB.M1(); -- chama o método M1 do objeto B objA = objB; objA.M1(); -- chama o método M1 do objeto B, pois na linha anterior fizemos um polimorfismo, ou seja, fizemos com que o objeto da classe A tomasse a forma do objeto B..isso é polimorfismo... Se eu tiver errado me corrijamcaso contrário, espero que tenha ajudado... Abraços José Neto Cristiano S. Neves escritos: LORDzpolimorfismo ou sobrecarga de métodos? Cristiano S. Neves Gerente de TI Prumos Interativa Ltda. F 55 226 7951 E [EMAIL PROTECTED] U http://www.prumos.com.br -Mensagem original- De: diego [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 1 de julho de 2003 12:07 Para: [EMAIL PROTECTED]; [EMAIL PROTECTED] Assunto: Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança??? Não necessariamente. Quando vc vai sobrecrever um método que está na classe pai, sem sombras de dúvida você precisa ter uma herança, mas quando você declara vários métodos com a mesma assinatura, mas que recebem parâmetros diferentes, isto também é considerado polimorfismo, e pouco importa, neste caso, que você tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança??? É correto afirmar que o Polimorfismo só pode ser aplicado em classes que tenha Herança??? Alguém pode me ajudar neste conceito? Cordiais saudações, Isaque Niche Ramos Jota Cordiais saudações, Isaque Niche Ramos Jota ( (22) 2772-8000 (22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.493 / Virus Database: 292 - Release Date: 25/06/03 José Neto -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz Andei pesquisando mais um pouco com o Coordenador dos cursos de programao da Faculdade eencontrei a resposta, mas est em oposiocom a maioria das respostas que recebi, como o assunto interessante, decidi compartilha comvocs a resposta. Para ser polimorfica a operacao tem que ter a mesma assinatura e isto inclui os parametros formais. Quanto a pergunta em si, a resposta e NAO, pois e possivel se utilizar polimorfismo via a utilizacao de Interfaces (que e uma estrutura similar a classe que serve apenas para definir um grupo de operacoes que deveser implmeentado pelas classes que realizam ou implementam a interface. Apenas para programadores C++, a visao de polimorfismo fica restrita a heranca de classe, pois nao existem em c++ o conceito de interface Alm disso, se a linguagem nao for fortemente tipada (exigir declaracao de tipo), como e o caso por exemplo do smalltalk, o polimorfismo pode ocorrer em qualquer tempo, bastando para isso que as classes apresentem metodos ou operacoes polimorficas, mesmo sem pertecerem a mesma hierarquia de classe. Marcelo Feres - Original Message - From: Antonio Oliveira To: [EMAIL PROTECTED] Sent: Thursday, July 03, 2003 8:30 AM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? Caros, Para que ocorra polimorfismo se faz necessria a existncia de herana de uma classe (abstrata de preferncia) ou a implementao de uma interface. PS: 1) No vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, mtodos comnomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo no da linguagem de programao Java, mas sim da Orientao a Objetos. [] - Original Message - From: diego To: [EMAIL PROTECTED] ; [EMAIL PROTECTED] Sent: Tuesday, July 01, 2003 12:06 PM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz Parabns Antonio, Fez a lio de casa. Infelizmente, muita gente confunde sobrecarga com polimorfismo. O polimorfismo uma arte e deve ser tratado como tal e as possibilidades que ele abre em Java so incrveis. A possibilidade de carregar um objeto filho comum handle do paiapenas por no sabermos de que tipo de filhoele ,e deixar esta responsabilidade com o java que vai se encarregar de executar o mtodo do filho apropriado, permite uma reduo de cdigos fantstica. Aplicando estes conceitos j criei classes inteiras onde nenhum if foi necessrio, pois o java sabe "se" isto ou aquilo. Joao - Original Message - From: Antonio Oliveira To: [EMAIL PROTECTED] Sent: Thursday, July 03, 2003 8:30 AM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? Caros, Para que ocorra polimorfismo se faz necessria a existncia de herana de uma classe (abstrata de preferncia) ou a implementao de uma interface. PS: 1) No vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, mtodos comnomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo no da linguagem de programao Java, mas sim da Orientao a Objetos. [] - Original Message - From: diego To: [EMAIL PROTECTED] ; [EMAIL PROTECTED] Sent: Tuesday, July 01, 2003 12:06 PM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
RES: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz polimorfismo ou sobrecarga de mtodos? Cristiano S. NevesGerente de TIPrumos Interativa Ltda.F55 226 7951E[EMAIL PROTECTED]Uhttp://www.prumos.com.br -Mensagem original-De: diego [mailto:[EMAIL PROTECTED]Enviada em: tera-feira, 1 de julho de 2003 12:07Para: [EMAIL PROTECTED]; [EMAIL PROTECTED]Assunto: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz Isaque, Polimorfismo a caracterstica que uma classe tem de tratar diferentes tipos de dados de acordo como forem passados para ela. ex: uma mtodo chamado soma() que possa tratar: 1+1=2 'java '+'Linux'='Java Linux' e assim por diante. este fato de polimorfismo ser dependente de herana no bem verdade, pois so coisas distintas. Herana j quando uma classe herda propriedades de uma superclasse = herana simples; de mais de uma classe= herana multipla (mais complexo) espero ter ajudado. Leandro - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 8:27 AM Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Classicamente chamamos de polimorfismo a escolha (tardia), em tempo de execuo, do mtodo que ser efetivamente executado quando enviamos uma mensagem para um objeto que est dentro de uma varivel, por exemplo. A escolha do mtodo a ser executado, depende do objeto que est recebendo a mensagem, e no da mensagem em si. Uma mesma mensagem enviada a objetos diferentes pode disparar comportamentos distintos. Por outro lado tambm encontramos na literatura a meno de polimorfismo em tempo de execuo descrita no pargrafo anterior e polimorfismo em tempo de compilao que seria a escolha do mtodo de a ser executado de acordo com a lista de parmetros enviados, ou seja sobrecarga. Concordo que esta nomenclatura diverge da definio clssica de polimorfismo, mas pessoalmente eu gosto pois deixa claro o momento da escolha em que acontece a escolha de qual mtodo ser executado. Cesar Antonio Oliveira wrote: LORDzCaros, Para que ocorra polimorfismo se faz necessria a existncia de herana de uma classe (abstrata de preferncia) ou a implementao de uma interface. PS: 1) No vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, mtodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo no da linguagem de programao Java, mas sim da Orientao a Objetos. [] - Original Message - From: diego To: [EMAIL PROTECTED] ; [EMAIL PROTECTED] Sent: Tuesday, July 01, 2003 12:06 PM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000 (22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404 -- -- Cesar Fernando Moro - Email: [EMAIL PROTECTED] - ICQ: 157573186 System Analist/Professor - http://cfmoro.hopto.org State University of Maringa - PR - Brazil - Fone:+055-44-261-4324 -- There never was darkness or a problem that could defeat the sunrise or hope. Bern Williams -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz Caros, Para que ocorra polimorfismo se faz necessria a existncia de herana de uma classe (abstrata de preferncia) ou a implementao de uma interface. PS: 1) No vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, mtodos comnomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo no da linguagem de programao Java, mas sim da Orientao a Objetos. [] - Original Message - From: diego To: [EMAIL PROTECTED] ; [EMAIL PROTECTED] Sent: Tuesday, July 01, 2003 12:06 PM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Não é obrigatório usar Herança para se obter o polimorfismo. Em Java é possivel usar polimorfismo com o uso de interfaces. Duas classes que não teem correlação alguma podem implementar o polimorfismo desde que as duas implementem uma mesma interface. Um material muito bom sobre essa questão pode ser encontrado no Livro Thinking in Java Livro gratuito que pode ser baixado pela internet (Livro muito bom) Abraços Conrad peres. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 8:27 AM Subject: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança??? ___ Yahoo! Mail Mais espaço, mais segurança e gratuito: caixa postal de 6MB, antivírus, proteção contra spam. http://br.mail.yahoo.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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz parcialmente correto, Overwrite aplicvel apenas para classes que tenham herana. No entanto, Overload pode ser aplicado para qualquer classe, com ou sem herana. - Original Message - From: Conrad To: [EMAIL PROTECTED] Sent: Monday, June 30, 2003 5:15 PM Subject: Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto sim polimorfismo em java tem os conceitos de overwrite e overload, que rescrita de mtodo e "recarregao" (No sei se a traduo correta), ento no faz sentido falar de polimorfismo seno houver herana. Abraos Conrad peres. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 8:27 AM Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz No necessariamente. Quando vc vai sobrecrever um mtodo que est na classe pai, sem sombras de dvida voc precisa ter uma herana, mas quando voc declara vrios mtodos com a mesma assinatura, mas que recebem parmetros diferentes, isto tambm considerado polimorfismo, e pouco importa, neste caso, que voc tenha uma classe ancestral. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 08:27 Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz correto sim polimorfismo em java tem os conceitos de overwrite e overload, que rescrita de mtodo e "recarregao" (No sei se a traduo correta), ento no faz sentido falar de polimorfismo seno houver herana. Abraos Conrad peres. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, June 27, 2003 8:27 AM Subject: [java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana??? correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
[java-list] Polimorfismo s pode ser aplicado em classes que tenha Herana???
Title: LORDz correto afirmar que o Polimorfismo s pode ser aplicado em classes que tenha Herana??? Algum pode me ajudar neste conceito? Cordiais saudaes, Isaque Niche Ramos Jota Cordiais saudaes, Isaque Niche Ramos Jota ( (22) 2772-8000(22) 9903-5193 * [EMAIL PROTECTED] UIN:241967404
Re: [java-list] polimorfismo ..?
Na verdade esse exemplo do livro apenas mostrou que vc pode referenciar uma subclasse com uma referencia da superclasse. Sou totalmente inexperiente mas sei que isso na prática tem várias funções, por exemplo, quando vc usa um JScrollPanel vc passa como argumento para o construtor da classe um JComponent, a classe JComponent é superclasse da maioria dos componentes swing, portanto em um JScrollPanel vc pode colocar a maioria dos componentes swing, porque a referência é para um JComponent, portanto qualquer subclasse pode ser referenciada por ele. Se não fosse essa tecnica a classe JScrollPanel teria que ter vários construtores sobrecarregados, cada um para um possível componente swing que estaria no JScrollPanel, e cada um desses construtores faria a mesma coisa! PS.: caso ainda não tenha visto a classe JScrollPanel, vc a vera no cap 12, na página 555, em um exemplo de JList - Original Message - From: Lincoln Masao Muraoka Junior [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, February 03, 2003 9:15 AM Subject: Re: [java-list] polimorfismo ..? Bom, Concordo que as duas chamadas vão chamar o mesmo método. Logo porque não chamar o método pela subclasse direto né? Eu enxergo no mínimo duas utilizações interessante para isso. Imagine que você crie uma super classe Sup e 20 subclasses Sub1, Sub2 ... Sub20. A classe Sup tem um método save() que todas as subclasses sobreescrevem, que é responsável pela persistência do objeto. Agora suponha que você, durante o processamento de um programa crie uma instância de cada uma das subclasses, e ao final do processamento precisa chamar o método save de todo mundo. Vai te dar um pouquinho de trabalho chamar o save de cada um deles. Ao invés disso, você poderia estar criando um array de objetos Sup, como Sup AAA []. Dentro de cada linha do array, você colocaria uma referência a cada um dos objetos de subclasse, e ao final do processamento, poderia chamar um for e a cada linha do for, vc chama o metodo save da super classe, algo como: for(int i = 0 ; i AAA.lenght; i++){ AAA[i].save(); } Como o método save chamado seria indiretamente o da subclasse, você teria o processamento exatamente com esperado, sem precisar chamar o método save para cada um dos tipos de subclasse existente, economizando escrita. Não sei se você não perde muito em processamento em função do for, porém com certeza você economiza código, podendo inclusive dessa forma automatizar alguns processos, pensando assim de forma abstrata. Um outro exemplo é que você poderia utilizar o conceito de factory dessa maneira também. Imagine que você tem uma classe que trata Funcionalidades de um sistema. Assim, você cria uma super classe Funcionalidade, que possui alguns métodos padrão e a cada nova funcionalidade, você cria uma classe que extende a super classe Funcionalidade. Assim, você poderia ter uma classe tratadora das funcionalidades que trata uma funcionalidade genérica, e sempre que adicionar uma nova funcionalidade, basta criar uma nova classe que extende a classe Funcionalidade e registra-la em um arquivo de configurações, por exemplo. A classe tratadora sempre trabalha com os metodos de superclasse, de forma que você não precisa nunca mais mexer nela, aumentando bastante a reutilização dos seus componentes bem como escalabilidade. ETA []s Lincoln Masao Muraoka Junior Analista Programador ASTI Tecnologia - Unidade de Soluções Tel.: 55 11 3031-0069 r. 232 [EMAIL PROTECTED] www.astitecnologia.com.br - Original Message - From: everson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, January 24, 2003 2:15 PM Subject: [java-list] polimorfismo ..? olá lista. To lendo o Java como Programar - Deitel, cap 9, pág 409 à 414. Arquivo Test.java (413). A dúvida é: pq que ao invés de fazer: 1) Employee ref; // superclass reference Boss b = new Boss( John, Smith, 800.00 ); ref = b; output += ref.toString() + earned $ + (como está no livro) não fez direto : 2) output += b.toString() + earned $ + (minha dúvida) Já q no 1) vai ser chamado o metodo toString da classe Boss, como no 2) ... Existe alguma diferença entre um e outro ??? -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email
Re: [java-list] polimorfismo ..?
Bom, Concordo que as duas chamadas vão chamar o mesmo método. Logo porque não chamar o método pela subclasse direto né? Eu enxergo no mínimo duas utilizações interessante para isso. Imagine que você crie uma super classe Sup e 20 subclasses Sub1, Sub2 ... Sub20. A classe Sup tem um método save() que todas as subclasses sobreescrevem, que é responsável pela persistência do objeto. Agora suponha que você, durante o processamento de um programa crie uma instância de cada uma das subclasses, e ao final do processamento precisa chamar o método save de todo mundo. Vai te dar um pouquinho de trabalho chamar o save de cada um deles. Ao invés disso, você poderia estar criando um array de objetos Sup, como Sup AAA []. Dentro de cada linha do array, você colocaria uma referência a cada um dos objetos de subclasse, e ao final do processamento, poderia chamar um for e a cada linha do for, vc chama o metodo save da super classe, algo como: for(int i = 0 ; i AAA.lenght; i++){ AAA[i].save(); } Como o método save chamado seria indiretamente o da subclasse, você teria o processamento exatamente com esperado, sem precisar chamar o método save para cada um dos tipos de subclasse existente, economizando escrita. Não sei se você não perde muito em processamento em função do for, porém com certeza você economiza código, podendo inclusive dessa forma automatizar alguns processos, pensando assim de forma abstrata. Um outro exemplo é que você poderia utilizar o conceito de factory dessa maneira também. Imagine que você tem uma classe que trata Funcionalidades de um sistema. Assim, você cria uma super classe Funcionalidade, que possui alguns métodos padrão e a cada nova funcionalidade, você cria uma classe que extende a super classe Funcionalidade. Assim, você poderia ter uma classe tratadora das funcionalidades que trata uma funcionalidade genérica, e sempre que adicionar uma nova funcionalidade, basta criar uma nova classe que extende a classe Funcionalidade e registra-la em um arquivo de configurações, por exemplo. A classe tratadora sempre trabalha com os metodos de superclasse, de forma que você não precisa nunca mais mexer nela, aumentando bastante a reutilização dos seus componentes bem como escalabilidade. ETA []s Lincoln Masao Muraoka Junior Analista Programador ASTI Tecnologia - Unidade de Soluções Tel.: 55 11 3031-0069 r. 232 [EMAIL PROTECTED] www.astitecnologia.com.br - Original Message - From: everson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, January 24, 2003 2:15 PM Subject: [java-list] polimorfismo ..? olá lista. To lendo o Java como Programar - Deitel, cap 9, pág 409 à 414. Arquivo Test.java (413). A dúvida é: pq que ao invés de fazer: 1) Employee ref; // superclass reference Boss b = new Boss( John, Smith, 800.00 ); ref = b; output += ref.toString() + earned $ + (como está no livro) não fez direto : 2) output += b.toString() + earned $ + (minha dúvida) Já q no 1) vai ser chamado o metodo toString da classe Boss, como no 2) ... Existe alguma diferença entre um e outro ??? -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] polimorfismo ..?
Não sei qual é o contexto do capítulo desse livro que você está lendo, mas acho que o autor está querendo mostrar apenas que é possível chamar métodos de um objeto através do a chamada virtual de um método (Virtual Method Invocation). A variável ref foi criada com o intuito de apontar para um objeto da classe Employee, mas ao contrário disso recebeu a referência para um objeto da classe Boss, que é uma subclasse de Employee. Como as duas classes (Boss e Employee) possuem o método toString, é possível chamar o método através da variável de referência da superclasse. Suponha que a classe Boss possuísse um método teste() e a classe Employee não possuísse esse método. Se você tentar chamar o método teste() a partir da variável de referência ref, não vai conseguir. Nesse trecho de código, o método toString chamado, é o método referente ao objeto da classe Boss para a qual a variável ref está apontando, e não para o método toString da classe Employee. A váriável de referência ref é da Classe Employee, mas o conteúdo para o qual ela está apontando é de um objeto da classe Boss. Espero ter ajudado. Zanata, Adalberto - Espaço Reverso Tecnologia [www.espacoreverso.com.br/a.zanata] - Original Message - From: everson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, January 24, 2003 1:15 PM Subject: [java-list] polimorfismo ..? olá lista. To lendo o Java como Programar - Deitel, cap 9, pág 409 à 414. Arquivo Test.java (413). A dúvida é: pq que ao invés de fazer: 1) Employee ref; // superclass reference Boss b = new Boss( John, Smith, 800.00 ); ref = b; output += ref.toString() + earned $ + (como está no livro) não fez direto : 2) output += b.toString() + earned $ + (minha dúvida) Já q no 1) vai ser chamado o metodo toString da classe Boss, como no 2) ... Existe alguma diferença entre um e outro ??? -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
[java-list] polimorfismo ..?
olá lista. To lendo o Java como Programar - Deitel, cap 9, pág 409 à 414. Arquivo Test.java (413). A dúvida é: pq que ao invés de fazer: 1) Employee ref; // superclass reference Boss b = new Boss( John, Smith, 800.00 ); ref = b; output += ref.toString() + earned $ + (como está no livro) não fez direto : 2) output += b.toString() + earned $ + (minha dúvida) Já q no 1) vai ser chamado o metodo toString da classe Boss, como no 2) ... Existe alguma diferença entre um e outro ??? -- 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 historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
[java-list] Polimorfismo e Herança Múltipla
Olá pessoal, tô com uma dúvida em relação a implementação de dois conceitos muito importantes da POO em Java, Polimorfismo e Herança Múltipla. Bem, imaginemos a classe HomemAranha, consideremos também q o HomemAranha não seja somente o PeterParker, ou seja, eu também posso ser um objeto da classe HomemAranha. Eu herdo da classe Homem, assim como o PeterParker e também vou herdar da clase Aranha. Agora vamos empregar a regra do polimorfismo à classe Homem, pois o meu método expressarDuvida() da classe Homem retorna "Uai sô!!!" enquanto este mesmo método na classe PeterParker retorna "I do not understand!!!". E então eu pergunto como fazer isto em Java? Já q não posso herdar de duas classes ao mesmo tempo terei q utilizar uma Interface? Só consegui resolver este problema assim, fazendo com qHomem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! AryJunior
RES: [java-list] Polimorfismo e Herança Múltipla
Esqueça. Só por gambiarra. Java não tem herança múltipla. Anderson Macedo Silva Impactools - The wise solution that fits Centro Empresarial de São Paulo Telefone: 5853-2136 -Mensagem original-De: Ary Junior [mailto:[EMAIL PROTECTED]]Enviada em: segunda-feira, 25 de março de 2002 10:58Para: [EMAIL PROTECTED]Assunto: [java-list] Polimorfismo e Herança Múltipla Olá pessoal, tô com uma dúvida em relação a implementação de dois conceitos muito importantes da POO em Java, Polimorfismo e Herança Múltipla. Bem, imaginemos a classe HomemAranha, consideremos também q o HomemAranha não seja somente o PeterParker, ou seja, eu também posso ser um objeto da classe HomemAranha. Eu herdo da classe Homem, assim como o PeterParker e também vou herdar da clase Aranha. Agora vamos empregar a regra do polimorfismo à classe Homem, pois o meu método expressarDuvida() da classe Homem retorna "Uai sô!!!" enquanto este mesmo método na classe PeterParker retorna "I do not understand!!!". E então eu pergunto como fazer isto em Java? Já q não posso herdar de duas classes ao mesmo tempo terei q utilizar uma Interface? Só consegui resolver este problema assim, fazendo com qHomem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! AryJunior
Re: [java-list] Polimorfismo e Herança Múltipla
Olá Ary, Veja eu faria da seguinte forma: Homem | PeterParker --- [Aracnídeo]- Aranha A classe PeterParker seria uma descendente da classe Homem implementando a interface Aracnídeo. Logo, PeterParker seria uma classe Homem com os mesmoscomportamentos da classe Aranha. O método expressarDuvida() retornaria "Uai sô". Espero ter ajudado, Lincolm Ferreira de AguiarWebMaster - QueroProgramar[EMAIL PROTECTED] www.geocities.com/lincolmf - Original Message - From: Ary Junior To: [EMAIL PROTECTED] Sent: Monday, March 25, 2002 10:57 AM Subject: [java-list] Polimorfismo e Herança Múltipla Quer ter seu próprio endereço na Internet?Garanta já o seu e ainda ganhe cinco e-mails personalizados.DomíniosBOL - http://dominios.bol.com.br Olá pessoal, tô com uma dúvida em relação a implementação de dois conceitos muito importantes da POO em Java, Polimorfismo e Herança Múltipla. Bem, imaginemos a classe HomemAranha, consideremos também q o HomemAranha não seja somente o PeterParker, ou seja, eu também posso ser um objeto da classe HomemAranha. Eu herdo da classe Homem, assim como o PeterParker e também vou herdar da clase Aranha. Agora vamos empregar a regra do polimorfismo à classe Homem, pois o meu método expressarDuvida() da classe Homem retorna "Uai sô!!!" enquanto este mesmo método na classe PeterParker retorna "I do not understand!!!". E então eu pergunto como fazer isto em Java? Já q não posso herdar de duas classes ao mesmo tempo terei q utilizar uma Interface? Só consegui resolver este problema assim, fazendo com qHomem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! AryJunior
Re: [java-list] Polimorfismo
public class CLTest { public foobar() { } public static void main(String[] args) { try{ ClassLoader cl; Class c; cl = ClassLoader.getSystemClassLoader(); c = cl.loadClass("foo"); base b = (base)c.newInstance(); System.out.println(b.string()); c = cl.loadClass("bar"); b = (base)c.newInstance(); System.out.println(b.string()); } catch (Exception ex){ ex.printStackTrace(); } } } abstract class base{ abstract public String string(); } class foo extends base{ public String string(){ return "This is foo talking"; } } class bar extends base{ public String string(){ return "This is bar talking"; } } Kleber Rodrigo de Carvalho wrote: 000801c0cc1c$302c3cd0$230a0a0a@CarlaPerez"> PessoALL !!! Algum tem algum exemplo de polimorfismo para eu estudar.. OBS: sei que esta pergunta basica.. t+ obrigado
Re: [java-list] Polimorfismo
Obrigado [] 'sKleber Rodrigo de CarvalhoSoftware Engineer - Original Message - From: Sven van ´t Veer To: [EMAIL PROTECTED] Sent: Wednesday, April 25, 2001 8:36 AM Subject: Re: [java-list] Polimorfismo public class CLTest { public foobar() { } public static void main(String[] args) { try{ ClassLoader cl; Class c; cl = ClassLoader.getSystemClassLoader(); c = cl.loadClass("foo"); base b = (base)c.newInstance(); System.out.println(b.string()); c = cl.loadClass("bar"); b = (base)c.newInstance(); System.out.println(b.string()); } catch (Exception ex){ ex.printStackTrace(); } }}abstract class base{ abstract public String string();}class foo extends base{ public String string(){ return "This is foo talking"; }}class bar extends base{ public String string(){ return "This is bar talking"; }}Kleber Rodrigo de Carvalho wrote: 000801c0cc1c$302c3cd0$230a0a0a@CarlaPerez" type="cite">PessoALL !!! Alguém tem algum exemplo de polimorfismo para eu estudar.. OBS: sei que esta pergunta é basica.. t+ obrigado
[java-list] Polimorfismo
PessoALL !!! Alguém tem algum exemplo de polimorfismo para eu estudar.. OBS: sei que esta pergunta é basica.. t+ obrigado
Re: [java-list] Polimorfismo (PARA FECHAR) II
Volto a frisar novamente q a discussao comecou pq muita gente leu em algum lugar q polimorfismo eh somente overloading e nao overriding (2 semanas atras). Concordo com vc d q o importante eh saber usar, mas se o kra pensa q polimorfismo == overloading e alguem pergunta se ele jah aprendeu a usar polimorfismo, vao obter a ideia errada, pq todos nos concluimos de comum acordo q polimorfismo eh pelo menos overriding e outros acham q eh tb overloading. Mais lenha na fogueira... Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: "Marcelo Quintella" [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: Re: [java-list] Polimorfismo (PARA FECHAR) II Date: Wed, 21 Mar 2001 14:27:50 -0500 Eu tenho apenas assistido a toda essa discucao mas nao resisti aa tentacao de dar o meu palpite... Eu estou mais para o lado do Andre do que para o lado do Mister M. "Conceito" de qualquer coisa eh uma coisa meio aleatoria. Alguem define o conceito e aquilo passa a valer. Mas o que essa discussao toda mostrou eh que nenhum dos dois conceitos pegou de verdade, e o termo "polimorfismo" passou a significar diferentes coisas dependendo de _quem_ o usa. Na minha o opiniao isso nao faz a menor diferenca. Sempre achei que poliformismo era pura e simplesmente method overriding. Mas os argumentos a favor ou contra a validade do termo para method overload sao igualmente fortes. O que importa para mim eh: Voce sabe usar method overriding eficientemente? Voce sabe usar method overloading eficientemente? Sabe? Entao otimo, nao faz a menor diference qual dos dois eh "polimorfismo" ou nao. Se quiserem podemos criar um novo termo e passar a usa-lo... Pronto. Ai estao os meus cinco centavos... Abracos a todos, Marcelo Quintella - Original Message - From: "Andre Mendonca" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: March 21, 2001 1:26 PM Subject: RE: [java-list] Polimorfismo (PARA FECHAR) II Mister M, - 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. Isto nao impede que o conceito seja estendido ou re-interpretado. Ou que alguem diga que overloading eh um tipo especifico de polimorfismo. Este alguem, em algum ponto do universo, disse isso e o conceito pegou, tanto que muita gente hoje concorda com ele. Essa pessoa estendeu o conceito. Eu simplesmente nao posso dizer que o cara esta _errado_. Eh um conceito novo. - 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. Eh exatamente sobre isto que eu estou falando. A linguagem que implementa overloading, de acordo com este novo (?) conceito, implementa "polimorfismo multiplo", ou qualquer outro nome que tenha sido adotado. Eh uma nova nomenclatura, apenas. Soh estou comentando q sua definicao vem de conceitos q foram se tornando "deprecated" com o tempo. Pode ate ser, mas ainda sao utilizados e aceitos por _muita_ gente. Essas pessoas nao acham que o termo seja tao deprecated assim. Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo no conceito OOP. De novo. Conceito de quem? O conceito nao pode ser estendido? Polimorfismo em OO eh sempre overriding e dynamic binding De acordo com o seu conceito (e de muitas, muitas outras pessoas, eh bem verdade) Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o polimorfismo (por consequencia) do jeito q expliquei (so preciso achar...) Alguem pode ter feito isto e o conceito pode ter sido mudado posteriormente, ou algumas pessoas podem ter adotado uma nomenclatura diferente. Acho que eh saudavel a aceitacao de novos conceitos, por mais estranhos que eles possam parecer. Eh possivel que no futuro chegue-se `a conclusao _unanima_ de que overloading nao eh polimorfismo porem, _hoje_, os dois conceitos sao aceitos. Nao da pra dar as costas para tanta gente que acha o contrario. Nao, dentro do contexto de algumas linguagens sim, mas em OO, conceitualmente nao (vide explicacao acima). Nao existe um conceito de OO imutavel eh inquestionavel. Eh assim que as coisas evoluem. Se alguem sugeriu uma modificacao, pode ser que ela seja valida. Polimorfismo tem a ver com a mesma mensagem Mais uma vez, de acordo com o conceito que voce defende. Outras pessoas discordam. Cordialmente, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA
[java-list] Polimorfismo (PARA FECHAR MESMO)
Ola todos os interessados nesta discussao: Acho q nos nao vamos chegar a lugar algum. Vamos resumir todas as opinioes entao e chega de papo, ok? - Overriding: Capacidade de se sobrescrever um metodo de uma classe pai e este ultimo metodo ser chamado mesmo q se esteja trabalhando com a interface pai. Ex: Pai p = new Filho(); p.facaX(); Se em algum lugar da classe Filho houver uma nova definicao para facaX(), esta definicao eh q serah chamada. - Dynamic binding Capacidade do interpretador de postergar a identificacao do metodo a ser chamado ateh o momento da execucao, ou seja, determinar qual a verdadeira classe do objeto e se alguma classe na hierarquia o redefine (ligacao dinamica) - Overloading Capacidade de se declarar um mesmo metodo com diferentes listas de argumento. Ex: void facaX(); void facaX(Object y); void facaX(int a); void facaX(Object y, int a); - Static binding Capacidade do compilador de determinar qual metodo overloaded devera ser chamado (ligacao estatica) - Polimorfismo Pelo menos overriding, sendo alguns tb overloading - Polimorfismo parametrico Segundo apostila da Sun, no SL-110 eh vc poder fazer: p.facaX(new Vector()); qdo na classe P o metodo esta definido como: void facax(Object o); ou seja, a capacidade de se "fazer upcasting sozinho" do compilador. Alguns dizem q nao eh isso, mas sim overloading. Se esqueci de alguma coisa, favor complementar! tks! []'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] -
RES: [java-list] Polimorfismo
Assembly ? Na compilao so gerados bytecodes que por sua vez, sero interpretados pelas virtual machines de cada plataforma. By Al! -Mensagem original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Enviada em: quinta-feira, 22 de maro de 2001 9:22 Para: [EMAIL PROTECTED] Assunto: RES: [java-list] Polimorfismo Pessoal, Vamos descer um pouco mais o nvel (da linguagem claro): Quando um fonte compilado e existe o overloading (ex. int test(int a) e int test(int b, char c) ) o mtodo test renomeado e no assembly passam a ser mtodos diferentes com nomes diferentes ento como se vc tivesse criado 2 mtodos. Assim isso no Polimorfismo (no novo conceito de orientao a objeto), simplesmente porque ele no assume muitas formas em tempo de execuo, ele se transforma em outro mtodo. Abrao Marco -Mensagem original- De: Andre Mendonca [mailto:[EMAIL PROTECTED]] Enviada em: tera-feira, 20 de maro de 2001 16:33 Para: [EMAIL PROTECTED] Assunto: RE: [java-list] Polimorfismo Mister M, Ate onde eu pude ver, muitos autores consideram overloading um tipo de polimorfismo. Tavez seja uma questao de definicao, quase como uma preferencia pessoal, que na pratica pouco afeta a maneira como programamos. A capacidade de um objeto decidir qual metodo aplicara a si mesmo, dependendo de onde se encontra na hierarquia de heranca, e chamda de polimorfismo... Esta eh a definicao mais conhecida de polimorfismo. Inclusive eh a unica que eu considerava correta ate o comeco desta discussao. O polimorfismo em uma hierarquia de heranca as vezes eh chamado de POLIMORFISMO VERDADEIRO, distinguindo-o do tipo mais limitado de sobrecarga de nome que nao eh resolvido dinamicamente, mas estaticamente, em tempo de execucao. Polimorfismo verdadeiro, polimorfismo simples, polimorfismo (ponto final). Ha outros nomes, provavelmente. Porem, uma interpretacao deste trecho acima me leva a crer que o autor nao descarta a existencia de outros tipos de polimorfismo. Resumindo: - Polimorfismo tem a ver com heranca - Polimorfismo tem a ver com fazer: Como eu disse, muita gente acha que o conceito de polimorfismo eh um pouco mais abrangente. Repito, ate pouco tempo atras (algumas horas, talvez), eu nao considerava overloading polimorfismo. Continuo achando estranho o conceito, mas eu nao diria que eh errado. Talvez polimorfismo tenha a ver com "muitas formas", o que nao descarta overloading. Vou perguntar novamente, alguem sabe o que Bertrand Meyer diz a respeito do assunto? Os materiais citados sao propriedade intelectual de seus autores. Se alguem ainda tiver duvida sobre esses conceitos basicos da OOP, faca um curso da Sun, pq pra isso eles sao bons (aprender Java mesmo eh mais complicado...) Talvez o curso nao seja necessario, ate mesmo porque esta nao eh uma duvida basica. Eh uma questao conceitual que, ate onde eu posso ver, esta longe de ser uma unanimidade. Abraco, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RES: [java-list] Polimorfismo (PARA TERMINAR GERAL)
-BEGIN PGP SIGNED MESSAGE- Deixa eu dar minha pequena contribuio...Na minha opinio o polimorfismo uma consequncia da existncia da herana ou seja, est associado a hierarquia de classes. Sendo assim, estender o conceito de polimorfismo a metodos(no caso overload), pode criar confusao em termos de conceitos de OO. Abraos, Jos Euclides Jnior __ E-mail: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] http://euclides.8m.com - -Mensagem original- De: Christian Rauh [SMTP:[EMAIL PROTECTED]] Enviada em: Quinta-feira, 22 de Maro de 2001 17:21 Para: [EMAIL PROTECTED] Assunto:Re: [java-list] Polimorfismo Cleto Henrique Andrade Silva wrote: voc foi contra a segunda afirmativa quando disse "Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes.". Se o identificador da mensagem formado pelo nome mais os parmetros, ento, dois mtodos sobrecarregados com parmetros diferentes no podem ser a mesma mensagem. Eu queria dizer: "Dois mtodos sobrecarregados tm o mesmo nome e so a responsta a mesma mensagem quando recebida com parmetros diferentes." Christian - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - - -BEGIN PGP SIGNATURE- Version: PGP 6.5.1 iQCVAwUBOruH/N0YhuJ3BUxtAQEXrgQAhKFkHKhRvaDv34n/uTovpRqSAq/ebgJn 4nrFzBcq134USZgPrfjo9W4R/qbutlFoY8tVOnUFEJdVC+MV5PEYya0AIB4EcGAH 1v5VOTmp0kYT2dKB6+sjKfHVF0mYlyjjCT6guAqhKKyAbbEqXDMgi56naEUNUmtA 5ux/BSL6yJQ= =24WN -END PGP SIGNATURE- -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo (PARA TERMINAR GERAL)
Jos, Esta definio fragil, pois em linguagens que no so fortemente tipadas, voc pode fazer polimorfismo sem necessitar de uma hierarquia de classes. Mesmo assim, concordo que overload no polimorfismo. abraos Jorge -Original Message- From: Jose Euclides da Silva Junior - DIGR.O [mailto:[EMAIL PROTECTED]] Sent: sexta-feira, 23 de maro de 2001 11:28 To: [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo (PARA TERMINAR GERAL) -BEGIN PGP SIGNED MESSAGE- Deixa eu dar minha pequena contribuio...Na minha opinio o polimorfismo uma consequncia da existncia da herana ou seja, est associado a hierarquia de classes. Sendo assim, estender o conceito de polimorfismo a metodos(no caso overload), pode criar confusao em termos de conceitos de OO. Abraos, Jos Euclides Jnior __ E-mail: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] http://euclides.8m.com - -Mensagem original- De: Christian Rauh [SMTP:[EMAIL PROTECTED]] Enviada em: Quinta-feira, 22 de Maro de 2001 17:21 Para: [EMAIL PROTECTED] Assunto:Re: [java-list] Polimorfismo Cleto Henrique Andrade Silva wrote: voc foi contra a segunda afirmativa quando disse "Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes.". Se o identificador da mensagem formado pelo nome mais os parmetros, ento, dois mtodos sobrecarregados com parmetros diferentes no podem ser a mesma mensagem. Eu queria dizer: "Dois mtodos sobrecarregados tm o mesmo nome e so a responsta a mesma mensagem quando recebida com parmetros diferentes." Christian - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - - -BEGIN PGP SIGNATURE- Version: PGP 6.5.1 iQCVAwUBOruH/N0YhuJ3BUxtAQEXrgQAhKFkHKhRvaDv34n/uTovpRqSAq/ebgJn 4nrFzBcq134USZgPrfjo9W4R/qbutlFoY8tVOnUFEJdVC+MV5PEYya0AIB4EcGAH 1v5VOTmp0kYT2dKB6+sjKfHVF0mYlyjjCT6guAqhKKyAbbEqXDMgi56naEUNUmtA 5ux/BSL6yJQ= =24WN -END PGP SIGNATURE- -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo (PARA FECHAR) II
O Polimorfismo no C++ estabelecido atravs dos mtodos virtuais. O que torna a funo virtual especial que, quando uma acessada usando-se um ponteiro da class base para um objeto da classe derivada, o C++ determina qual funo chamar no momento da execuo, baseando-se no tipo de objeto para o qual se aponta. Assim, quando objetos diferentes so apontados, diferentes verses so executadas. O ponto chave para se obter esse polimorfismo que voc deve acess-la pelo uso de um ponteiro declarado como um ponteiro para a class base. Ainda que voc possa chamar uma funo virtual usando o nome do objeto da mesma maneira que chamaria qualquer outra funo membro, somente quando uma funo virtual acessada por meio de um ponteiro para a class base que o polimorfismo em tempo de execuo obtido. Exemplo: class Base { public: virtual void Quem(void) { cout "Base\n";} }; class Primeira:public Base { public: void Quem(void) { cout "Primeira\n";} }; main (void) { Base base; Base *p; Primeira primeira; p = base; p-quem(); p = primeira; p-quem(); return 0; } O resultado dessa execuo ser: Base Primeira - Original Message - From: "Marcelo Quintella" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, March 21, 2001 4:27 PM Subject: Re: [java-list] Polimorfismo (PARA FECHAR) II Eu tenho apenas assistido a toda essa discucao mas nao resisti aa tentacao de dar o meu palpite... Eu estou mais para o lado do Andre do que para o lado do Mister M. "Conceito" de qualquer coisa eh uma coisa meio aleatoria. Alguem define o conceito e aquilo passa a valer. Mas o que essa discussao toda mostrou eh que nenhum dos dois conceitos pegou de verdade, e o termo "polimorfismo" passou a significar diferentes coisas dependendo de _quem_ o usa. Na minha o opiniao isso nao faz a menor diferenca. Sempre achei que poliformismo era pura e simplesmente method overriding. Mas os argumentos a favor ou contra a validade do termo para method overload sao igualmente fortes. O que importa para mim eh: Voce sabe usar method overriding eficientemente? Voce sabe usar method overloading eficientemente? Sabe? Entao otimo, nao faz a menor diference qual dos dois eh "polimorfismo" ou nao. Se quiserem podemos criar um novo termo e passar a usa-lo... Pronto. Ai estao os meus cinco centavos... Abracos a todos, Marcelo Quintella - Original Message - From: "Andre Mendonca" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: March 21, 2001 1:26 PM Subject: RE: [java-list] Polimorfismo (PARA FECHAR) II Mister M, - 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. Isto nao impede que o conceito seja estendido ou re-interpretado. Ou que alguem diga que overloading eh um tipo especifico de polimorfismo. Este alguem, em algum ponto do universo, disse isso e o conceito pegou, tanto que muita gente hoje concorda com ele. Essa pessoa estendeu o conceito. Eu simplesmente nao posso dizer que o cara esta _errado_. Eh um conceito novo. - 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. Eh exatamente sobre isto que eu estou falando. A linguagem que implementa overloading, de acordo com este novo (?) conceito, implementa "polimorfismo multiplo", ou qualquer outro nome que tenha sido adotado. Eh uma nova nomenclatura, apenas. Soh estou comentando q sua definicao vem de conceitos q foram se tornando "deprecated" com o tempo. Pode ate ser, mas ainda sao utilizados e aceitos por _muita_ gente. Essas pessoas nao acham que o termo seja tao deprecated assim. Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo no conceito OOP. De novo. Conceito de quem? O conceito nao pode ser estendido? Polimorfismo em OO eh sempre overriding e dynamic binding De acordo com o seu conceito (e de muitas, muitas outras pessoas, eh bem verdade) Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o polimorfismo (por consequencia) do jeito q expliquei (so preciso achar...) Alguem pode ter feito isto e o conceito pode ter sido mudado posteriormente, ou algumas pessoas podem ter adotado uma nomenclatura diferente. Acho que eh saudavel a aceitacao de novos conceitos, por mais estranhos que eles possam parecer. Eh possivel que no futuro chegue-se `a conclusao _unanima_ de que overloading nao eh polimorfismo porem, _hoje_, os dois conceitos sao aceitos. Nao da pra dar
Re: [java-list] Polimorfismo
Cleto Henrique Andrade Silva wrote: voc foi contra a segunda afirmativa quando disse "Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes.". Se o identificador da mensagem formado pelo nome mais os parmetros, ento, dois mtodos sobrecarregados com parmetros diferentes no podem ser a mesma mensagem. Eu queria dizer: "Dois mtodos sobrecarregados tm o mesmo nome e so a responsta a mesma mensagem quando recebida com parmetros diferentes." Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caro Jorge, Jorge Martins wrote: Pois no o mesmo estmulo. Uma mensagem definida pela assinatura da mesma. Se h uma assinatura diferente, h uma mensagem diferente. O nome da funo no suficiente pois assinatura composta pelo nome da funo + tipos dos parmetros. A mensagem para mim simplesmente a mensagem e os parmetros no fazem parte dela. Veja, por exemplo, o Smalltalk onde voc pode chamar qualquer mtodo com qualquer nmero e tipo de parmetro. No seu exemplo, para formatar data, voc mesmo denunciou que so mensagens diferentes. Dizer "formate data com padro usual" e "formate data com este padro" so coisas diferentes. Seria polimorfismo se eu disse "formate data" e o OBJETO tomasse a deciso da formatao. Na verdade eu escrevi mal o que eu queria dizer. Eram para ser, como voc bem observou, "formate e data" e "formate a data com este padro", onde no primeiro caso a data formatada com um padro usual e no segundo com um padro diferente do usual. Este comportemente bastante usado quando se faz um mtodo que tem defaults para os parmetros de outro mtodo. Ambos respondem a mesma mensagem para parmetros diferentes. Perceba o conceito, eu falaria para o objeto uma s mensagem e ESTE TOMARIA A DECISO DO PROCEDIMENTO. Ou seja, ele se comportaria polimorficamente a partir de um mesmo estmulo, ou mensagem. Exato! E esta deciso seria baseada na classe e parmetros. (Contrariamente a somente na classe como o Michael, Sven e voc, entre outros, defendem). At mais, Chrsitian Rauh -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo (PARA FECHAR) II
Marcelo Quintella wrote: Eu tenho apenas assistido a toda essa discucao mas nao resisti aa tentacao de dar o meu palpite... Eu estou mais para o lado do Andre do que para o lado do Mister M. "Conceito" de qualquer coisa eh uma coisa meio aleatoria. Alguem define o conceito e aquilo passa a valer. Mas o que essa discussao toda mostrou eh que nenhum dos dois conceitos pegou de verdade, e o termo "polimorfismo" passou a significar diferentes coisas dependendo de _quem_ o usa. J que somos todos javaneses devemos aceitar a definio usado nos curso da Sun e nos livros sobre Java, que dis que polimorfismo no method overloading. Tambm no d para ctar livros de 19990/19991 ou at antes. Na ciencia em geral, a significativa dedefinies e theorias cientificas mudam isso chamado paradigm shift na filosofia (pos modernismo). Na minha o opiniao isso nao faz a menor diferenca. Sempre achei que poliformismo era pura e simplesmente method overriding. Mas os argumentos a favor ou contra a validade do termo para method overload sao igualmente fortes. Entao otimo, nao faz a menor diference qual dos dois eh "polimorfismo" ou nao. Se quiserem podemos criar um novo termo e passar a usa-lo... Faz diferena sim, se alguem te perguntasse o que polimorfismo. Neste caso voe deveria saber o que , deveria saber tambm para applicar na prtica j que polimorfismo para Java to importante qunto saber usar for (;;). Sven -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Cleto Henrique Andrade Silva wrote: Caro Christian, voc foi contra a segunda afirmativa quando disse "Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes.". Se o identificador da mensagem formado pelo nome mais os parmetros, ento, dois mtodos sobrecarregados com parmetros diferentes no podem ser a mesma mensagem. Est completamente certo! Sven -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo (PARA FECHAR)
Ola Andre e Christian (e lista), Essa "nova" discussao sobre polimorfismo iniciou-se qdo eu enviei a citacao do Bruce Eckel. Antes q isso vire off-topic e uma guerra, deixe-me explicar pra todo mundo o q acontece e pq este assunto eh pertinente (espero q seja a ultima vez... :-)) - O que eh polimorfismo? Ateh o inicio da decada de 90, polimorfismo era (com certeza, indiscutivelmente) a capacidade presente no C de se declarar uma funcao com um mesmo nome e varios argumentos - void funcao(int a), void funcao(int a, int b). Com o surgimento das linguagens orientadas a objeto, polimorfismo passou a ser definido como a capacidade de uma chamada de metodo sempre acontecer no ultimo objeto da hierarquia que o redefine (em Java eh assim, em C++ eh preciso usar virtual). No contexto de OOP, polimorfismo conforme definido somente no paragrafo acima (juntamente com abstracao de dados, encapsulamento e heranca) passou a ser um dos conceitos essenciais para que uma linguagem pudesse ser considerada orientada a objetos. A primeira definicao deveria continuar sendo usada somente nas linguagens antigas, mas jah q Java e C++ suportam overloading, alguns autores continuaram utilizando o termo polimorfismo para se referiri a ele tb. Aih comeca nossa discussao... - Por q ha esssa discussao? Ha duas semanas atras, alguem na lista falou q estava lendo um livro sobre Java e disse que este livro SOH CONSIDERAVA POLIMORFISMO COMO OVERLOADING, ALGO COMPLETAMENTE INCONCEBIVEL MESMO PARA OS QUE DEFENDEM Q OVERLOADING TB EH POLIMORFISMO. Daih, eu e o Sven nos revezamos (pode-se dizer) para explicar q o termo polimorfimo (DENTRO DO CONTEXTO OOP) se aplica a OVERRIDING ou DYNAMIC BINDING. - Pq a discussao eh pertinente? Conforme jah explicado, polimorfismo (significando overriding) eh um dos conceitos essenciais da OOP (object-oriented programming ou POO ou OO, como desejarem). Se vc nao sabe como funciona a ligacao dinamica, entao vc vai ter SERIOS PROBLEMAS EM JAVA. Por isso q eu disse q era um conceito basico, no sentido de ser ESSENCIAL, A BASE PARA PROGRAMAR BEM EM JAVA. 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. Agora, qdo ponto for somente PROGRAMACAO JAVA, aih vc decide se polimorfismo tb eh overloading ou nao. Como alguns acham (eu nao, but anyway) q religiao nao se discute, eh bom a gente parar por aki. Espere q tenha ficado claro o ponto. 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. 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. 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; - 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; - 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 - 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). Obrigado pela atencao e paciencia de terem lido ate aki. []'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] -
Re: [java-list] Polimorfismo (PARA FECHAR) II
Caro Michael, Eu vou lhe fazer uma pergunta e se a sua resposta for adequada eu posso mudar de opinio quanto a minha posio. A pergunta : Porque o overloading no polimorfismo? Acredito que a resposta a esta pergunta crucial para definirmos se overloading ou no polimorfismo. Acho que voc est colocando a sua definio como final e acredito que a discusso longe de final. Se devemos fechar a questo, ela deve ser fechada como est: em aberto (paradoxal mas inevitvel). A sua argumentao baseada nas suas idias e est desconsiderando toda e qualquer arguemntao que eu coloquei. Quanto ao seu email, tenho alguns comentrios: 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. No. Quando disserem polimorfismo, pense em overriding e overloading. Espere q tenha ficado claro o ponto. 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. Tambm mantenho minha opinio de que polimorfismo aplica-se a overriding e overloading, dynamic binding e afins. 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 ento mudar o foco da discusso a teoria em si e tentarmos chegar em uma concluso. 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; - 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 tambm diz-se isto. - 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 falcia lgica. Se para algo pertencer a um conjunto A ele tem que ter as caractersticas {X,Y,Z}, no quer dizer que se um elemento que no pertence ao conjunto A contm alguma das caractersticas ento estas caractersitcas no definem o conjunto A. - 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 discusso e acredito que totalmente vlida na lista. Para mim a discusso no est fechada. Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Mister M wrote: Ola Christian Rauh, NENHUMA LINGUAGEM precisa suportar overloading para ser orientada a objetos. C suporta overloading e NAO EH ORIENTADA A OBJETOS. Nao ha exemplos aih, mas vc poder dizer: public void fazX(int a); public void fazX(inta, int b); Isso no plenamente verdade. Existem alguns implementaes de C que suportam overloading, mas no portavel. Ansi KR C no supportam overloading. Por isso existem por exemplo as familhas de printf scanf: printf vprintf sprintf fprintf vfprintf etc. Detalhe, compilando o ddigo acima com varias compiladores C++ provavelmente no reclamam e compilam, mesmo sendo cdigo C. Outro detalhe, C at tem alguns jeitinhosde criar objetos. O struct e union aceitam function pointers. Na verdade o Stroustrup quando crio C++ usava o struct como base para classes. Sven -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caros, - Polimorfismo(vrias formas) significa um mesmo mtodo poder ter comportamentos diferentes em classes diferentes. - A assinatura(identificao) de um mtodo formada pelo seu nome e seus parmetros e no somente pelo seu nome. Considerando as duas afirmaes acima podemos concluir que sobrecarga no polimorfismo, pois, quando fazemos sobrecarga estamos tratando de mtodos diferentes apesar de terem o mesmo nome. Dois mtodos sobrecarregados tm o mesmo nome, porm, no so a mesma mensagem. Portanto, comportamentos diferentes para mtodos diferentes me parece uma coisa bvia. Abraos. -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
[java-list] Polimorfismo (PARA FECHAR) II
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...
Re: [java-list] Polimorfismo
Caro Cleto, Cleto Henrique Andrade Silva wrote: - Polimorfismo(vrias formas) significa um mesmo mtodo poder ter comportamentos diferentes em classes diferentes. Ou: - Polimorfismo(vrias formas) significa um mesmo mtodo poder ter comportamentos diferentes. - A assinatura(identificao) de um mtodo formada pelo seu nome e seus parmetros e no somente pelo seu nome. Considerando as duas afirmaes acima podemos concluir que sobrecarga no polimorfismo, pois, quando fazemos sobrecarga estamos tratando de mtodos diferentes apesar de terem o mesmo nome. Dois mtodos sobrecarregados tm o mesmo nome, porm, no so a mesma mensagem. Portanto, comportamentos diferentes para mtodos diferentes me parece uma coisa bvia. Considerando a minha primeira afirmao podemos concluir que sobrecarga polimorfismo, pois, quando fazemos sobrecarga estamos tratando de funces diferentes que implementam o mesmo mtodo. Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes. Portanto, comportamentos diferentes parao mesmo mtodo, me parece uma coisa bvia. Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caro Jorge, Jorge Martins wrote: Concordo com voc e ainda digo mais. Conceitualmente, polimorfirsmo a capacidade dos objetos responderem diferenciadamente a mesma mensagem (ou estmulo) de acordo com sua classe no momento. De acordo com a classe e parmetros. Dois mtodos com assinaturas diferentes no podem ser considerados a mesma mensagem. Porque no? Apenas possuem o mesmo nome (ou token) com o fim de facilitar o entendimento do programador, mas em momento algum representam a mesma mensagem. Representam sim, afinal comum fazermos overloading para justamente tratar a mesma mensagem de maneira diferente de acordo com os mtodos. Por exemplo, formatar uma data com o padro usual ou com um padro especificado. Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo (PARA FECHAR) II
Mister M, - 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. Isto nao impede que o conceito seja estendido ou re-interpretado. Ou que alguem diga que overloading eh um tipo especifico de polimorfismo. Este alguem, em algum ponto do universo, disse isso e o conceito pegou, tanto que muita gente hoje concorda com ele. Essa pessoa estendeu o conceito. Eu simplesmente nao posso dizer que o cara esta _errado_. Eh um conceito novo. - 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. Eh exatamente sobre isto que eu estou falando. A linguagem que implementa overloading, de acordo com este novo (?) conceito, implementa "polimorfismo multiplo", ou qualquer outro nome que tenha sido adotado. Eh uma nova nomenclatura, apenas. Soh estou comentando q sua definicao vem de conceitos q foram se tornando "deprecated" com o tempo. Pode ate ser, mas ainda sao utilizados e aceitos por _muita_ gente. Essas pessoas nao acham que o termo seja tao deprecated assim. Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo no conceito OOP. De novo. Conceito de quem? O conceito nao pode ser estendido? Polimorfismo em OO eh sempre overriding e dynamic binding De acordo com o seu conceito (e de muitas, muitas outras pessoas, eh bem verdade) Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o polimorfismo (por consequencia) do jeito q expliquei (so preciso achar...) Alguem pode ter feito isto e o conceito pode ter sido mudado posteriormente, ou algumas pessoas podem ter adotado uma nomenclatura diferente. Acho que eh saudavel a aceitacao de novos conceitos, por mais estranhos que eles possam parecer. Eh possivel que no futuro chegue-se `a conclusao _unanima_ de que overloading nao eh polimorfismo porem, _hoje_, os dois conceitos sao aceitos. Nao da pra dar as costas para tanta gente que acha o contrario. Nao, dentro do contexto de algumas linguagens sim, mas em OO, conceitualmente nao (vide explicacao acima). Nao existe um conceito de OO imutavel eh inquestionavel. Eh assim que as coisas evoluem. Se alguem sugeriu uma modificacao, pode ser que ela seja valida. Polimorfismo tem a ver com a mesma mensagem Mais uma vez, de acordo com o conceito que voce defende. Outras pessoas discordam. Cordialmente, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caro Christian, voc foi contra a segunda afirmativa quando disse "Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes.". Se o identificador da mensagem formado pelo nome mais os parmetros, ento, dois mtodos sobrecarregados com parmetros diferentes no podem ser a mesma mensagem. Cleto. - Original Message - From: "Christian Rauh" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, March 21, 2001 2:23 PM Subject: Re: [java-list] Polimorfismo Caro Cleto, Cleto Henrique Andrade Silva wrote: - Polimorfismo(vrias formas) significa um mesmo mtodo poder ter comportamentos diferentes em classes diferentes. Ou: - Polimorfismo(vrias formas) significa um mesmo mtodo poder ter comportamentos diferentes. - A assinatura(identificao) de um mtodo formada pelo seu nome e seus parmetros e no somente pelo seu nome. Considerando as duas afirmaes acima podemos concluir que sobrecarga no polimorfismo, pois, quando fazemos sobrecarga estamos tratando de mtodos diferentes apesar de terem o mesmo nome. Dois mtodos sobrecarregados tm o mesmo nome, porm, no so a mesma mensagem. Portanto, comportamentos diferentes para mtodos diferentes me parece uma coisa bvia. Considerando a minha primeira afirmao podemos concluir que sobrecarga polimorfismo, pois, quando fazemos sobrecarga estamos tratando de funces diferentes que implementam o mesmo mtodo. Dois mtodos sobrecarregados tm o mesmo nome e so a mesma mensagem com parmetros diferentes. Portanto, comportamentos diferentes parao mesmo mtodo, me parece uma coisa bvia. Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo (PARA FECHAR) II
Eu tenho apenas assistido a toda essa discucao mas nao resisti aa tentacao de dar o meu palpite... Eu estou mais para o lado do Andre do que para o lado do Mister M. "Conceito" de qualquer coisa eh uma coisa meio aleatoria. Alguem define o conceito e aquilo passa a valer. Mas o que essa discussao toda mostrou eh que nenhum dos dois conceitos pegou de verdade, e o termo "polimorfismo" passou a significar diferentes coisas dependendo de _quem_ o usa. Na minha o opiniao isso nao faz a menor diferenca. Sempre achei que poliformismo era pura e simplesmente method overriding. Mas os argumentos a favor ou contra a validade do termo para method overload sao igualmente fortes. O que importa para mim eh: Voce sabe usar method overriding eficientemente? Voce sabe usar method overloading eficientemente? Sabe? Entao otimo, nao faz a menor diference qual dos dois eh "polimorfismo" ou nao. Se quiserem podemos criar um novo termo e passar a usa-lo... Pronto. Ai estao os meus cinco centavos... Abracos a todos, Marcelo Quintella - Original Message - From: "Andre Mendonca" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: March 21, 2001 1:26 PM Subject: RE: [java-list] Polimorfismo (PARA FECHAR) II Mister M, - 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. Isto nao impede que o conceito seja estendido ou re-interpretado. Ou que alguem diga que overloading eh um tipo especifico de polimorfismo. Este alguem, em algum ponto do universo, disse isso e o conceito pegou, tanto que muita gente hoje concorda com ele. Essa pessoa estendeu o conceito. Eu simplesmente nao posso dizer que o cara esta _errado_. Eh um conceito novo. - 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. Eh exatamente sobre isto que eu estou falando. A linguagem que implementa overloading, de acordo com este novo (?) conceito, implementa "polimorfismo multiplo", ou qualquer outro nome que tenha sido adotado. Eh uma nova nomenclatura, apenas. Soh estou comentando q sua definicao vem de conceitos q foram se tornando "deprecated" com o tempo. Pode ate ser, mas ainda sao utilizados e aceitos por _muita_ gente. Essas pessoas nao acham que o termo seja tao deprecated assim. Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo no conceito OOP. De novo. Conceito de quem? O conceito nao pode ser estendido? Polimorfismo em OO eh sempre overriding e dynamic binding De acordo com o seu conceito (e de muitas, muitas outras pessoas, eh bem verdade) Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o polimorfismo (por consequencia) do jeito q expliquei (so preciso achar...) Alguem pode ter feito isto e o conceito pode ter sido mudado posteriormente, ou algumas pessoas podem ter adotado uma nomenclatura diferente. Acho que eh saudavel a aceitacao de novos conceitos, por mais estranhos que eles possam parecer. Eh possivel que no futuro chegue-se `a conclusao _unanima_ de que overloading nao eh polimorfismo porem, _hoje_, os dois conceitos sao aceitos. Nao da pra dar as costas para tanta gente que acha o contrario. Nao, dentro do contexto de algumas linguagens sim, mas em OO, conceitualmente nao (vide explicacao acima). Nao existe um conceito de OO imutavel eh inquestionavel. Eh assim que as coisas evoluem. Se alguem sugeriu uma modificacao, pode ser que ela seja valida. Polimorfismo tem a ver com a mesma mensagem Mais uma vez, de acordo com o conceito que voce defende. Outras pessoas discordam. Cordialmente, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo
Christian Pois no o mesmo estmulo. Uma mensagem definida pela assinatura da mesma. Se h uma assinatura diferente, h uma mensagem diferente. O nome da funo no suficiente pois assinatura composta pelo nome da funo + tipos dos parmetros. No seu exemplo, para formatar data, voc mesmo denunciou que so mensagens diferentes. Dizer "formate data com padro usual" e "formate data com este padro" so coisas diferentes. Seria polimorfismo se eu disse "formate data" e o OBJETO tomasse a deciso da formatao. Perceba o conceito, eu falaria para o objeto uma s mensagem e ESTE TOMARIA A DECISO DO PROCEDIMENTO. Ou seja, ele se comportaria polimorficamente a partir de um mesmo estmulo, ou mensagem. abraos Jorge -Original Message- From: Christian Rauh [mailto:[EMAIL PROTECTED]] Sent: quarta-feira, 21 de maro de 2001 14:25 To: [EMAIL PROTECTED] Subject: Re: [java-list] Polimorfismo Caro Jorge, Jorge Martins wrote: Concordo com voc e ainda digo mais. Conceitualmente, polimorfirsmo a capacidade dos objetos responderem diferenciadamente a mesma mensagem (ou estmulo) de acordo com sua classe no momento. De acordo com a classe e parmetros. Dois mtodos com assinaturas diferentes no podem ser considerados a mesma mensagem. Porque no? Apenas possuem o mesmo nome (ou token) com o fim de facilitar o entendimento do programador, mas em momento algum representam a mesma mensagem. Representam sim, afinal comum fazermos overloading para justamente tratar a mesma mensagem de maneira diferente de acordo com os mtodos. Por exemplo, formatar uma data com o padro usual ou com um padro especificado. Christian -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo (PARA FECHAR) II
- No tempo do C puro, overloading ERA POLIMORFISMO. Ehmm qual C essa ?? void test(int a){} void test(char b) {} No compila... - 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. Stroustrup ?? -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caro Michael, Estou entrando tarde nesta discusso. No sei qual o ponto exato que voc e o Sven esto defendendo mas a sua citao 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 contrrio 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. Dont be fooled; if it isnt late binding, it isnt polymorphism. Aqui ele implica que "se no linkagem dinmica" ento "no polimorfismo". Revertendo: polimorfismo - linkagem dinmica Porm, [Budd] diz logo a frente na seo 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 funo correta em linguagem fortemente tipadas (como C++) e fazer linkagem esttica simplesmente um otimizao. Assim, o C++ est simplesmente otimizando uma caracterstica orientada a objeto. Obrigado, Christian Rauh NewTrade Referncias: [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 Usurios Java da Sucesu-SP dvidas 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] -
[java-list] Polimorfismo
Mais uma citacao do livro Core Java, Cornell Horstmann, Makron Books, 1998, traduzido do original da Sun (pg 155-6): A capacidade de um objeto decidir qual metodo aplicara a si mesmo, dependendo de onde se encontra na hierarquia de heranca, e chamda de polimorfismo. A ideia por tras do polimorfismo eh que, embora a mensagem possa ser a mesma, os objetos talvez respondam de forma diferente. O polimorfismo pode se aplicar a qualquer metodo herdado de uma superclasse. A chave para que o polimorfismo funcione eh chamada de ligacao adiada. Isso significa q o compilador nao gera o codigo para chamar um metodo em tempo de compilacao. Em vez disso, sempre que vc define um metodo com um objeto, o compilador gera o codigo para calcular qual metodo chamara, usando a informacao de tipo do objeto. Esse processo geralmente eh conhecido como ligacao adiada, ligacao dinamica ou despacho dinamico. O mecanismo regular de chamada de funcao eh conhecido como ligacao estatica, pois a operacao a ser executada eh completamente determinada em tempo de compilacao. A ligacao estatica depende apenas do metodo; a ligacao dinamica depende do tipo de variavel do objeto e da posicao do objeto real na hierarquia de heranca. Resumindo, a heranca e o polimorfismo permitem que o aplicativo informe o modo geral pelo qual deseja que as coisas prossigam. As classes individuais na hierarquia de heranca sao responsaveis por executar os detalhes - usando o polimorfismo para determinar quais metodos chamarah. O polimorfismo em uma hierarquia de heranca as vezes eh chamado de POLIMORFISMO VERDADEIRO, distinguindo-o do tipo mais limitado de sobrecarga de nome que nao eh resolvido dinamicamente, mas estaticamente, em tempo de execucao. Veja a pagina 7 do glossario da apostila do curso SL-110: polymorphism A method that is "multiply formed". That is, the same method name with THE SAME PROTOTYPE is defined for TWO OR MORE CLASSES. Polymorphic methods have the same semantics (that is, to read, write, display, and update an object), but different IMPLEMENTATIONS. Each implementation is appropriate for the particular class for which it is defined. Resumindo: - Polimorfismo tem a ver com heranca - Polimorfismo tem a ver com fazer: public class Animal { public void oi() { System.out.println("animal"); } } public class Cachorro extends Animal { public void oi() { System.out.println("cachorro"); } } public class Teste { public static void main(String[] args) { Animal animal = new Cachorro(); animal.oi(); } } e receber cachorro na saida padrao. - Polimorfismo tem a ver com dynamic binding ou late binding e nunca com static binding - A crenca de q polimorfismo eh sobrecarga ou overloading vem da epoca do C, quando nao havia orientacao a objetos. Hoje, digamos assim, dizer que overloading == polimorfismo eh "deprecated". Os materiais citados sao propriedade intelectual de seus autores. Se alguem ainda tiver duvida sobre esses conceitos basicos da OOP, faca um curso da Sun, pq pra isso eles sao bons (aprender Java mesmo eh mais complicado...) []'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] -
RE: [java-list] Polimorfismo
Dei uma rapida pesquisada e percebi que muita gente diz que overloading eh polimorfismo e muita gente diz que nao eh. Como a importancia das referencias esta em questao, o que eh que Bertrand Meyer diz a respeito do assunto? Alguem tem o livro dele por perto? (o meu esta la em casa) Acho que ele diz que overloading _eh_ polimorfismo, mas nao tenho certeza. Andre Mendonca [EMAIL PROTECTED] Sakonnet Technology, LLC 594 Broadway, Suite 1008 New York, NY 10012 -Original Message- From: Christian Rauh [mailto:[EMAIL PROTECTED]] Sent: Tuesday, March 20, 2001 9:06 AM To: [EMAIL PROTECTED] Subject: Re: [java-list] Polimorfismo Caro Michael, Estou entrando tarde nesta discusso. No sei qual o ponto exato que voc e o Sven esto defendendo mas a sua citao 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 contrrio 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. Dont be fooled; if it isnt late binding, it isnt polymorphism. Aqui ele implica que "se no linkagem dinmica" ento "no polimorfismo". Revertendo: polimorfismo - linkagem dinmica Porm, [Budd] diz logo a frente na seo 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 funo correta em linguagem fortemente tipadas (como C++) e fazer linkagem esttica simplesmente um otimizao. Assim, o C++ est simplesmente otimizando uma caracterstica orientada a objeto. Obrigado, Christian Rauh NewTrade Referncias: [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 Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo
Mister M, Ate onde eu pude ver, muitos autores consideram overloading um tipo de polimorfismo. Tavez seja uma questao de definicao, quase como uma preferencia pessoal, que na pratica pouco afeta a maneira como programamos. A capacidade de um objeto decidir qual metodo aplicara a si mesmo, dependendo de onde se encontra na hierarquia de heranca, e chamda de polimorfismo... Esta eh a definicao mais conhecida de polimorfismo. Inclusive eh a unica que eu considerava correta ate o comeco desta discussao. O polimorfismo em uma hierarquia de heranca as vezes eh chamado de POLIMORFISMO VERDADEIRO, distinguindo-o do tipo mais limitado de sobrecarga de nome que nao eh resolvido dinamicamente, mas estaticamente, em tempo de execucao. Polimorfismo verdadeiro, polimorfismo simples, polimorfismo (ponto final). Ha outros nomes, provavelmente. Porem, uma interpretacao deste trecho acima me leva a crer que o autor nao descarta a existencia de outros tipos de polimorfismo. Resumindo: - Polimorfismo tem a ver com heranca - Polimorfismo tem a ver com fazer: Como eu disse, muita gente acha que o conceito de polimorfismo eh um pouco mais abrangente. Repito, ate pouco tempo atras (algumas horas, talvez), eu nao considerava overloading polimorfismo. Continuo achando estranho o conceito, mas eu nao diria que eh errado. Talvez polimorfismo tenha a ver com "muitas formas", o que nao descarta overloading. Vou perguntar novamente, alguem sabe o que Bertrand Meyer diz a respeito do assunto? Os materiais citados sao propriedade intelectual de seus autores. Se alguem ainda tiver duvida sobre esses conceitos basicos da OOP, faca um curso da Sun, pq pra isso eles sao bons (aprender Java mesmo eh mais complicado...) Talvez o curso nao seja necessario, ate mesmo porque esta nao eh uma duvida basica. Eh uma questao conceitual que, ate onde eu posso ver, esta longe de ser uma unanimidade. Abraco, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Caro Andr vi voc comentando a respeito do curso da Sun, sou iniciante e gostaria que desse a sua opnio a respeito deste cursos, pois estou prestes a faz-los. Um abrao Anderson [EMAIL PROTECTED] - Original Message - From: Andre Mendonca [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 20, 2001 4:33 PM Subject: RE: [java-list] Polimorfismo Mister M, Ate onde eu pude ver, muitos autores consideram overloading um tipo de polimorfismo. Tavez seja uma questao de definicao, quase como uma preferencia pessoal, que na pratica pouco afeta a maneira como programamos. A capacidade de um objeto decidir qual metodo aplicara a si mesmo, dependendo de onde se encontra na hierarquia de heranca, e chamda de polimorfismo... Esta eh a definicao mais conhecida de polimorfismo. Inclusive eh a unica que eu considerava correta ate o comeco desta discussao. O polimorfismo em uma hierarquia de heranca as vezes eh chamado de POLIMORFISMO VERDADEIRO, distinguindo-o do tipo mais limitado de sobrecarga de nome que nao eh resolvido dinamicamente, mas estaticamente, em tempo de execucao. Polimorfismo verdadeiro, polimorfismo simples, polimorfismo (ponto final). Ha outros nomes, provavelmente. Porem, uma interpretacao deste trecho acima me leva a crer que o autor nao descarta a existencia de outros tipos de polimorfismo. Resumindo: - Polimorfismo tem a ver com heranca - Polimorfismo tem a ver com fazer: Como eu disse, muita gente acha que o conceito de polimorfismo eh um pouco mais abrangente. Repito, ate pouco tempo atras (algumas horas, talvez), eu nao considerava overloading polimorfismo. Continuo achando estranho o conceito, mas eu nao diria que eh errado. Talvez polimorfismo tenha a ver com "muitas formas", o que nao descarta overloading. Vou perguntar novamente, alguem sabe o que Bertrand Meyer diz a respeito do assunto? Os materiais citados sao propriedade intelectual de seus autores. Se alguem ainda tiver duvida sobre esses conceitos basicos da OOP, faca um curso da Sun, pq pra isso eles sao bons (aprender Java mesmo eh mais complicado...) Talvez o curso nao seja necessario, ate mesmo porque esta nao eh uma duvida basica. Eh uma questao conceitual que, ate onde eu posso ver, esta longe de ser uma unanimidade. Abraco, Andre Mendonca [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
No concordamos com este explicao 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 referncia 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 verso do methodo dentro da mesma classe tem que ser executado num certo momento durante a executao do programma. Isso NO 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 so 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 implementao da interface a O foo() ser escolhido at runtime, no possivel de fazer optimao } } apesar que a classe Christian Rauh wrote: [EMAIL PROTECTED]">Caro Michael,Estou entrando tarde nesta discusso. No sei qual o pontoexato que voc e o Sven esto defendendo mas a sua citao errada. No livro "An Introduction to Object-Oriented Progamming"de Timothy Budd [Budd], temos:"The most common form of polymorphism in conventional programminglanguages is overloading". pg. 185Como a referencia [Budd] mais importante do que [Eckel], temosque: overloading polimorfismo. O que me parece que ocontrrio 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 defaultarguments, which are sometimes presented as object-oriented.Dont be fooled; if it isnt late binding, it isnt polymorphism. Aqui ele implica que "se no linkagem dinmica" ento "no polimorfismo". Revertendo: polimorfismo - linkagem dinmicaPorm, [Budd] diz logo a frente na seo 13.2 sobre overloadingque:"The facts that the compiler can often determine the correct[overloading] function at compile time (in a strongly typedlanguage), and can generate only a single code sequence, aresimply optimizations"Ou seja, o fato de que o compilador pode descobrir a funocorreta em linguagem fortemente tipadas (como C++) e fazerlinkagem esttica simplesmente um otimizao. Assim, o C++ estsimplesmente otimizando uma caracterstica orientada a objeto.Obrigado,Christian RauhNewTradeReferncias:[Budd] Budd, Timothy. "An Introduction to Object-OrientedProgamming", Addison-Wesley, 1991.[Eckel] Eckel, Bruce. "Thinking C++".-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmpara sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Polimorfismo
Caro Michael e Sven, Eu entendo que para vocs polimorfismo caracterstica de um classe poder agir como outra seja por subclasseamento ou por implementao (de interfaces). Porm, se usarmos o purismo de orientao a objetos o polimorfismo a caracterstica de um objeto de responder a uma mesma mensagem de acordo com um contexto. Espero que vocs concordem com esta definio ultra-purista. O que estamos brigando uns com os outros a respeito do que este contexto. Na minha opinio, os parmetros utilizados na mensagem fazem parte do contexto, enquanto na opinio de vocs, no faz. Na opinio de vocs apenas a classe do "container" (no sei a expresso em portugus) faz parte do contexto. Estou correto? Mister M wrote: Ola Christian Rauh, NENHUMA LINGUAGEM precisa suportar overloading para ser orientada a objetos. Pode ser, mas ser ento que ela precisa suportar polimorfismo tambm? (No sei se esta era a discusso original). C suporta overloading e NAO EH ORIENTADA A OBJETOS. Isto no quer dizer nada porque se a - b no quer dizer b - a. Nao ha exemplos aih, mas vc poder dizer: public void fazX(int a); public void fazX(inta, int b); nao tem nada a ver com orientacao a objetos. Qdo vc se refere a polimorfismo com respeito a OOP, ESSA EH A UNICA FORMA ACEITAVEL, EMBORA COSTUMASSE SE USAR ESTA DENOMINACAO NA EPOCA DAS LINGUAGENS PROCEDURAIS E ALGUNS AUTORES NAO TENHAM SE RENOVADO. No entendi o que voc quer dizer. Polimorfismo eh definido pela grande maioria das corporacoes (INCLUINDO A SUN NO JAVA TUTORIAL) como overriding. Vc pode achar 1000 referencias que digam polimorfismo == overloading, mas depois da chegada da OOP mudou-se para polimorfismo == overriding. Eu no estou defendendo que polimorfismo == overloading mas sim que polimorfismo == {overriding, overloading} Ou seja, segundo a viso de contexto eu estou contando classe e argumentos como contexto e voc est apenas considerando classe. Note que Budd diz: The most common form of polymorphism in CONVENTIAL PROGRAMMING LANGUAGES is overloading e nao em LINGUAGENS ORIENTADAS A OBJETO. E tb: Sim. Quando coloquei esta citao eu estava interessado em: "form of polymorphism [...] is overloading". Ou seja, o autor diz que overloading polimorfismo. 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 suponho q vc tenha acrescentado a parte em uppercase (pq gramaticamente em ingles o certo seria OVERLOADED) Sim fui eu que adicionei o "overloading" para inserir o contexto da frase e no ter que escrever o pargrafo inteiro. E a expresso correta "overloading" porque se refere a um das diferentes funes que faz o overloading da mesma funo "overloaded". Ou seja, em: funcao(int a); funcao(int a, int b); Temos que "funcao(int a)" e "funcao(int a, int b)" so "overloading functions" enquanto "funcao" uma "overloaded function". e ISSO NAO IMPLICA EM ELE DIZER QUE OVERLOADING EM LINGUAGENS ORIENTADAS A OBJETO EH POLIMORFISMO, sao apenas "otimizacoes"; esta premissa (overloading == polimorfismo) soh se aplica na "velha ordem procedural". No realmente, apesar de que isto claro nos primeiros pargrados da Seo intitulada "Overloading". O que isto quer dizer que o fato de o compilador poder fazer linkagem esttica dos mtodos com overloaded em linguagens fortemente tipadas simplesmente uma otimizao. uma opo de implementao do compilador para tornar o cdigo final melhor, no necessrio e nem implica que isto no polimorfismo. Eh uma questao muito particular, entretanto, mas todos os livros modernos parecem apoiar a minha afirmacao (e a do Bruce Eckel, em quem eu confio... costumo trocar uns e-mails com o cara, eh um patrimonio da humanidade... :-)) Quais livros modernos? Eu citei o Budd porque, at onde eu saiba, o texto dele ainda uma das referncias nmero 0 em orientao a objetos. Soh pra tirar a duvida, procure a ultima edicao do livro do Budd. Infelizmente eu no a tenho. Mas se voc tiver a, pode citar as afirmaes contrrias a minha opinio. Ainda assim bem provvel que eu comee a discordar do Budd. A lista toda (eu acho) agradece pelo seu interesse por essa "discussao filosofica". OOP continua sendo um misterio para muitos por causa destas divergencias entre as pessoas conceituadas. Concordo totalmente e raro poder ter tais discusses em uma lista pblica. Agradeo a disposio e quero ver o seu reply. Gostaria que voc desse uma ateno especial a questo de mensagens pois j que vamos tratar de OO vamos para as origens! Christian Rauh []'s Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: Christian Rauh [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: Re: [java-list]
Re: [java-list] Polimorfismo
Caro Sven, Sven van t Veer wrote: No concordamos com este explicao 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 referncia de uma subclasse que inclui o conceito de Dynamic Binding ou a possibilidade de escolher o methodo certo para invocar at runtime. Esta definio pouco abrangente, veja o meu outro email. Com overloading o progammador escolha qual verso do methodo dentro da mesma classe tem que ser executado num certo momento durante a executao do programma. Isso NO polimorfismo. sim, estou assumindo que alm da classe a ser utilizada, os parmetros passados tambm fazem parte da escolha da resposta a uma mensagem (invocao de mtodo). Christian Rauh -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
[java-list] Polimorfismo
Ola pessoal, Para finalizar com peso a discussao sobre polimorfismo e mostrar q a definicao apresentada por mim e pelo Sven eh a correta, lah vai uma citacao do Thinking in C++, do Bruce Eckel, pg. 716 (737 no PDF), que tb se aplica ao Java: People are often confused by other, non-object-oriented features of C++, like overloading and default arguments, which are sometimes presented as object-oriented. Dont be fooled; if it isnt late binding, it isnt polymorphism. Traducao (com algumas observacoes): As pessoas geralmente ficam consas com outras caracteristicas NAO-ORIENTADAS-A-OBJETO do C++, como overloading (sobrecarga, ou seja, ter um metodo a(), a(int i) e a(int i, byte b)) e argumentos padrao, que sao apresentadas como sendo orientadas a objeto algumas vezes. Nao se deixe enganar: se nao eh late binding (ou dynamic binding, sinonimos), NAO E POLIMORFISMO. O mestre Bruce falou, quem sou eu pra discordar... :-) 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] -
Re: RES: [java-list] Polimorfismo
Sim eh verdade (errei feio... :-)). Mas acho q o objetivo foi bem alcancado mesmo assim. Ah, polimorfismo parametrico, como chamam alguns o overloading, nao pode ser tratado genericamente como polimorfismo. Polimorfismo eh o q segue abaixo e fim de papo!!! :-) O resto eh invencao de autores. Os livros de OOP desvinculados de linguagem nao aprensentam nada sobre overloading (ateh mesmo pq isto NAO CARACTERIZA UMA LINGUAGEM COMO ORIENTADA A OBJETOS) e prefiro confiar nesta abordagem neutra. No offenses. Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: "Aristides Tavares dos Santos" [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: Re: RES: [java-list] Polimorfismo Date: Thu, 8 Mar 2001 11:47:00 -0300 Apenas uma correção matemática, o círculo que vc menciona quer dizer na verdade circuferência, e círculo preenchido é redundante, basta dizer círculo. Abraços Aristides - Original Message - From: "Mister M" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, March 08, 2001 8:17 AM Subject: Re: RES: [java-list] Polimorfismo Na verdade, polimorfismo eh o q o Sven explicou no e-mail anterior, ou seja, estah relacionado com o Dynamic Binding. Isso que estah explicado no e-mail do Alexandre (embora eu jah tenha visto milhares de vezes erradamente, o q significa q algum livro deve ter dito isso) eh o overloading, ou seja, qdo um metodo tem diversas formas de ser chamado por causa da lista de parametros e, por isso, pode tomar n acoes diferentes. Vou usar o exemplo classico do livro do Bruce Eckel, Thinking in Java: Imagine q vc tenha uma classe FormaGeometrica + ou - assim class FormaGeometrica { public void desenha() { System.out.println("Nao implementado..."); } ... ... } Agora imagine uma subclasse assim: class Circulo extends FormaGeometrica { public void desenha() { // codigo para desenhar circulo... } ... ... } E outra assim: class CirculoPreenchido extends Circulo { public void desenha() { super.desenha(); // codigo para preencher circulo... } ... ... } Qdo vc faz: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); imagine que o metodo retorna qualquer forma geometrica registrada no sistema (Circulo, CirculoPreenchido, FormaGeometrica e outras subclasses). Se este metodo foi declarado como : class FabricaDeFormas { public static FormaGeometrica geraFormaAleatoria() { file://codigo pra gerar forma aleatoria } } ele pode retornar Circulo, por exemplo, q como "extends" FormaGeometrica EH uma FormaGeometrica. Voltando a linha do exemplo: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); forma.desenha(); vc nao pode dizer o q este metodo ira fazer. Ele pode tanto emitir a mensagem q nao esta implementado, como pintar um circulo ou ainda pintar um circulo e preenche-lo. Esta eh a beleza do polimorfismo. O metodo da classe q vc realmente retornou do geraFormaAleatoria() e q vai ser chamado. Baixe o Thinking In Java (em ingles) do site do Bruce (www.bruceeckel.com). Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: Alexandre Rodrigues Gomes [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: "'[EMAIL PROTECTED]'" [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo Date: Wed, 7 Mar 2001 18:01:20 -0300 André, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando são os métodos, ou seja, polimorfismo é a propriedade para que um método assuma várias formas. Por exemplo, considere um método que faça um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teríamos a necessidade de criar dois métodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto não é necessário, o que torna sua solução mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha também que desejamos criar um método para pesquisa que faça a interseção entre idade e naturalidade. Logo, construiríamos um método com a seguinte assinatura: findClient(Date idade, String natural) e todos estes métodos poderiam conviver numa mesma classe, sem problemas. By Alê! -Mensagem original- De: Yurion "André [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de março de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dúvidas sobre polimorfismo. A única coisa que sei sobre o assunto é que está propriedade da OO permite que uma classe tenha vári
Re: RES: [java-list] Polimorfismo
Exatamente, Acho q ateh VB tem Overloading (C tem) Mister M wrote: Sim eh verdade (errei feio... :-)). Mas acho q o objetivo foi bem alcancado mesmo assim. Ah, polimorfismo parametrico, como chamam alguns o overloading, nao pode ser tratado genericamente como polimorfismo. Polimorfismo eh o q segue abaixo e fim de papo!!! :-) O resto eh invencao de autores. Os livros de OOP desvinculados de linguagem nao aprensentam nada sobre overloading (ateh mesmo pq isto NAO CARACTERIZA UMA LINGUAGEM COMO ORIENTADA A OBJETOS) e prefiro confiar nesta abordagem neutra. No offenses. -- 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] -
Re: RES: [java-list] Polimorfismo
Na verdade, polimorfismo eh o q o Sven explicou no e-mail anterior, ou seja, estah relacionado com o Dynamic Binding. Isso que estah explicado no e-mail do Alexandre (embora eu jah tenha visto milhares de vezes erradamente, o q significa q algum livro deve ter dito isso) eh o overloading, ou seja, qdo um metodo tem diversas formas de ser chamado por causa da lista de parametros e, por isso, pode tomar n acoes diferentes. Vou usar o exemplo classico do livro do Bruce Eckel, Thinking in Java: Imagine q vc tenha uma classe FormaGeometrica + ou - assim class FormaGeometrica { public void desenha() { System.out.println("Nao implementado..."); } ... ... } Agora imagine uma subclasse assim: class Circulo extends FormaGeometrica { public void desenha() { // codigo para desenhar circulo... } ... ... } E outra assim: class CirculoPreenchido extends Circulo { public void desenha() { super.desenha(); // codigo para preencher circulo... } ... ... } Qdo vc faz: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); imagine que o metodo retorna qualquer forma geometrica registrada no sistema (Circulo, CirculoPreenchido, FormaGeometrica e outras subclasses). Se este metodo foi declarado como : class FabricaDeFormas { public static FormaGeometrica geraFormaAleatoria() { //codigo pra gerar forma aleatoria } } ele pode retornar Circulo, por exemplo, q como "extends" FormaGeometrica EH uma FormaGeometrica. Voltando a linha do exemplo: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); forma.desenha(); vc nao pode dizer o q este metodo ira fazer. Ele pode tanto emitir a mensagem q nao esta implementado, como pintar um circulo ou ainda pintar um circulo e preenche-lo. Esta eh a beleza do polimorfismo. O metodo da classe q vc realmente retornou do geraFormaAleatoria() e q vai ser chamado. Baixe o Thinking In Java (em ingles) do site do Bruce (www.bruceeckel.com). Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: Alexandre Rodrigues Gomes [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: "'[EMAIL PROTECTED]'" [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo Date: Wed, 7 Mar 2001 18:01:20 -0300 André, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando são os métodos, ou seja, polimorfismo é a propriedade para que um método assuma várias formas. Por exemplo, considere um método que faça um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teríamos a necessidade de criar dois métodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto não é necessário, o que torna sua solução mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha também que desejamos criar um método para pesquisa que faça a interseção entre idade e naturalidade. Logo, construiríamos um método com a seguinte assinatura: findClient(Date idade, String natural) e todos estes métodos poderiam conviver numa mesma classe, sem problemas. By Alê! -Mensagem original- De: Yurion "André [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de março de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dúvidas sobre polimorfismo. A única coisa que sei sobre o assunto é que está propriedade da OO permite que uma classe tenha vários métodos com o mesmo nome desde de que o múmero e o tipo de parâmetros seja diferentes. Todo mundo fala que polimorfismo é só isso!! Porém queria que se possível vc´s me mostrassem exemplos de onde e quando utilizar está propriedade e o que significa realmente polimorfismo.. Desde já agradeço a atenção de todos, André Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.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] - -- 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] - _ Get Your Private, Free E-mail from MS
Re: [java-list] Polimorfismo
- Original Message - From: "Yurion Andr" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, March 07, 2001 2:44 PM Subject: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - Imagina uma super classe ou interface Poligono: public interface Poligono{ public void draw(); } E duas classes filhos de polgonos: Triangulo e Quadrado: public class Triangulo implements Poligono{ /** rotina que desenha um triangulo */ public void draw(){ System.out.println("desenhar um triangulo"); } } public class Quadrado implements Poligono{ /** rotina que desenha um quadrado */ public void draw(){ System.out.println("desenhar um quadrado"); } } Imagine uma classe que contm uma colecao de poligonos e as desenhe: public class PoligonoCollection extends Vector { public void inserirPoligono(Poligono poligono){ addElement(poligono); } public void drawAll(){ java.util.Enumeration enumeration = elements(); while(enumeration.hasMoreElements()){ ((Poligono)enumeration.nextElement()).draw(); } } } E uma classe para testa-lo ... public class TestePoligonos{ public static void main(String [] args){ PoligonoCollection pCollection = new PoligonoCollection(); pCollection.inserirPoligono(new Triangulo()); pCollection.inserirPoligono(new Triangulo()); pCollection.inserirPoligono(new Triangulo()); pCollection.inserirPoligono(new Quadrado()); pCollection.inserirPoligono(new Triangulo()); pCollection.inserirPoligono(new Quadrado()); pCollection.inserirPoligono(new Triangulo()); pCollection.inserirPoligono(new Quadrado()); pCollection.drawAll(); } } Por que o polimorfismo ??? Imagina uma outra situao onde voc precise utilizar outras figuras geomtricas alm do Triangulo e Quadrado... Voc precisa reimplementar a classe PoligonoCollection ??? Resposta no ! Sacou o por que do polimorfismo []'s LN _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RE: [java-list] Polimorfismo
Andr, Isto no polimorfismo. Isto sobrecarga de mtodos (ou ainda de construtores). Polimorfismo a capacidade de objetos responderem diferenciadamente, de acordo com a sua classe, a um mesma mensagem. Assim, ao convocar um mtodo de um objeto criado, ele responder de acordo com a classe que ele foi criado e no de acordo com o tipo de referncia. Exemplo: (sem entrar no mrito desta pssima modelagem) class Homem { void anda () { } } class Perneta extends Homem { void anda() { ... } } . Homem a = new Homem(); Homem b = new Perneta(); a.anda(); // anda como um homem b.anda(); // anda como um perneta .. Ficou claro? abraos Jorge -Original Message- From: Yurion "Andr [mailto:[EMAIL PROTECTED]] Sent: quarta-feira, 7 de maro de 2001 14:44 To: [EMAIL PROTECTED] Subject: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RES: RES: [java-list] Polimorfismo
falou e disse. Me deixei envolver pela emoo e falei besteira. Obrigado. By Al! -Mensagem original- De: Mister M [mailto:[EMAIL PROTECTED]] Enviada em: quinta-feira, 8 de maro de 2001 8:17 Para: [EMAIL PROTECTED] Assunto: Re: RES: [java-list] Polimorfismo Na verdade, polimorfismo eh o q o Sven explicou no e-mail anterior, ou seja, estah relacionado com o Dynamic Binding. Isso que estah explicado no e-mail do Alexandre (embora eu jah tenha visto milhares de vezes erradamente, o q significa q algum livro deve ter dito isso) eh o overloading, ou seja, qdo um metodo tem diversas formas de ser chamado por causa da lista de parametros e, por isso, pode tomar n acoes diferentes. Vou usar o exemplo classico do livro do Bruce Eckel, Thinking in Java: Imagine q vc tenha uma classe FormaGeometrica + ou - assim class FormaGeometrica { public void desenha() { System.out.println("Nao implementado..."); } ... ... } Agora imagine uma subclasse assim: class Circulo extends FormaGeometrica { public void desenha() { // codigo para desenhar circulo... } ... ... } E outra assim: class CirculoPreenchido extends Circulo { public void desenha() { super.desenha(); // codigo para preencher circulo... } ... ... } Qdo vc faz: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); imagine que o metodo retorna qualquer forma geometrica registrada no sistema (Circulo, CirculoPreenchido, FormaGeometrica e outras subclasses). Se este metodo foi declarado como : class FabricaDeFormas { public static FormaGeometrica geraFormaAleatoria() { //codigo pra gerar forma aleatoria } } ele pode retornar Circulo, por exemplo, q como "extends" FormaGeometrica EH uma FormaGeometrica. Voltando a linha do exemplo: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); forma.desenha(); vc nao pode dizer o q este metodo ira fazer. Ele pode tanto emitir a mensagem q nao esta implementado, como pintar um circulo ou ainda pintar um circulo e preenche-lo. Esta eh a beleza do polimorfismo. O metodo da classe q vc realmente retornou do geraFormaAleatoria() e q vai ser chamado. Baixe o Thinking In Java (em ingles) do site do Bruce (www.bruceeckel.com). Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: Alexandre Rodrigues Gomes [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: "'[EMAIL PROTECTED]'" [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo Date: Wed, 7 Mar 2001 18:01:20 -0300 Andr, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando so os mtodos, ou seja, polimorfismo a propriedade para que um mtodo assuma vrias formas. Por exemplo, considere um mtodo que faa um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teramos a necessidade de criar dois mtodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto no necessrio, o que torna sua soluo mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha tambm que desejamos criar um mtodo para pesquisa que faa a interseo entre idade e naturalidade. Logo, construiramos um mtodo com a seguinte assinatura: findClient(Date idade, String natural) e todos estes mtodos poderiam conviver numa mesma classe, sem problemas. By Al! -Mensagem original- De: Yurion "Andr [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista
Re: RES: [java-list] Polimorfismo
Cuidado !!! Method Overloading NO polimorfism!! sven Alexandre Rodrigues Gomes wrote: Andr, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando so os mtodos, ou seja, polimorfismo a propriedade para que um mtodo assuma vrias formas. Por exemplo, considere um mtodo que faa um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teramos a necessidade de criar dois mtodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto no necessrio, o que torna sua soluo mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha tambm que desejamos criar um mtodo para pesquisa que faa a interseo entre idade e naturalidade. Logo, construiramos um mtodo com a seguinte assinatura: findClient(Date idade, String natural) e todos estes mtodos poderiam conviver numa mesma classe, sem problemas. By Al! -Mensagem original- De: Yurion "Andr [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: RES: [java-list] Polimorfismo
Algums autores consideram como polimorfismo paramtrico. []s Daniel A. Sven van t Veer wrote: Cuidado !!! Method Overloading NO polimorfism!! sven Alexandre Rodrigues Gomes wrote: Andr, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando so os mtodos, ou seja, polimorfismo a propriedade para que um mtodo assuma vrias formas. Por exemplo, considere um mtodo que faa um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teramos a necessidade de criar dois mtodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto no necessrio, o que torna sua soluo mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha tambm que desejamos criar um mtodo para pesquisa que faa a interseo entre idade e naturalidade. Logo, construiramos um mtodo com a seguinte assinatura: findClient(Date idade, String natural) e todos estes mtodos poderiam conviver numa mesma classe, sem problemas. By Al! -Mensagem original- De: Yurion "Andr [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: RES: [java-list] Polimorfismo
Apenas uma correo matemtica, o crculo que vc menciona quer dizer na verdade circuferncia, e crculo preenchido redundante, basta dizer crculo. Abraos Aristides - Original Message - From: "Mister M" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, March 08, 2001 8:17 AM Subject: Re: RES: [java-list] Polimorfismo Na verdade, polimorfismo eh o q o Sven explicou no e-mail anterior, ou seja, estah relacionado com o Dynamic Binding. Isso que estah explicado no e-mail do Alexandre (embora eu jah tenha visto milhares de vezes erradamente, o q significa q algum livro deve ter dito isso) eh o overloading, ou seja, qdo um metodo tem diversas formas de ser chamado por causa da lista de parametros e, por isso, pode tomar n acoes diferentes. Vou usar o exemplo classico do livro do Bruce Eckel, Thinking in Java: Imagine q vc tenha uma classe FormaGeometrica + ou - assim class FormaGeometrica { public void desenha() { System.out.println("Nao implementado..."); } ... ... } Agora imagine uma subclasse assim: class Circulo extends FormaGeometrica { public void desenha() { // codigo para desenhar circulo... } ... ... } E outra assim: class CirculoPreenchido extends Circulo { public void desenha() { super.desenha(); // codigo para preencher circulo... } ... ... } Qdo vc faz: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); imagine que o metodo retorna qualquer forma geometrica registrada no sistema (Circulo, CirculoPreenchido, FormaGeometrica e outras subclasses). Se este metodo foi declarado como : class FabricaDeFormas { public static FormaGeometrica geraFormaAleatoria() { file://codigo pra gerar forma aleatoria } } ele pode retornar Circulo, por exemplo, q como "extends" FormaGeometrica EH uma FormaGeometrica. Voltando a linha do exemplo: FormaGeometrica forma = FabricaDeFormas.geraFormaAleatoria(); forma.desenha(); vc nao pode dizer o q este metodo ira fazer. Ele pode tanto emitir a mensagem q nao esta implementado, como pintar um circulo ou ainda pintar um circulo e preenche-lo. Esta eh a beleza do polimorfismo. O metodo da classe q vc realmente retornou do geraFormaAleatoria() e q vai ser chamado. Baixe o Thinking In Java (em ingles) do site do Bruce (www.bruceeckel.com). Michael Nascimento Santos Analista/Consultor CPM Sistemas - www.cpm.com.br From: Alexandre Rodrigues Gomes [EMAIL PROTECTED] Reply-To: [EMAIL PROTECTED] To: "'[EMAIL PROTECTED]'" [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo Date: Wed, 7 Mar 2001 18:01:20 -0300 Andr, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando so os mtodos, ou seja, polimorfismo a propriedade para que um mtodo assuma vrias formas. Por exemplo, considere um mtodo que faa um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teramos a necessidade de criar dois mtodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto no necessrio, o que torna sua soluo mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha tambm que desejamos criar um mtodo para pesquisa que faa a interseo entre idade e naturalidade. Logo, construiramos um mtodo com a seguinte assinatura: findClient(Date idade, String natural) e todos estes mtodos poderiam conviver numa mesma classe, sem problemas. By Al! -Mensagem original- De: Yurion "Andr [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.o
[java-list] Polimorfismo
Caros amigos, Estou estudando POO e estou com algumas dúvidas sobre polimorfismo. A única coisa que sei sobre o assunto é que está propriedade da OO permite que uma classe tenha vários métodos com o mesmo nome desde de que o múmero e o tipo de parâmetros seja diferentes. Todo mundo fala que polimorfismo é só isso!! Porém queria que se possível vc´s me mostrassem exemplos de onde e quando utilizar está propriedade e o que significa realmente polimorfismo.. Desde já agradeço a atenção de todos, André Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.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] -
RES: [java-list] Polimorfismo
Veja um exemplo de mtodos que retornam arrays de objetos de clientes : // Get All Customers public Customer[] getCustomers() {} // Get All Customers that birthday is between data1 and data2 public Customer[] getCustomers(Date data1, Date data2) {} // Get All Customers that customerId in in the parameter array public Customer[] getCustomers(int[] customerIds) {} Perceba que o nome do mtodo o mesmo, mas os parmetros variam para suprir todas as necessidades de pesquisa. []s, Sergio Stateri Jr [EMAIL PROTECTED] Tesla Tecnologia -Mensagem original- De: Yurion Andr [mailto:[EMAIL PROTECTED]] Enviada em: Quarta-feira, 7 de Maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
Re: [java-list] Polimorfismo
Polimorphism indica a abilidade de uma referencia a uma superclasse a conter uma referencia a ele ou todos os subclasses dele poli = muito (varias) morpf = formas de apresentao imagine : class animal extends object{ public boolean equals(Object o){ } } class bird extends animal{ public boolean equals(Object o){ } } class arara extends bird{ public boolean equals(Object o){ } } class foo{ object o; animal a; o = new animal(); a = new arara(); o = a; o.equals(a); // true pois por Dynamic Method Binding seria ((animal)o).equals(a); a = new bird(); o.equals(a); // false pois o instancia de animal enquanto a agora e instancia de bird } O fato que uma classe pode conter varias methodos com mesmo nome mas signature diferente method overloading e no tem muito a ver vom OO. Para saber mais procura ler um livro sobre OO. sven Yurion Andr wrote: Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -
RES: [java-list] Polimorfismo
Andr, por poliformismo podemos que concluir que seja algo com muitas formas, certo ? Este algo de que estamos falando so os mtodos, ou seja, polimorfismo a propriedade para que um mtodo assuma vrias formas. Por exemplo, considere um mtodo que faa um pesquisa por um cliente numa base de dados qualquer. Suponha que eu tenha a possibilidade de fazer a pesquisa do cliente pelo seu nome ou por seu CPF. Desta forma, teramos a necessidade de criar dois mtodos distindos: findClientByName(String name) e findClientByCPF(long cpf) Com o polimorfismo, isto no necessrio, o que torna sua soluo mais transparente e elegante: findClient(String name) e findClient(long cpf) suponha tambm que desejamos criar um mtodo para pesquisa que faa a interseo entre idade e naturalidade. Logo, construiramos um mtodo com a seguinte assinatura: findClient(Date idade, String natural) e todos estes mtodos poderiam conviver numa mesma classe, sem problemas. By Al! -Mensagem original- De: Yurion "Andr [mailto:[EMAIL PROTECTED]] Enviada em: quarta-feira, 7 de maro de 2001 14:44 Para: [EMAIL PROTECTED] Assunto: [java-list] Polimorfismo Caros amigos, Estou estudando POO e estou com algumas dvidas sobre polimorfismo. A nica coisa que sei sobre o assunto que est propriedade da OO permite que uma classe tenha vrios mtodos com o mesmo nome desde de que o mmero e o tipo de parmetros seja diferentes. Todo mundo fala que polimorfismo s isso!! Porm queria que se possvel vcs me mostrassem exemplos de onde e quando utilizar est propriedade e o que significa realmente polimorfismo.. Desde j agradeo a ateno de todos, Andr Yurion __ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas 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] -