o fato não é vc ter que reimplementar, mas é vc ter a CERTEZA de que o
objeto implemente aqueles métodos.

Por exemplo, suponha que eu tenho uma aplicação que pode se comunicar com o
mundo exterior via modem. Assim, eu teria um subsistema que era a minha
aplicação (A) e outro subsistema responsável pela comunicação (M). 

+-----------++-------+
|           ||       |
| Aplicação || Modem |
|    (A)    ||  (M)  |
+-----------++-------+


Suponha agora que eu defina uma interface chamada Comunicação e fizesse M
implementar esta interface.

interface Comunicação
{
        public void send(String msg);
        public String receive();
}

vou representar esta interface por '>' :

+-----------++-------+
|           >>       |
| Aplicação >> Modem |
|    (A)    >>  (M)  |
+-----------++-------+

até aí, nenhuma novidade, concorda ?
O problema acontece é quando eu quiser substituir o Modem por uma
comunicação via Renpac, por exemplo. Ora, o processo de comunicação via
porta serial é bem diferente do protocolo X25. Logo, é bem provável que a
forma de envio e recebimento de mensagem pela Renpac seja um pouco diferente
do Modem:

+-----------++--------+
|           >*        |
| Aplicação >* Renpac |        situação I
|    (A)    >*   (R)  |
+-----------++--------+

Mas a aplicação está esperando um método de comunicação, só que agora a
forma de enviar e receber dados mudou. Conclusão, terei que alterar A para
que se encaixe nos moldes de R. E isto se repetiria a cada vez que se
fizesse necessário trocar o mecanismo de comunicação (TCP/IP, RMI, etc).

+-----------++--------+
|           **        |
| Aplicação ** Renpac |
|    (A)    **   (R)  |
+-----------++--------+

+-----------++--------+
|           --        |
| Aplicação -- TCP/IP |
|    (A)    --        |
+-----------++--------+

+-----------++--------+
|           <<        |
| Aplicação <<   RMI  |
|    (A)    <<        |
+-----------++--------+

Agora, caso R (na situação I) implementasse a interface Comunicação, veja o
que aconteceria:

+-----------++--------+
|           >>        |
| Aplicação >> Renpac |
|    (A)    >>   (R)  |
+-----------++--------+

eu não seria mais necessário fazer alterações em A. 

Deu pra se ter um sentimento da necessidade da definição de interfaces ? Com
o uso de interfaces, minha aplicação fica no luxo de conhecer apenas a
interface, e não mais precisaria conhecer os diferentes protocolos de
comunicação. Caberia sim ao módulo de comunicação se virar para
disponibilizar seus serviços segundo a estrutura da interface.


By Alê!

-----Mensagem original-----
De: paulo henrique castro [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 6 de abril de 2001 15:55
Para: Kleber Bueno
Cc: [EMAIL PROTECTED]
Assunto: Re: RES: [java-list] duvida iniciante - interface


Hi!


>Pense assim :
>Interface Dirigir
>Ela tem os metodos TrocaMarcha(),Acelera(),Freia()
>
>Ai voce cria uma classe Carro que implementa Dirigir
>Nela voce vai ter os metodos TrocaMarcha(),Acelera(),Freia()
>
>Ai vamos dizer que voce tambem cria a classe Moto
>Voce poderia usar os mesmos metodos.


         essa parte ja tinha entendido.. porem, continuo nao vendo utilidade
alguma!! Por que nao apenas declarar esses metodos em minhas classes Carro
e Moto, ao inves de ter que colocar implements Dirigir nas duas??????
         Serei obrigado a declarar todos os metodos da mesma forma!!


>Depois disso voce cria uma outra classe que se chama MeiodeTransporte
>
>O construtor dela recebe um parametro do tipo Dirigir
>Ficaria assim
>
>public MeiodeTransporte(Dirigir g)
>{
>         g.Acelera();
>         g.Freia();
>}


         De acordo com os livros que estou lendo voce nao pode instanciar
uma interface, ou seja nao posso ter um objeto 'g' do tipo Dirigir, pois
dirigir e' uma interface e nao uma classe.

         Tenho certeza de que se nao fosse uma coisa importante a Sun nao
teria "inventado" as interfaces em Java.. so' nao consigo ver um exemplo
pratico para aplicacao de tal funcionalidade!!

         []s!

         PH


___________________________________________________
Paulo Henrique L. de Castro       [EMAIL PROTECTED]
                                
Radio Antena 1             http://www.antena1.com.br


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

Responder a