Gravação dentro de uma metodo

16 respostas
java
L

Tenho o seguinte método

package lucas;

public class QuestaoGuj {

public void gravar(){
	String codigo = null,nome = null,cidade= null;
	
	if(codigo.equals("")){
	
		codigo = buscacodigo();
	}
	if(nome.equals("")){
		nome = buscanome();
	}
	
	if(cidade.equals("")){
		cidade = buscacidade();
	}
	
	
	gravacao(codigo, nome, cidade);
}

private String buscanome() {
	// abre a tela de busca de imovel
	return null;
}

private String buscacidade() {
	// Abre tela de busca de cidade
	return null;
}

private String buscacodigo() {
	// abre tela de busca de codigo
	return null;
}

public static void gravacao(
	String codigo,
	String nome, 
	String cidade
	){
	System.out.println("Gravação realizada com sucesso");
}

}

Pessoal o seguinte problema ao chamar o método gravar(), como faço para executar cada método um por cada vez pois cada um irá abrir uma tela de busca o método gravação pode se executado somete ao chamar os dois acima como faço isso?

16 Respostas

J

Para ir testando coloque retornos não nulos nos metodos. Ex, return “Codigo”; return = “Cidade”;
Não entendi bem esssa logica ai. Vc quer fazer uma tela de buscas para cada metodo desses?

Dica: Tente fazer um metodo funcionar primeiro, ou seja, o que você pretende fazer nao é uma busca? Primeiro isso, depois você vai busca de outras coisas, mas só quando souber fazer de um item primeiro. Sabe como fazer buscas num vetor? ArrayList?

E para executar um metodo por vez voce usa o switch case com um menu de opções

L

E isso mesmo eu quero criar uma metodo que chame varios dentro dele mas como os outroas estão em sequencia chama todos de uma vez sobre o retorno entendi

Agora como fazer a busca em um vetor não entendi tem como colocar as busca em um vetor você pode dar um exemplo ?

J

Não é que estão todos em sequencia, que por esse motivo são chamados. A ordem como estão organizados dentro da classe não influencia a ordem em que são executados.

Eles estão sendo executados por causa da verificação que você está fazendo. E para String você usa como valor padrão o vazio " “, ao inves de null. Então, você verifica if ((codigo,equals(”)), oras, ele sempre será vazio, porque você o está declarando como vazio dentro do proprio metodo gravar(), e assim para os demais atributos, estão todos vazio, porque estão sendo iniciados como vazios. If codigo equals “” execute o metodo, if cidade equals “” execute o metetodo.

Não sei o que você pretende fazer. Melhor você esboçar o problema em questão

L

Segue agora de uma forma um pouco mais detalhada

`

public class QuestaoGuj {

public static String codigo = null,nome = null,cidade= null;
public void gravar(){
	
	buscacidade();
	buscacodigo();
	buscanome();		
	
	
	gravacao(codigo, nome, cidade);
}

private static void buscanome() {
	
}

private String buscacidade() {
	// Abre tela de busca de cidade
	//Mandando como parametro String bus_cidade que ao selecionar irá retornar o codigo da cidade
	// Após selecionar irá retornar pelo método retorno trazendo o parametro e o campo carregado
	// só após chegar o codigo da cidade que poderá trazer carregar a outra busca assim sucessivamente 
	// assim ao carregar o busca nome e tiver com o retorno carregado com o nome assim poderá fazer a gravação
	return null;
}

private String buscacodigo() {
	// abre tela de busca de codigo
	return null;
}

public static void gravacao(
	String codigo,
	String nome, 
	String cidade
	){
	System.out.println("Gravação realizada com sucesso");
}


public static void retorno(String tipo, String campo){
	if(tipo.equals("bus_nome")){
		nome =campo;
	}
	if(tipo.equals("bus_cidade")){
		cidade =campo;
	}
	if(tipo.equals("bus_codigo")){
		codigo =campo;
	}
}

}`

