Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz Andei pesquisando mais um pouco com o Coordenador dos cursos de programação da Faculdade e encontrei a resposta, mas está em oposição com a maioria das respostas que recebi, como o assunto é interessante, decidi compartilha com vocês 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 deve ser 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 Além 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 Herança??? Caros, Para que ocorra polimorfismo se faz necessária a existência de herança de uma classe (abstrata de preferência) ou a implementação de uma interface. PS: 1) Não vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, métodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo não é da linguagem de programação Java, mas sim da Orientação 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 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
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 Herança???
A sobrecarga É um tipo de polimorfismo. É considerado Polimorfismo estático. Antonio Oliveira wrote: Caros, Para que ocorra polimorfismo se faz necessária a existência de herança de uma classe (abstrata de preferência) ou a implementação de uma interface. PS: 1) Não vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, métodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo não é da linguagem de programação Java, mas sim da Orientação a Objetos. [] - Original Message - *From:* diego <mailto:[EMAIL PROTECTED]> *To:* [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ; [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> *Sent:* Tuesday, July 01, 2003 12:06 PM *Subject:* 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] <mailto:[EMAIL PROTECTED]> *To:* [EMAIL PROTECTED] <mailto:[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] <mailto:[EMAIL PROTECTED]> UIN:241967404 -- 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 Herança???
Title: LORDz Srs, Acredito que valha a pena acrescentar algumas explicações... Quando se fala de polimorfismo, significa que um objeto pode assumir diversas formas. Portanto, se um objeto "obj", que é uma instância de uma classe Classe1 e que implemente duas interfaces Ifc1 e Ifc2 podemos ter os seguintes casos (simplificado): public class Classe1 implements Ifc1, Ifc2 { public static void main(String[] args) { Classe1 obj = new Classe1(); Ifc1 i1 = obj; Ifc2 i2 = (Ifc2)i1; Classe1 obj2 = (Classe1)i2; } Perceba que um único objeto assume diversas formas diferentes (polimorfismo). [s] rogério. -Original Message-From: Leandro Yung [mailto:[EMAIL PROTECTED]Sent: Wednesday, July 02, 2003 7:38 AMTo: [EMAIL PROTECTED]Subject: Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança??? É parcialmente correto, Overwrite é aplicável apenas para classes que tenham herança. No entanto, Overload pode ser aplicado para qualquer classe, com ou sem herança. - 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 Herança??? É correto sim polimorfismo em java tem os conceitos de overwrite e overload, que é rescrita de método e "recarregação" (Não sei se é a tradução correta), então não faz sentido falar de polimorfismo senão houver herança. 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??? É 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
Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz Parabéns Antonio, Fez a lição 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 são incríveis. A possibilidade de carregar um objeto filho com um handle do pai apenas por não sabermos de que tipo de filho ele é, e deixar esta responsabilidade com o java que vai se encarregar de executar o método do filho apropriado, permite uma redução de códigos fantástica. Aplicando estes conceitos já criei classes inteiras onde nenhum if foi necessário, 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 Herança??? Caros, Para que ocorra polimorfismo se faz necessária a existência de herança de uma classe (abstrata de preferência) ou a implementação de uma interface. PS: 1) Não vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, métodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo não é da linguagem de programação Java, mas sim da Orientação 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 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
Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Classicamente chamamos de polimorfismo a escolha (tardia), em tempo de execução, do método que será efetivamente executado quando enviamos uma mensagem para um objeto que está dentro de uma variável, por exemplo. A escolha do método a ser executado, depende do objeto que está recebendo a mensagem, e não da mensagem em si. Uma mesma mensagem enviada a objetos diferentes pode disparar comportamentos distintos. Por outro lado também encontramos na literatura a menção de "polimorfismo em tempo de execução" descrita no parágrafo anterior e "polimorfismo em tempo de compilação" que seria a escolha do método de a ser executado de acordo com a lista de parâmetros enviados, ou seja sobrecarga. Concordo que esta nomenclatura diverge da definição clássica de polimorfismo, mas pessoalmente eu gosto pois deixa claro o momento da escolha em que acontece a escolha de qual método será executado. Cesar Antonio Oliveira wrote: LORDzCaros, Para que ocorra polimorfismo se faz necessária a existência de herança de uma classe (abstrata de preferência) ou a implementação de uma interface. PS: 1) Não vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, métodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo não é da linguagem de programação Java, mas sim da Orientação 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 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 -- -- 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 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 Herança???
Title: LORDz Isaque, Polimorfismo é a característica que uma classe tem de tratar diferentes tipos de dados de acordo como forem passados para ela. ex: uma método chamado soma() que possa tratar: 1+1=2 'java '+'Linux'='Java Linux' e assim por diante. este fato de polimorfismo ser dependente de herança não é bem verdade, pois são coisas distintas. Herança já é quando uma classe herda propriedades de uma superclasse = herança simples; de mais de uma classe= herança 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 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
RES: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz polimorfismo ou sobrecarga de métodos? Cristiano S. NevesGerente de TIPrumos Interativa Ltda.F 55 226 7951E [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:07Para: [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
Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz Caros, Para que ocorra polimorfismo se faz necessária a existência de herança de uma classe (abstrata de preferência) ou a implementação de uma interface. PS: 1) Não vamos confundir o conceito de polimorfismo com o de sobrecarga. O segundo ocorre quando temos em uma mesma classe, métodos com nomes iguais e assinaturas diferentes. 2) O conceito de polimorfismo não é da linguagem de programação Java, mas sim da Orientação 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 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
Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz É parcialmente correto, Overwrite é aplicável apenas para classes que tenham herança. No entanto, Overload pode ser aplicado para qualquer classe, com ou sem herança. - 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 Herança??? É correto sim polimorfismo em java tem os conceitos de overwrite e overload, que é rescrita de método e "recarregação" (Não sei se é a tradução correta), então não faz sentido falar de polimorfismo senão houver herança. 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??? É 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
Re: Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Nao seria "sobrecarga"? []'s, Bruno do Amaral On Mon, 30 Jun 2003, Conrad wrote: > LORDzÉ correto sim polimorfismo em java tem os conceitos de overwrite e overload, > que é rescrita de método e "recarregação" (Não sei se é a tradução correta), então > não faz sentido falar de polimorfismo senão houver herança. > > 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??? > > > > > > > É 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 > > > > -- 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] 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 Herança???
Title: LORDz 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
RES: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse -Mensagem original-De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]Enviada em: sexta-feira, 27 de junho de 2003 08:27Para: [EMAIL PROTECTED]Assunto: [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
Re: [java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz É correto sim polimorfismo em java tem os conceitos de overwrite e overload, que é rescrita de método e "recarregação" (Não sei se é a tradução correta), então não faz sentido falar de polimorfismo senão houver herança. 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??? É 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
[java-list] Polimorfismo só pode ser aplicado em classes que tenha Herança???
Title: LORDz É 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
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/
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] -
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 mesmos comportamentos 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 q Homem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! Ary Junior
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 q Homem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! Ary Junior
[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 q Homem seja uma interface e Aranha uma classe, sendo assim PeterParker extende de Aranha e implementa Homem. Alguma outra sugestão? Valeu!!! Ary Junior
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
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 !!! 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
RES: [java-list] Polimorfismo (PARA TERMINAR GERAL)
-BEGIN PGP SIGNED MESSAGE- 1 - NÃO ESTOU FAZENDO DEFINIÇÃO, É SÓ UMA ESTENSÃO DO RACIOCÍNIO. 2 - OS CONCEITOS DE TIPAGEM NORMALMENTE PREVINEM BUGS E CONTROLE DE CAST, MAS NÃO É ISTO QUE EU ESTAVA ABORDANDO... José Euclides Júnior __ E-mail: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] http://euclides.8m.com - -Mensagem original- De: Jorge Martins [SMTP:[EMAIL PROTECTED]] Enviada em: Sexta-feira, 23 de Março de 2001 13:52 Para: '[EMAIL PROTECTED]' Assunto: RE: [java-list] Polimorfismo (PARA TERMINAR GERAL) José, Esta definição é fragil, pois em linguagens que não são fortemente tipadas, você pode fazer polimorfismo sem necessitar de uma hierarquia de classes. Mesmo assim, concordo que overload não é polimorfismo. abraços Jorge - -Original Message- From: Jose Euclides da Silva Junior - DIGR.O [mailto:[EMAIL PROTECTED]] Sent: sexta-feira, 23 de março de 2001 11:28 To: [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo (PARA TERMINAR GERAL) *** PGP Signature Status: bad *** Signer: Jose Euclides Jr <[EMAIL PROTECTED]> *** Signed: 23/03/01 11:29:32 *** Verified: 23/03/01 16:31:16 *** BEGIN PGP VERIFIED MESSAGE *** Deixa eu dar minha pequena contribuição...Na minha opinião o polimorfismo é uma consequência da existência da herança 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. Abraços, José Euclides Júnior __ 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 Março 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 métodos > sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o > identificador da mensagem é formado pelo nome mais os parâmetros, então, > dois métodos sobrecarregados com parâmetros diferentes não podem ser a mesma > mensagem. Eu queria dizer: "Dois métodos sobrecarregados têm o mesmo nome e são a responsta a mesma mensagem quando recebida com parâmetros diferentes." Christian - -- 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] - - *** END PGP VERIFIED MESSAGE *** - -- 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] - - -BEGIN PGP SIGNATURE- Version: PGP 6.5.1 iQCVAwUBOrvmbt0YhuJ3BUxtAQG2qwP/QdDLse1JJtyN46Hyvzq3KPxYieAM+s+r FSb6WZKBjzbmy03RJDmBr1Sfpm8j1jKV7DqdMm1H91iallV9VULzB4TblnBTuAcr ZEjATkVpFs/QOAbrANgPbj9LwvouQYSHbFINk7Ro+Bbv4gjOO9Zf1i32utFHTINQ m2pkVKix2PE= =CZO/ -END PGP SIGNATURE- -- 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 TERMINAR GERAL)
José, Esta definição é fragil, pois em linguagens que não são fortemente tipadas, você pode fazer polimorfismo sem necessitar de uma hierarquia de classes. Mesmo assim, concordo que overload não é polimorfismo. abraços Jorge -Original Message- From: Jose Euclides da Silva Junior - DIGR.O [mailto:[EMAIL PROTECTED]] Sent: sexta-feira, 23 de março de 2001 11:28 To: [EMAIL PROTECTED] Subject: RES: [java-list] Polimorfismo (PARA TERMINAR GERAL) -BEGIN PGP SIGNED MESSAGE- Deixa eu dar minha pequena contribuição...Na minha opinião o polimorfismo é uma consequência da existência da herança 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. Abraços, José Euclides Júnior __ 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 Março 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 métodos > sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o > identificador da mensagem é formado pelo nome mais os parâmetros, então, > dois métodos sobrecarregados com parâmetros diferentes não podem ser a mesma > mensagem. Eu queria dizer: "Dois métodos sobrecarregados têm o mesmo nome e são a responsta a mesma mensagem quando recebida com parâmetros diferentes." Christian - -- 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] - - -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 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] -
RES: [java-list] Polimorfismo (PARA TERMINAR GERAL)
-BEGIN PGP SIGNED MESSAGE- Deixa eu dar minha pequena contribuição...Na minha opinião o polimorfismo é uma consequência da existência da herança 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. Abraços, José Euclides Júnior __ 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 Março 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 métodos > sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o > identificador da mensagem é formado pelo nome mais os parâmetros, então, > dois métodos sobrecarregados com parâmetros diferentes não podem ser a mesma > mensagem. Eu queria dizer: "Dois métodos sobrecarregados têm o mesmo nome e são a responsta a mesma mensagem quando recebida com parâmetros diferentes." Christian - -- 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] - - -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 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 compilação são gerados bytecodes que por sua vez, serão interpretados pelas virtual machines de cada plataforma. By Alê! -Mensagem original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Enviada em: quinta-feira, 22 de março de 2001 9:22 Para: [EMAIL PROTECTED] Assunto: RES: [java-list] Polimorfismo Pessoal, Vamos descer um pouco mais o nível (da linguagem é claro): Quando um fonte é compilado e existe o overloading (ex. int test(int a) e int test(int b, char c) ) o método test é renomeado e no assembly passam a ser métodos diferentes com nomes diferentes então é como se vc tivesse criado 2 métodos. Assim isso não é Polimorfismo (no novo conceito de orientação a objeto), simplesmente porque ele não assume muitas formas em tempo de execução, ele se transforma em outro método. Abração Marco -Mensagem original- De: Andre Mendonca [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 20 de março 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 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] - -- 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] -
[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] -
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 q
Re: [java-list] Polimorfismo
Cleto Henrique Andrade Silva wrote: > Caro Christian, > > você foi contra a segunda afirmativa quando disse "Dois métodos > sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o > identificador da mensagem é formado pelo nome mais os parâmetros, então, > dois métodos sobrecarregados com parâmetros diferentes não podem ser a mesma > mensagem. Está completamente certo! Sven -- 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
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 definição usado nos curso da Sun e nos livros sobre Java, que dis que polimorfismo não é method overloading. Também não dá para ctar livros de 19990/19991 ou até antes. Na ciencia em geral, a significativa dedefinições 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 diferença sim, se alguem te perguntasse ´o que é polimorfismo´. Neste caso voçe deveria saber o que é, deveria saber também para applicar na prática já que polimorfismo para Java é tão importante qunto saber usar for (;;). Sven -- 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
Pessoal, Vamos descer um pouco mais o nível (da linguagem é claro): Quando um fonte é compilado e existe o overloading (ex. int test(int a) e int test(int b, char c) ) o método test é renomeado e no assembly passam a ser métodos diferentes com nomes diferentes então é como se vc tivesse criado 2 métodos. Assim isso não é Polimorfismo (no novo conceito de orientação a objeto), simplesmente porque ele não assume muitas formas em tempo de execução, ele se transforma em outro método. Abração Marco -Mensagem original- De: Andre Mendonca [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 20 de março 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 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] -
Re: [java-list] Polimorfismo
Caro Jorge, Jorge Martins wrote: > > Pois não é o mesmo estímulo. Uma mensagem é definida pela assinatura da > mesma. Se há uma assinatura diferente, há uma mensagem diferente. O nome da > função não é suficiente pois assinatura é composta pelo nome da função + > tipos dos parâmetros. A mensagem para mim é simplesmente a mensagem e os parâmetros não fazem parte dela. Veja, por exemplo, o Smalltalk onde você pode chamar qualquer método com qualquer número e tipo de parâmetro. > No seu exemplo, para formatar data, você mesmo denunciou que são mensagens > diferentes. Dizer "formate data com padrão usual" e "formate data com este > padrão" são coisas diferentes. Seria polimorfismo se eu disse "formate data" > e o OBJETO tomasse a decisão da formatação. 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 padrão", onde no primeiro caso a data é formatada com um padrão usual e no segundo com um padrão diferente do usual. Este comportemente é bastante usado quando se faz um método que tem defaults para os parâmetros de outro método. Ambos respondem a mesma mensagem para parâmetros diferentes. > Perceba o conceito, eu falaria para o objeto uma só mensagem e ESTE TOMARIA > A DECISÃO DO PROCEDIMENTO. Ou seja, ele se comportaria polimorficamente a > partir de um mesmo estímulo, ou mensagem. Exato! E esta decisão seria baseada na classe e parâmetros. (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 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
Cleto Henrique Andrade Silva wrote: > > você foi contra a segunda afirmativa quando disse "Dois métodos > sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o > identificador da mensagem é formado pelo nome mais os parâmetros, então, > dois métodos sobrecarregados com parâmetros diferentes não podem ser a mesma > mensagem. Eu queria dizer: "Dois métodos sobrecarregados têm o mesmo nome e são a responsta a mesma mensagem quando recebida com parâmetros diferentes." Christian -- 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
O Polimorfismo no C++ é estabelecido através dos métodos virtuais. O que torna a função virtual especial é que, quando uma é acessada usando-se um ponteiro da class base para um objeto da classe derivada, o C++ determina qual função chamar no momento da execução, baseando-se no tipo de objeto para o qual se aponta. Assim, quando objetos diferentes são apontados, diferentes versões são 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 função virtual usando o nome do objeto da mesma maneira que chamaria qualquer outra função membro, somente quando uma função virtual é acessada por meio de um ponteiro para a class base é que o polimorfismo em tempo de execução é 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 execução 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 c
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) {} Não 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 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
Christian Pois não é o mesmo estímulo. Uma mensagem é definida pela assinatura da mesma. Se há uma assinatura diferente, há uma mensagem diferente. O nome da função não é suficiente pois assinatura é composta pelo nome da função + tipos dos parâmetros. No seu exemplo, para formatar data, você mesmo denunciou que são mensagens diferentes. Dizer "formate data com padrão usual" e "formate data com este padrão" são coisas diferentes. Seria polimorfismo se eu disse "formate data" e o OBJETO tomasse a decisão da formatação. Perceba o conceito, eu falaria para o objeto uma só mensagem e ESTE TOMARIA A DECISÃO DO PROCEDIMENTO. Ou seja, ele se comportaria polimorficamente a partir de um mesmo estímulo, ou mensagem. abraços Jorge -Original Message- From: Christian Rauh [mailto:[EMAIL PROTECTED]] Sent: quarta-feira, 21 de março 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 > estímulo) de acordo com sua classe no momento. De acordo com a classe e parâmetros. > Dois métodos com assinaturas diferentes não podem ser considerados a > mesma mensagem. Porque não? > 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 métodos. Por exemplo, formatar uma data com o padrão usual ou com um padrão especificado. Christian -- 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] -
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 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] -
Re: [java-list] Polimorfismo
Caro Christian, você foi contra a segunda afirmativa quando disse "Dois métodos sobrecarregados têm o mesmo nome e são a mesma mensagem com parâmetros diferentes.". Se o identificador da mensagem é formado pelo nome mais os parâmetros, então, dois métodos sobrecarregados com parâmetros diferentes não 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(várias formas) significa um mesmo método poder ter > > comportamentos diferentes em classes diferentes. > > Ou: > > - Polimorfismo(várias formas) significa um mesmo método poder ter > comportamentos diferentes. > > > - A assinatura(identificação) de um método é formada pelo seu nome e seus > > parâmetros e não somente pelo seu nome. > > > > Considerando as duas afirmações acima podemos concluir que sobrecarga > > não é polimorfismo, pois, quando fazemos sobrecarga estamos tratando de > > métodos diferentes apesar de terem o mesmo nome. Dois métodos > > sobrecarregados têm o mesmo nome, porém, não são a mesma mensagem. Portanto, > > comportamentos diferentes para métodos diferentes me parece uma coisa óbvia. > > Considerando a minha primeira afirmação podemos concluir que sobrecarga é > polimorfismo, pois, quando fazemos sobrecarga estamos tratando de funcções > diferentes que implementam o mesmo método. Dois métodos sobrecarregados têm > o mesmo nome e são a mesma mensagem com parâmetros diferentes. Portanto, > comportamentos diferentes parao mesmo método, me parece uma coisa óbvia. > > Christian > > -- 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] -
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 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
Caro Jorge, > Jorge Martins wrote: > > Concordo com você e ainda digo mais. Conceitualmente, polimorfirsmo é a > capacidade dos objetos responderem diferenciadamente a mesma mensagem (ou > estímulo) de acordo com sua classe no momento. De acordo com a classe e parâmetros. > Dois métodos com assinaturas diferentes não podem ser considerados a > mesma mensagem. Porque não? > 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 métodos. Por exemplo, formatar uma data com o padrão usual ou com um padrão especificado. Christian -- 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
Caro Cleto, Cleto Henrique Andrade Silva wrote: > > - Polimorfismo(várias formas) significa um mesmo método poder ter > comportamentos diferentes em classes diferentes. Ou: - Polimorfismo(várias formas) significa um mesmo método poder ter comportamentos diferentes. > - A assinatura(identificação) de um método é formada pelo seu nome e seus > parâmetros e não somente pelo seu nome. > > Considerando as duas afirmações acima podemos concluir que sobrecarga > não é polimorfismo, pois, quando fazemos sobrecarga estamos tratando de > métodos diferentes apesar de terem o mesmo nome. Dois métodos > sobrecarregados têm o mesmo nome, porém, não são a mesma mensagem. Portanto, > comportamentos diferentes para métodos diferentes me parece uma coisa óbvia. Considerando a minha primeira afirmação podemos concluir que sobrecarga é polimorfismo, pois, quando fazemos sobrecarga estamos tratando de funcções diferentes que implementam o mesmo método. Dois métodos sobrecarregados têm o mesmo nome e são a mesma mensagem com parâmetros diferentes. Portanto, comportamentos diferentes parao mesmo método, me parece uma coisa óbvia. Christian -- 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] -
[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
RE: [java-list] Polimorfismo
Sven, Concordo com você e ainda digo mais. Conceitualmente, polimorfirsmo é a capacidade dos objetos responderem diferenciadamente a mesma mensagem (ou estímulo) de acordo com sua classe no momento. Dois métodos com assinaturas diferentes não podem ser considerados a mesma mensagem. Apenas possuem o mesmo nome (ou token) com o fim de facilitar o entendimento do programador, mas em momento algum representam a mesma mensagem. abraços Jorge -Original Message-From: Sven van ´t Veer [mailto:[EMAIL PROTECTED]]Sent: terça-feira, 20 de março de 2001 17:37To: [EMAIL PROTECTED]Subject: Re: [java-list] PolimorfismoNão concordamos com este explicação pelo seguinte.Polimorfismo é um dos conceitos mais importante de OOP. O que é Polimorfismo, é a capacidade de uma referencia de um superclasse (ou interface) conter a referência de uma subclasse que inclui o conceito de ´Dynamic Binding´ ou a possibilidade de escolher o methodo certo para invocar at runtime.Com overloading o progammador escolha qual versão do methodo dentro da mesma classe tem que ser executado num certo momento durante a executação do programma. Isso NÂO È polimorfismo.veja:interface a{ foo();}interface b extends a{ bar();}class c implements b{ foo(){}}class d extends c{ bar(){}}class e extends d{ foo(){} bar(){}}class q{ a e = new e(); e.foo(); // foo chamada da classe e e = new c(); e.foo(); //foo chamada da classe c // esses são do seu exemplo.. O compilador sabe o que receberá doFoo(a x){ a.foo() // nesse methodo, somente sabemos que a classe que foi recebido é uma implementação da interface a O foo() será escolhido at runtime, não é possivel de fazer optimação }}apesar que a classe Christian Rauh wrote: [EMAIL PROTECTED]" type="cite">Caro Michael,Estou entrando tarde nesta discussão. Não sei qual é o pontoexato que você e o Sven estão defendendo mas a sua citação éerrada. No livro "An Introduction to Object-Oriented Progamming"de Timothy Budd [Budd], temos:"The most common form of polymorphism in conventional programminglanguages is overloading". pg. 185Como a referencia [Budd] é mais importante do que [Eckel], temosque: overloading é polimorfismo. O que me parece que é ocontrário do que você pretende provar.Em particular, analisemos o trecho citado por você de [Eckel]:Mister M wrote: People are often confused by other,non-object-oriented features of C++, like overloading and defaultarguments, which are sometimes presented as object-oriented.Don’t be fooled; if it isn’t late binding, it isn’t polymorphism.Aqui ele implica que "se não é linkagem dinâmica" então "não épolimorfismo". Revertendo: polimorfismo -> linkagem dinâmicaPorém, [Budd] diz logo a frente na seção 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 funçãocorreta em linguagem fortemente tipadas (como C++) e fazerlinkagem estática é simplesmente um otimização. Assim, o C++ estásimplesmente otimizando uma característica orientada a objeto.Obrigado,Christian RauhNewTradeReferências:[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 Usuários Java da Sucesu-SP dúvidas 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
Caros, - Polimorfismo(várias formas) significa um mesmo método poder ter comportamentos diferentes em classes diferentes. - A assinatura(identificação) de um método é formada pelo seu nome e seus parâmetros e não somente pelo seu nome. Considerando as duas afirmações acima podemos concluir que sobrecarga não é polimorfismo, pois, quando fazemos sobrecarga estamos tratando de métodos diferentes apesar de terem o mesmo nome. Dois métodos sobrecarregados têm o mesmo nome, porém, não são a mesma mensagem. Portanto, comportamentos diferentes para métodos diferentes me parece uma coisa óbvia. Abraços. -- 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
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 não é plenamente verdade. Existem alguns implementações de C que suportam overloading, mas não é portavel. Ansi & K&R C não supportam overloading. Por isso existem por exemplo as familhas de printf & scanf: printf vprintf sprintf fprintf vfprintf etc. Detalhe, compilando o dódigo acima com varias compiladores C++ provavelmente não reclamam e compilam, mesmo sendo código C. Outro detalhe, C até tem alguns ´jeitinhos´de 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 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 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. 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. 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. > 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. Também mantenho minha opinião 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 então mudar o foco da discussão a teoria em si e tentarmos chegar em uma conclusão. > 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 também 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 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. > -> CHEGA DE DISCUTIR POLIMORFISMO; CADA UM DECIDA SE ACHA Q O TERMO SE > APLICA, ALEM DE A OVERRIDING (O Q EH INDISCUTIVEL) TB A OVERLOADING (EU, > SVEN E OUTROS - NAO, ANDRE, CHRISTIAN E OUTROS - SIM). Eu estou aprendendo muito com esta discussão e acredito que é totalmente válida na lista. Para mim a discussão não está fechada. Christian -- 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)
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
Caro Sven, Sven van ´t Veer wrote: > > Não concordamos com este explicação pelo seguinte. > > Polimorfismo é um dos conceitos mais importante de OOP. O que é > Polimorfismo, é a capacidade de uma referencia de um superclasse (ou > interface) conter a referência de uma subclasse que inclui o conceito > de ´Dynamic Binding´ ou a possibilidade de escolher o methodo certo > para invocar at runtime. Esta definição é pouco abrangente, veja o meu outro email. > Com overloading o progammador escolha qual versão do methodo dentro da > mesma classe tem que ser executado num certo momento durante a > executação do programma. Isso NÂO È polimorfismo. É sim, estou assumindo que além da classe a ser utilizada, os parâmetros passados também fazem parte da escolha da resposta a uma mensagem (invocação de método). Christian Rauh -- 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
ial a questão 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] Polimorfismo > >Date: Tue, 20 Mar 2001 11:05:39 -0300 > > > >Caro Michael, > > > >Estou entrando tarde nesta discussão. Não sei qual é o ponto > >exato que você e o Sven estão defendendo mas a sua citação é > >errada. No livro "An Introduction to Object-Oriented Progamming" > >de Timothy Budd [Budd], temos: > > > >"The most common form of polymorphism in conventional programming > >languages is overloading". pg. 185 > > > >Como a referencia [Budd] é mais importante do que [Eckel], temos > >que: overloading é polimorfismo. O que me parece que é o > >contrário do que você pretende provar. > > > >Em particular, analisemos o trecho citado por você de [Eckel]: > > > >Mister M wrote: > > > > > > People are often confused by other, > > > non-object-oriented features of C++, like overloading and default > > > arguments, which are sometimes presented as object-oriented. > > > Dont be fooled; if it isnt late binding, it isnt polymorphism. > > > >Aqui ele implica que "se não é linkagem dinâmica" então "não é > >polimorfismo". Revertendo: > > > > polimorfismo -> linkagem dinâmica > > > >Porém, [Budd] diz logo a frente na seção 13.2 sobre overloading > >que: > > > >"The facts that the compiler can often determine the correct > >[overloading] function at compile time (in a strongly typed > >language), and can generate only a single code sequence, are > >simply optimizations" > > > >Ou seja, o fato de que o compilador pode descobrir a função > >correta em linguagem fortemente tipadas (como C++) e fazer > >linkagem estática é simplesmente um otimização. Assim, o C++ está > >simplesmente otimizando uma característica orientada a objeto. > > > >Obrigado, > > > >Christian Rauh > >NewTrade > > > >Referências: > > > >[Budd] Budd, Timothy. "An Introduction to Object-Oriented > >Progamming", Addison-Wesley, 1991. > > > >[Eckel] Eckel, Bruce. "Thinking C++". -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Polimorfismo
Não concordamos com este explicação pelo seguinte. Polimorfismo é um dos conceitos mais importante de OOP. O que é Polimorfismo, é a capacidade de uma referencia de um superclasse (ou interface) conter a referência de uma subclasse que inclui o conceito de ´Dynamic Binding´ ou a possibilidade de escolher o methodo certo para invocar at runtime. Com overloading o progammador escolha qual versão do methodo dentro da mesma classe tem que ser executado num certo momento durante a executação do programma. Isso NÂO È polimorfismo. veja: interface a{ foo(); } interface b extends a{ bar(); } class c implements b{ foo(){} } class d extends c{ bar(){} } class e extends d{ foo(){} bar(){} } class q{ a e = new e(); e.foo(); // foo chamada da classe e e = new c(); e.foo(); //foo chamada da classe c // esses são do seu exemplo.. O compilador sabe o que receberá doFoo(a x){ a.foo() // nesse methodo, somente sabemos que a classe que foi recebido é uma implementação da interface a O foo() será escolhido at runtime, não é possivel de fazer optimação } } apesar que a classe Christian Rauh wrote: [EMAIL PROTECTED]">Caro Michael,Estou entrando tarde nesta discussão. Não sei qual é o pontoexato que você e o Sven estão defendendo mas a sua citação éerrada. No livro "An Introduction to Object-Oriented Progamming"de Timothy Budd [Budd], temos:"The most common form of polymorphism in conventional programminglanguages is overloading". pg. 185Como a referencia [Budd] é mais importante do que [Eckel], temosque: overloading é polimorfismo. O que me parece que é ocontrário do que você pretende provar.Em particular, analisemos o trecho citado por você de [Eckel]:Mister M wrote: People are often confused by other,non-object-oriented features of C++, like overloading and defaultarguments, which are sometimes presented as object-oriented.Don’t be fooled; if it isn’t late binding, it isn’t polymorphism. Aqui ele implica que "se não é linkagem dinâmica" então "não épolimorfismo". Revertendo: polimorfismo -> linkagem dinâmicaPorém, [Budd] diz logo a frente na seção 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 funçãocorreta em linguagem fortemente tipadas (como C++) e fazerlinkagem estática é simplesmente um otimização. Assim, o C++ estásimplesmente otimizando uma característica orientada a objeto.Obrigado,Christian RauhNewTradeReferências:[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 Usuários Java da Sucesu-SP dúvidas 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 André vi você comentando a respeito do curso da Sun, sou iniciante e gostaria que desse a sua opnião a respeito deste cursos, pois estou prestes a fazê-los. Um abraço 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 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] -
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 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 discussão. Não sei qual é o ponto exato que você e o Sven estão defendendo mas a sua citação é errada. No livro "An Introduction to Object-Oriented Progamming" de Timothy Budd [Budd], temos: "The most common form of polymorphism in conventional programming languages is overloading". pg. 185 Como a referencia [Budd] é mais importante do que [Eckel], temos que: overloading é polimorfismo. O que me parece que é o contrário do que você pretende provar. Em particular, analisemos o trecho citado por você de [Eckel]: Mister M wrote: > > People are often confused by other, > non-object-oriented features of C++, like overloading and default > arguments, which are sometimes presented as object-oriented. > Dont be fooled; if it isnt late binding, it isnt polymorphism. Aqui ele implica que "se não é linkagem dinâmica" então "não é polimorfismo". Revertendo: polimorfismo -> linkagem dinâmica Porém, [Budd] diz logo a frente na seção 13.2 sobre overloading que: "The facts that the compiler can often determine the correct [overloading] function at compile time (in a strongly typed language), and can generate only a single code sequence, are simply optimizations" Ou seja, o fato de que o compilador pode descobrir a função correta em linguagem fortemente tipadas (como C++) e fazer linkagem estática é simplesmente um otimização. Assim, o C++ está simplesmente otimizando uma característica orientada a objeto. Obrigado, Christian Rauh NewTrade Referências: [Budd] Budd, Timothy. "An Introduction to Object-Oriented Progamming", Addison-Wesley, 1991. [Eckel] Eckel, Bruce. "Thinking C++". -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] - -- 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] -
[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
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); 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. 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. 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: 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) 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". 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... :-)) Soh pra tirar a duvida, procure a ultima edicao do livro 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. []'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] Polimorfismo >Date: Tue, 20 Mar 2001 11:05:39 -0300 > >Caro Michael, > >Estou entrando tarde nesta discussão. Não sei qual é o ponto >exato que você e o Sven estão defendendo mas a sua citação é >errada. No livro "An Introduction to Object-Oriented Progamming" >de Timothy Budd [Budd], temos: > >"The most common form of polymorphism in conventional programming >languages is overloading". pg. 185 > >Como a referencia [Budd] é mais importante do que [Eckel], temos >que: overloading é polimorfismo. O que me parece que é o >contrário do que você pretende provar. > >Em particular, analisemos o trecho citado por você de [Eckel]: > >Mister M wrote: > > > > People are often confused by other, > > non-object-oriented features of C++, like overloading and default > > arguments, which are sometimes presented as object-oriented. > > Dont be fooled; if it isnt late binding, it isnt polymorphism. > >Aqui ele implica que "se não é linkagem dinâmica" então "não é >polimorfismo". Revertendo: > > polimorfismo -> linkagem dinâmica > >Porém, [Budd] diz logo a frente na seção 13.2 sobre overloading >que: > >"The facts that the compiler can often determine the correct >[overloading] function at compile time (in a strongly typed >language), and can generate only a single code sequence, are >simply optimizations" > >Ou seja, o fato de que o compilador pode descobrir a função >correta em linguagem fortemente tipadas (como C++) e fazer >linkagem estática é simplesmente um otimização. Assim, o C++ está >simplesmente otimizando uma característica orientada a objeto. > >Obrigado, > >Christian Rauh >NewTrade > >Referências: > >[Budd] Budd, Timothy. "An Introduction to Object-Oriented >Progamming", Addison-Wesley, 1991. > >[Eckel] Eckel, Bruce. "Thinking C++". > >-- LISTA SOUJAVA >http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP >dúvidas mais comuns: http://www.soujava.org.br/faq.htm >regras da lista: http://www.soujava.org.br/regras.htm >para sair da lista: envie email para [EMAIL PROTECTED] >- > _ 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
Caro Michael, Estou entrando tarde nesta discussão. Não sei qual é o ponto exato que você e o Sven estão defendendo mas a sua citação é errada. No livro "An Introduction to Object-Oriented Progamming" de Timothy Budd [Budd], temos: "The most common form of polymorphism in conventional programming languages is overloading". pg. 185 Como a referencia [Budd] é mais importante do que [Eckel], temos que: overloading é polimorfismo. O que me parece que é o contrário do que você pretende provar. Em particular, analisemos o trecho citado por você de [Eckel]: Mister M wrote: > > People are often confused by other, > non-object-oriented features of C++, like overloading and default > arguments, which are sometimes presented as object-oriented. > Dont be fooled; if it isnt late binding, it isnt polymorphism. Aqui ele implica que "se não é linkagem dinâmica" então "não é polimorfismo". Revertendo: polimorfismo -> linkagem dinâmica Porém, [Budd] diz logo a frente na seção 13.2 sobre overloading que: "The facts that the compiler can often determine the correct [overloading] function at compile time (in a strongly typed language), and can generate only a single code sequence, are simply optimizations" Ou seja, o fato de que o compilador pode descobrir a função correta em linguagem fortemente tipadas (como C++) e fazer linkagem estática é simplesmente um otimização. Assim, o C++ está simplesmente otimizando uma característica orientada a objeto. Obrigado, Christian Rauh NewTrade Referências: [Budd] Budd, Timothy. "An Introduction to Object-Oriented Progamming", Addison-Wesley, 1991. [Eckel] Eckel, Bruce. "Thinking C++". -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -
[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
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
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
Re: RES: [java-list] Polimorfismo
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á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
Re: RES: [java-list] Polimorfismo
Algums autores consideram como polimorfismo paramétrico. []´s Daniel A. Sven van ´t Veer wrote: > Cuidado !!! > > Method Overloading NÃO É 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 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] > > - > > > > > > -- 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] -
Re: RES: [java-list] Polimorfismo
Cuidado !!! Method Overloading NÃO É 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 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] > - > > -- 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: RES: [java-list] Polimorfismo
falou e disse. Me deixei envolver pela emoção e falei besteira. Obrigado. By Alê! -Mensagem original- De: Mister M [mailto:[EMAIL PROTECTED]] Enviada em: quinta-feira, 8 de março 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 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] >-
RE: [java-list] Polimorfismo
André, Isto não é polimorfismo. Isto é sobrecarga de métodos (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 método de um objeto criado, ele responderá de acordo com a classe que ele foi criado e não de acordo com o tipo de referência. Exemplo: (sem entrar no mérito desta péssima 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? abraços Jorge -Original Message- From: Yurion "André [mailto:[EMAIL PROTECTED]] Sent: quarta-feira, 7 de março de 2001 14:44 To: [EMAIL PROTECTED] Subject: [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] -
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 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] > - Imagina uma super classe ou interface Poligono: public interface Poligono{ public void draw(); } E duas classes filhos de polígonos: 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 contém 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 situação onde você precise utilizar outras figuras geométricas além do Triangulo e Quadrado... Você precisa reimplementar a classe PoligonoCollection ??? Resposta é não ! 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 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
Bom, para comecar, existem 2 tipos de polimorfismo. O primerio, e mais simples, eh o que voce descreve no seu email. A possibilidade de escrever varios metodos com o mesmmo nome, desde que tenham assinaturas* diferentes. Esse tipo de policorfismo tambem eh chamado de sobrecarga de metodo. Um exemplo tipico desse pode ser encontrado nos construtores. A classe String, por exemplo, pode ser criada de 11 maneiras diferentes. Mas essa forma de polimerfismo eh muito simples, e por si soh nao significa muito em termos de POO. A outra forma de polimorfismo, muito mais util, eh a capacidade de um objeto de uma subclasse ocupar o lugar de um objeto da super classe. E a JVM se encarrega de executar os metodos do objeto instanciado, independente do tipo declarado. Exemplo. class FormaGeometrica { public void desenhar(){ System.out.println("Forma Geometrica"); } } class Triangulo extends FormaGeometrica { public void desenhar(){ System.out.println("Triangulo"); } } public class Foo { public static void main(String[] s) { FormaGeometrica f = new Triangulo(); f.desenhar(); } } Quando o metodo desenhar for executado em f, a string Triangulo serah impressa, mesmo que f tenha sido declarado como do tipo FormaGeometrica. Esse eh o polimorfismo que tem mais valor na POO, e resolve diversos problemas. Tambem eh chamado de Dynamic Binding, Late Binding, Run-time Binding e outros sinonimos, na literatura. Praticamente todo bom livro de POO/Java tem uma boa definicao de polimorfismo. * o numero, o tipo e a ordem dos parametros de um metodo definem sua assinatura. Porem, o tipo de retorno de um metodo nao eh parte da assinatura, pelo menos nao em Java ou C++. Silvio --- Yurion André <[EMAIL PROTECTED]> wrote: > 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] > - > > > > __ 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] -
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.b
RES: [java-list] Polimorfismo
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] -
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 apresentação 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 não 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 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] -
RES: [java-list] Polimorfismo
Veja um exemplo de métodos 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 método é o mesmo, mas os parâmetros 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 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] -
[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] -