Duvida OO

2 respostas
S

Olá … a minha duvida é referente a Orientação a Objetos. Não estou entendendo muito como funciona toda a coisa. Vou explicar a situação, para depois ver se vocês consegue me auxiliar:

Bom, eu preciso fazer um trabalho de faculdade e tenho a seguinte situação, antes de mais nada todas as classes estão funcionando. A duvida é como chamar um metodo que está em outra classa.

Existem 4 classes, communicator(cria um channelserver e aguarda por solicitações de conexão), um gerente, um worker e um verificadordeMensagens. muito bem:

  • O gerente cria um serversocket e um novo verificadordeMensagens(thread). o construtur desse verificador recebe o canal do serer socket

verificadordeMensagens(communicator com), fica aguardando as mensagens que o worker ira enviar para o gerente, após que esse verificador receber a mensagem identifica o tipo dela e chama o metodo correspondente no gerente. O METODO QUE IRÁ SER CHAMADO DEVE SER O MESMO METODO DO OBJETO GERENTE QUE CRIOU O CANAL.

O mesmo processo é feito pelo worker também, bom preciso de algum dica de como resolver o problema. Pensei em fazer o construtor do verificadordeMensages(Communicator com, Gerente ger), e depois simplesmente chamar o metodo atraves de ger.metoto, mas só que tem a questão do worker que é classe diferente.

Alguem poderia me auxiliar nesse problema??? Acredito que seja algum problema de OO que não estou entendo.

FLW. T+
PS. Espero que tenha sido mais claro possível

2 Respostas

MarcosOLIVEIRA

Se entendi bem sua duvida…

Cara seria melhor voce ter uma main separada que cria e chama todos os Objetos e seus metodos uma vez que eles trabalham em conjunto e nao fazer o verificadorDeMensagens chamar metodos do worker e do gerente

Talvez voce possa resumir melhor o problema

S

acho que nao estou entendo, vamos ver se consigo me expressar melhor

public class recebeMsg {

	public recebeMsg(Canal c) {
		this.start();
	}

	public void run() {
		processaMsgs();
	}

	processMsgs() {
		while(true) {

			se c.tipo == "um"
				deve chamar o metodo contido no gerente, deve ser o mesmo objeto de c
			se c.tipo == "dois"
				deve chamar o metodo contido no worker, deve ser o mesmo objeto de c
		}
	}
}


public class Canal {

	public Canal() {
		cria um server socket
	}

	public Canal(descrição) {
		cria um canal com o server tipo IP:PORTA
	}

	public void enviaMsg(tipo) {
		envia para o canal 
	}
}

public class gerente {

	Canal n = new Canal();
	recebeMsg r = new recebeMsg(n)

}

public class worker {

	Canal w = new Canal();
	recebeMsg wr = new recebeMsg(w)

	// imaginamos agora que o worker quer enviar uma mensagem do tipo UM para o gerente entao
	Canal wg = new Canal(10.1.1.1:9999) //server socket do gerente
	wg.enviaMsg("um");

	//Quando o canal do gerente receber esse tipo de mensagem UM, deve chamar um metodo do mesmo objeto que criou o Canal n
}
Criado 9 de julho de 2010
Ultima resposta 9 de jul. de 2010
Respostas 2
Participantes 2