Interface

[i]Boa noitee!!

Pessoal será que alguém pode me dizer o que significa e/ou pra que exatamente serve os campos e/ou linhas em negrito que eu marquei nos códigos abaixo:

Muito grata.[/i]

1-DEFINIR A INTERFACE

import java.net.;
import java.rmi.
;

public interface IHello extends Remote
{
String sayHello() throws RemoteException;
}

2- DEFINIR A CLASSE HELLO

import java.rmi.;
import java.net.
;
import java.rmi.registry.;
import java.rmi.server.
;

public class Hello extends UnicastRemoteObject implements IHello
{
public Hello() throws RemoteException

{}

public String sayHello()
{
return “Hello”;
}
}

3- DEFINIR A CLASSE SERVIDOR

import java.net.;
import java.rmi.
;
import java.rmi.registry.;
import java.rmi.server.
;

public class Servidor
{
public static void main(String args[])
{
try
{
// Criar o objeto que implementa o Hello
Hello obj = new Hello();

        // Cadastrando o objeto hello no registry
        Naming.rebind("//localhost/hello", obj);
        System.out.println("cadastrando o objeto hello no registry");
   }
[b]   catch (Exception e) [/b]
  {
      System.out.println("erro: " + e.getMessage());
   }

}
}

4- DEFINIR A CLASSE CLIENTE

import java.net.;
import java.rmi.
;
import java.rmi.registry.;
import java.rmi.server.
;

