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