Duvida de OO - URGENTE

4 respostas
S

olá…

Não estou conseguindo entender uma situação que está ocorrendo comigo. Tenho as seguintes classe:
FazTudo
Trabalhador
Gerente

A classe FazTudo é responsável por enviar um novo trabalhador ao Gerente. Onde essa tem um metodo novoTrabalhador(ID, descricao). Entao o FazTudo chama esse metodo Gerente.novoTrabalhador(01, “localhost”).

Bom, a classe Gerente recebe esse trabalhador e add em uma fila da seguinte forma.

novoTrabalhador(ID, descricao) {

TRabalhador w = new Trabalhador(canal de comunicacao, this); //this é com qual gerente esse trabalhador irá se comunicar

w.setId(ID);

fila.put(w);

enviaTarefa();

}

enviaTarefa(){

Pega o primeiro da lista de trablhadores, e envia uma tarefa
w.novatarefa
}

Após o trabalhador receber a requisição e tarefas, processar e enviar a resposta para o gerente, o gerente recebe da seguinte maneira.

recebeResposta(Trabalhador ID, Tarefa ID, RESPOSTA). Eu preciso armazenar essa resposta da mesma maneira como estou armazenando um novo trabalhador, ou seja,

fila filaTrabalhadores. Agora seria mais ou menos assim:
recebeResposta(Trabalhador ID, Tarefa ID, RESPOSTA) {
Só que não estou entendendo como fazer isso.

}

Alguem conseguiu me entender??? E pode me ajudar, que está dificil aqui…

[]'s

4 Respostas

Diabo_Loiro

coloca o codigo entre as tags CODE, cada classe separada… para podermos ajudar.

pvrsouza

Eu não entendi nada…

Posta ai o código para dar um saque. Fiquei curioso!

Abraços

S

Olha só, por se tratar de um software que está sendo desenvolvido para terceiros não fui autorizado a postar o código. Mas vou tentar colocar em pseudocodigo.

classe faztudo {

instacia gerente ger;

 ger.novo_trabalhador("w1","canal de comunicação")

}

classe gerente {

novo_trabalhador (string t, string c){

      instacia trabalhador trab;

      trab.quemehmeugerente("canal de comunicação", gerente).

       add trab na fila de trabalhadores

       trab.setarID

       envia_trabalhado_se_Puder()
}

 envia_trabalhado_se_Puder() {

          se existir trabalhador na fila pega um trabalho e envia
          trab.novotrabalho(trabalhoID, trablhado)
 }

 recebe_resposta(IDdotrabalhador, resposta){

      [b]pego o a reposta e adiciono em uma fila de respostas. e preciso pegar esse trabalhador e adicionar na fila de trabalhadores novamente; o problema é que essa fila ela adiciona "classe trabalhador" e nao o IDdotrabalhador. eu não estou entendendo como fazer o processo inverso, digamos assim :D. [/b]
  }

} // FIM DA CLASSE GERENTE

classe trabalhador() {
Gerente ger;

quemehmeugerente("canal de comunicação", gerente) {
       ger = gerente;
   }
  novotrabalho(trabalhoID, trablhado) {
      pega o trabalho, adiciona em uma fila, e resolve, adiciona em uma outra fila a resposta
  }

  pega a resposta da fila, e envia a resposta para o gerente
  ger.recebe_resposta(IDdotrabalhador, resposta);

}

Bom, eu não posso mesmo postar o código, basicamente o funcionamento é esse descrito acima, e se vocês poderem me ajudar com o que tem aí, fico grato. A minha duvida esta destacada em NEGRITO, ou seja, eu não sei o que fazer quando um gerente recebe a resposta do trabalhador, pois após esse trabalhador enviar a resposta quer dizer que ele está livre, e preciso add ele a fila de trabalhadore mas essa fila só aceita a classe trabalhador. Se ainda poder ajudar, a fila está declarada da seguinte forma:
Vector workers = new Vector();

fantomas

Oi spiderman,

Não enviar a codificação atrapalha bastante, mas caso não seja possível, vc tem que compensar com explicações mais claras.

O que entendi é o seguinte:

  1. Você tem uma classe do “tipo faz tudo”, (que do ponto de vista OO já indica uma coisa ruim) onde a coisa toda começa.
  2. Você tem uma classe que representa um gerente que por sua vez possue trabalhadores a sua disposição.
  3. O gerente (ver item 2) tem que delegar trabalho para seus trabalhadores CASO eles estejam disponíveis.
  4. Os trabalhadores podem não estar disponíveis todos de uma vez, isto vai acontecendo a mendida em que o trabalho termina de ser feito.
  5. O trabalhador ao terminar seu trabalho tem que avisar o gerente que esta disponível para um próximo trabalho.
  6. O gerente ao perceber a disponibilidade de algum trabalhador, delega o trabalho a este individuo.

Este entendimento está correto?

P.S Na sua dúvida vc fala sobre o “processo inverso”, que processo seria este? Desculpe, mas não me pareceu óbvio este objetivo.

flws

Criado 27 de fevereiro de 2010
Ultima resposta 1 de mar. de 2010
Respostas 4
Participantes 4