Leandro,

Esta � uma das maravilhas do polimorfismo. O m�todo db.executeQuery(...)
retorna um objeto de uma classe concreta que implementa os m�todos da
interface ResultSet. N�o importa qual objeto o m�todo executeQuery retorna.
O que interessa � que 
se este objeto implementa a interface ResultSet. Para o caso espec�fico do
JDBC, que � baseado em interfaces seria mais f�cil entender o que ocorre com
um exemplo :

Imagine que existam (e na realidade existem) as implementa��es para Oracle e
SQLServer da API JDBC. A oracle implementou uma classe ResultSetOracle e a
Microsoft  implementou  a classe ResulSetSQL para o seu SQLServer.

A classe da oracle poderia ser implementada da forma a seguir :

public class ResulSetOracle implements ResultSet{
        //construtor
        public ResulSetOracle(){
                ...
        }
        
        public boolean next( ) throws SeiLaQueOracleException{
                //codigo implementando o metodo
        }
        

        public String getString(String str ) throws SeiLaQueOracleException{
                //codigo implementando o metodo
        }
}

A classe da oracle poderia ser implementada da forma a seguir :

public class ResulSetSQL implements ResultSet{
        //construtor
        public ResulSetSQL(){
                ...
        }
        
        public boolean next( ) throws SeiLaQueSQLException{
                //codigo implementando o metodo
        }
        

        public String getString(String str ) throws SeiLaQueSQLException{
                //codigo implementando o metodo
        }
}

        Se vc estiver utilizando os drivers da oracle, o m�todo executeQuery
vai retornar uma inst�ncia da classe ResulSetOracle. Se vc estiver
utilizando os drivers da Microsoft para SQLServer o m�todo vai retornar uma
inst�ncia da classe ResulSetSQL. Dessa forma n�o importa qual driver ou qual
banco vc utiliza. Vc estar� sempre utilizando os mesmos m�todos para acessar
o seu banco de dados. 

        As interfaces devem ser entendidas como um contrato. Ou seja, as
classes que implementam um interface devem ter os m�todos desta interface
implementados.

Atenciosamente,

Jos� Augusto Cerqueira Cond�
Analista de Sistemas - NDS
[EMAIL PROTECTED]
F�ton� Inform�tica e Servi�os
(61) 362-3442 (BRB - Geras)


> ----- Mensagem original -----
> De:           Leandro Franchi [SMTP:[EMAIL PROTECTED]]
> Enviada em:           ter�a-feira, 23 de abril de 2002 15:27
> Para:         Java-List
> Assunto:              [java-list] Trabalhando com Interfaces...
> 
> Ol� caros amigos do Java-List,
> 
>  Estamos com uma d�vida muito cruel, simplesmente n�o entendemos como
> podemos utilizar uma interface do mesmo modo que utilizamos a interface
> Resultset... por exemplo:
> 
>       Resultset rs = db.executeQuery("SELECT * FROM FUNCIONARIOS");
> 
>       while (rs.next())
>               System.out.println(rs.getString("NOME"));
> 
>       rs.close();
> 
>   Analisando o c�digo acima, supomos que o rs � um objeto do tipo
> Resultset,
> e que next(), getString() e close() s�o m�todos pertencentes ao objeto
> Resultset criado como rs. Por�m, Resultset � uma interface, e n�o uma
> classe, assim, ela n�o tem corpo dos metodos e sim s� as assinaturas
> deles,
> e ai vem nossa d�vida... como eles executam ??? Onde est�o os corpos dos
> metodos ???
> 
> 
> Grato
> 
> Leandro Franchi
> 
> 
> ------------------------------ 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] 
> -------------------------------------------------------------------------
O BRB n�o se responsabiliza pelo conteudo da mensagem acima, sendo esta 
responsabilidade exclusiva de seu autor.  A informa��o transmitida nesta mensagem 
destina-se estritamente �(s) pessoa(s) acima referida(s), e cont�m informa��o 
confidencial, legalmente protegida, para conhecimento exclusivo do(s) destinat�rio(s). 
A leitura, exame, retransmiss�o, divulga��o, distribui��o, c�pia ou outro uso desta 
comunica��o, ou ainda a tomada de qualquer a��o baseada nesta informa��o, por pessoas 
ou entidades que n�o sejam o(s) destinat�rio(s), constitui obten��o de dados por meio 
il�cito e configura ofensa ao Art.5�, inciso XII, da Constitui��o Federal. Caso esta 
mensagem tenha sido recebida por engano, por favor inutilize a mesma e, se poss�vel, 
avise ao remetente por e-mail.

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

Responder a