J

Você pode dizer oq eu você quer fazer?

L

busca quero abrir uma tela de busca de informação

J

Pois, pelo codigo você pode buscar todas as informações de um objeto Cidade. Não precisa, toda essa confusão de nome, cidade, codigo. Crie uma classe Cidade. Coloque dentro de um array os objetos

L

pensa uma ficha de orçamento
tem o nome do cliente
e a cidade de entregar
ao gravar a pessoa colocou os itens mas não colocou as duas informações
então deve abri a busca de nome de cliente
depois a cidade de entrega
pois a cidade de entrega não é a mesma da cidade do cliente

após estes campos completos ai sim pode fazer a gravação;

detalhe não quero chamar o método gravar de novo quero executar ele uma vez e fazer a gravação

J

Então você vai precisar fazer isso orientado a objetos. Crie classes, Cliente com atributos nome, cidade, codigo. Depois crie uma classe Entrega com os atributos, codigo, cidade, e outras informações que convêm.

Neste caso, você vai precisar o conceito de composição. Onde Cliente POSSUI uma Entrega
Você tem que trabalhar com classes, senão estará programando de forma procedural. Para guardar as informações em objetos.

E no caso, que tela seria essa? Se for de forma grafica, usando Swing, existem N formas de você fazer com que o usuario digite as informações de entrega sem que ele tenha que esquecer de informar as informações de entrega

L

Existe inumeras formas de bloquear mas eu queria saber se tem como fazer isso na gravação caso tenha passado em branco e sim fazer a gravação abrindo uma tela de busca

J

Você já programa para não passar em branco. Se você fizer um programa para alguma empresa, e os funcionarios sempre esquecerem de adicionar a cidade de entrega do cliente?

J

E no Java existe algumas coisas já pensando nisso. Como ja disse, existe a composição.
Você cria uma classe Cliente, nessa terá o atributo do tipo Entrega

public class Cliente {
   String nomeCliente;
   int codigo;
   Entrega entrega;
    
   public Cliente(Entrega entrega) {
        this.entrega = entrega;
    }

}

Assim, sempre que você instanciar Cliente, ele vai pedir um objeto Entrega.

L

pode ser feito mas por exemplo não posso obrigar a gravar pois a gravação de cliente e feito em um outro local como a cidade de entrega outra pessoa que não tenha acesso então para gravar se gera o orçamento pega o nome os dados do cliente e passa para outra pessoa finalizar a venda

nesse finalizar pode se esquecer o código do cliente e da cidade de entrega
o que poderia ser feito fazer dar um retorno e voltar para o código do cliente falando campo obrigatório ai o usuário teria que clicar e gravar novamente, caso pulo a cidade de entrega teria que fazer o mesmo processo isso eu gostaria de pular

J

Então, voce cria um construtor de Cliente com o objeto entrega, e cria outro vazio. Dois construtores.

public Cliente(Entrega entrega) {
        this.entrega = entrega;
    }

// e outro vazio

 public Cliente() {

  }

Pode ser que o cliente que esteja fazendo o orçamento/comprando, seja o mesmo que irá passar o seu endereço. Caso contrario, você vai poder criar uma instancia de Cliente sem passar a entrega. E sim, o ID da venda tem que estar ligado ao ID do cliente, mesmo que a entrega tenha sito feita em outro endereço. Por isso a importancia de você associar cliente a entrega

J

Não entendi, sobre outra pessoa que não tenha acesso.
Você ta querendo criar um sistema bem complexo ainda pro seu nivel de conheciemnto, so acho

L

Sistema tem niveis (Tipo de acesso) onde se pode acessar certas coisa ou não, sendo cada um bloquado,então este tipo de usuário não poderá cadastrar por isso que precisaria fazer isso, mas caso não tenha como vou ter que dar outro jeito.

Criado 9 de julho de 2016
Ultima resposta 10 de jul. de 2016
Respostas 16
Participantes 2