sexta-feira, 12 de março de 2010

[Java] Definir os métodos de trabalho (worker) e de chamada (calling)


Para ajudar o esclarecimento da definição e exemplificação de métodos de trabalho (worker) e de chamada (calling), veja o exemplo abaixo.

//Operacao.java
public class Operacao {
public void multiplica(int x, int y){
int mult;
mult = x*y;
System.out.println("Multiplicação em outra classe: " + mult);
}
}

//TestaOperacoes.java
public class TestaOperacoes {

static public void multiplica(int x, int y){
int mult;
mult = x*y;
System.out.println("Multiplicação da mesma classe: " + mult);
}

public static void main(String[] args) {
int x = 5;
int y = 7;

//Testa multiplica em Operacao.java
Operacao operacoes = new Operacao();
operacoes.multiplica(x, y);

//Testa multiplica em TestaOperacoes.java
multiplica(x,y);
}
}
O resultado da execução deste exemplo seria:

Multiplicação em outra classe: 35
Multiplicação da mesma classe: 35

Para entender a definição de métodos calling e worker iremos também utilizar a analogia de um restaurante. Em um restaurante há os clientes e os garçons. Um cliente chama um garçom e faz um pedido, o garçom irá fazer o pedido do cliente e retornar com prato escolhido pelo cliente. Nesta analogia, o método calling seria o cliente e o método worker seria o garçom. Assim, método de chamada é aquele que invoca (chama) um outro método enquanto o método de trabalho (worker) executa o trabalho para qual foi invocado. No exemplo acima, o método main é o método calling quando chama os métodos multiplica tanto na mesma classe quanto em outra classe e os métodos multiplica seriam os métodos worker.

Considerações finais:
  • Não há limites para a quantidade de chamadas de métodos que um método de chamada pode fazer.
  • Como mostrado no post, o método de chamada pode estar na mesma classe ou em classe diferente do método de trabalho.
  • Apesar de um método de trabalho poder estar na mesma classe ou não de um método de chamada, as maneiras de invocar quando estão na mesma classe é diferente quando estão em classes diferentes.
  • Você pode escrever os métodos em qualquer ordem no seu código fonte (antes ou depois do método de chamada, antes ou depois de outro método de trabalho). Não necessariamente os métodos serão executados na ordem em que foram descritos na classe, essa ordem de execução não depende da ordem em que foram descritos, mas dependem da ordem em que foram invocados no método de chamada.

5 comentários:

  1. vc sabe a definiçao de membro?

    ResponderExcluir
  2. Então pelo que entendi é só questão de referência. Por exemplo:

    class Teste{
    public void a( ){
    b();
    }

    public void b( ){
    c();
    }

    public void c( ){

    }
    }

    o método "b" é woker em relação a "a" e caller em relação a "c".

    ResponderExcluir