public class Cliente
{
public static void main (String args[ ])
{
try
{
IHello obj = (IHello)Naming.lookup (“hello”);
String message=obj.sayHello();
System.out.println(“Mensagem do servidor: " + message);
}
catch (Exception e)
{
System.out.println(” erro: " + e.getMessage());
}
System.exit (0);
}
}

Opa tudo joia Cris?

Bom esse trecho de cod representa o seguinte. IHello é uma interface e esta estendendo uma outra interface porque uma interface só pode usar um extends em outra interface. Todos os métodos de uma interface obrigatoriamente são public e asbtract, ou seja a primeira classe CONCRETA que implementar sua interface sera obrigada a implementar seus métodos. o throws RemoteException quer dizer que vc esta lançando uma exceção da classe RemoteException.

public interface Hello extends Remote { String sayHello() throws RemoteException; }

Abaixo acontece o seguinte a classe Hello herda (É-UM) UnicastRemoteObject e implementa a interface IHello, portanto a classe Hello implementa o metodo da interface “sayHello()” e faz uma subscrita de método.

[code]public class Hello extends UnicastRemoteObject implements IHello
{
public Hello() throws RemoteException
{}

public String sayHello()
{
return “Hello”;
}
} [/code]

O catch que vc marcou abaixo é onde ele captura uma exceção executada dentro do bloco try-catch.

{
IHello obj = (IHello)Naming.lookup ("hello");
String message=obj.sayHello();
System.out.println("Mensagem do servidor: " + message);
}
catch (Exception e)
{
System.out.println(" erro: " + e.getMessage()); // aqui ele exibi se tiver uma exeç
} 

Abaixo vc para sua JVM com o comando.

System.exit (0);

Oi moça,
Primeiramente dê uma olhada aqui: http://www.guj.com.br/posts/list/50115.java

Quanto as suas dúvidas.

public interface IHello extends Remote 

Define uma interface (contrato), chamada IHello que extende uma outra interface chamada Remote.

  • Interfaces extendem interfaces
  • Classes implementam interfaces (seguem o contrato)
  • Classes extendem classes (abstratas ou não)
String sayHello() throws RemoteException;

Define um método chamado sayHello que lança uma excessão do tipo RemoteException.
Um método definido em uma interface é sempre abstrato e público.
Dizer

String sayHello() throws RemoteException;

é o mesmo que

public abstract String sayHello() throws RemoteException;
public class Hello extends UnicastRemoteObject implements IHello

Define a classe Hello que extende UnicastRemoteObject e que implementa a interface IHello.
Note que o método sayHello deve ser implementado obrigatoriamente (pq a classe Hello não é abstrata)

public Hello() throws RemoteException

Define o construtor (“método” que instancia um objeto dessa classe) da classe Hello. Note que um construtor tem SEMPRE o mesmo nome da classe e nenhum tipo de retorno definido.

public String sayHello()

Implementação do método sayHello (já falei sobre isso acima).

catch (Exception e) 

O que está dentro do bloco try lança alguma excessão que por sua vez, quando (se) lançada é capturada pelo bloco catch. Ou seja, deu algum problema, o fluxo de execução do método é direcionado para o bloco catch.

IHello obj = (IHello)Naming.lookup ("hello");

Naming.lookput retorna um objeto que é “covertido” para o tipo IHello. Note que o objeto precisa ser do tipo IHello (no seu caso Hello) caso contrário uma ClassCastException pode ser lançada. Por exemplo, imagina que no lookup um objeto String é retornado. Caso vc tente “converter” uma String para IHello vai dar problema.

String message=obj.sayHello();

Pega o valor retornado pelo método sayHello e armazena em mensagem.

System.exit (0);

Finaliza a instância da JVM que está rodando esse método, indicando para quem a invocou que nenhum erro ocorreu (por causa do 0).

Agora a pergunta que não quer calar. Se vc não conhece algumas construções básicas da linguagem (como try/catch/finally) ou mesmo atribuição de variáveis, criação de métodos e construtores, o que você está fazendo na faculdade? Desculpe a franqueza, mas parece que você não tem assistido as aulas… Cada um faz o que acha certo não é? Não quero dar lição de moral, mas mude sua postura e aproveite a oportunidade de estudar. Se não gosta, mude de curso o quanto antes :wink:

[]´s

Bom primeiramente eu não conheço as construções básicas (try/catch) porque vi pela primeira vez, e tudo que se ve pela primeira vez não se sabe, correto??

Estou estudando na faculdade. rsrs Não tive muita sorte com a profª o semestre passado que não sabia nada, assim como eu muitos alunos se deram mal nessa matéria!

E este semestre a aula é no primeiro módulo dia de sábado e realmente é muito dificil eu consiguir chegar no horário. rsrs

Só pra esclarecer: eu não estou necessariamente cursando Sistemas de Informação pra trabalhar com Programação!! 8)

Como todos nós sabemos existe um grande leque no qual os profissionais da área de TI podem seguir.

Intaum, o Sr. não poderia ser mais “delicado” com suas respostas??

Pois todos nós “pessoal novo” estamos aki pra aprender, afinal isso aki é um Fórum BÁSICO e se o Sr. se stressa em responder Tópicos como o meu, responde os Tópicos dos outros Fóruns mais avançados!

“Desculpe a franquesa.”

:stuck_out_tongue:

Oi Everton!!

Obrigada pela resposta!! E Pela simpatia, é claro. :-o

Ajudou bastante.

Beijos até mais.

:slight_smile:

Cada cabeça uma sentença não é mesmo?
Vc realmente acha que programar não é importante?
Pode até não ser para alguns, mas não se iluda pois é um “mal necessário”.

Não sou dono da verdade, mas eu ainda acho que você deveria se esforçar um pouco mais.
Podem até me chamar de idiota e retrógrado, mas eu ainda acho que quem faz a faculdade é o aluno.

Se o professor é ruim e vc paga a faculdade, vcs tem mais é que lutar para ter alguém melhor para lhes conduzir no processo de aprendizagem.

Enfim, boa sorte :smiley:

Opa por nada Cris, isso aqui é um forum pra vc aprender, descutir idéias, na minha opnião perguntas como a sua fazem o total sentido de estar neste forum, pois ele foi feito exatamente para isso. Então não fique intimidada em perguntar e bons estudos!!!