[RESOLVIDO] Passar 1 parametro no lugar de varios

Galera estou fazendo um projetinho na faculade

Gostaria de saber se existe algum modo de “COMPACTAR” a quantidade de parametros passados pra outros metodo.

Vou dar um exemplo pra ficar mas claro.

tenho o seguinte metodo

public boolean Cadastra_Prop(String cpf, String nome, String rg, String pai, String mae, String permissao, String acc, String hab, String registro, String validade, String primeira_hab, String obs, String rua, String cidade, String bairro, String email, String data_nasc, String est_civil, String cnh_pontos)

esse metodo vai receber da outra classe todo o formulario preenchido pelo usuario e ira usar eles para ser inserido numa query que vou criar.

O que estou querendo saber e se existe algum modo de juntar isso tudu ai em algo unico e retornar .

no caso ficaria assim

public boolean Cadastra_Prop(String campos_compactados)

Bom dia

Não sei se entendi direito o que vc quer mas se usar var-args pode funcionar

public boolean Cadastra_Prop (String... dadosCadastrais) //espera de 0 a muitos objetos string

O mais correcto é usar um Objecto

public boolean CadastraProp (Prop prop){

E simples de resolver!!! Voce tem q lembra que JAVA e ORIENTADO A OBJETO entao voce vai cria uma Classe desse objeto tipo : Cliente

[code] public class clinete (){
private Strtring cpf;
private String nome;
private String pai;
// e por aiii vaiii com todos…

public setCPF (String cpf){
this.cpp = cpf;
}

public setNome (String nome) {
this.nome = nome;
}

public setPai (String pai ) {
this.pai = pai;
}

}//fim da classe
[/code]

Depois voce cria outra classe tipo CADASTRO_PRONTUARIO com o metodo que vc quer que vai ser o : Cadastra_Prop e nessa classe vc estancia o objeto cliente e ai vc preenche o objeto todo com os SETs e passa o Objeto como parametro

[code]
public class CADASTRO_PRONTUARIO (){
cliente cli = new cliente();

  cli.setCPF = "085.456.566 - 58";
  cli.setNome = "MARIA";
  cli.setPai  = " jose maria santos";
   //chama o metodo aki passando como parametro o objeto 
  castra_Prop( cli ) ;

public castra_Prop ( Cliente cli ){
//aki no metodo vc utiliza o get para utilizar como quiser os dados
//imaginemos q queira salvar no bando ai vc preenche o SQL com os dados

  String sql = " INSERT INTO SUA_TABELA (CPF,NOME,PAI)  VALUES ( ' "+cli.getCPF" ',' "+cli.getNOME+" ',' "+cli.getPai+ " ' ) ";

} [/code]

se nao itver entendido so posta aii flws

[quote=pmlm]O mais correcto é usar um Objecto

[code]
public boolean CadastraProp (Prop prop){

[/code][/quote]

Por que??? var-args não foi criado para isto???
Faz pouco tempo que estou estudando Java e gostaria de entender!!!

Grato

[quote=Murillo Pontes]
Por que??? var-args não foi criado para isto???
Faz pouco tempo que estou estudando Java e gostaria de entender!!!
Grato[/quote]

Var-arg não é mais do que um array. Simplesmente em vez de teres de criar o array e passar como parâmetro, podes passar directamente os seus elementos.

Sem var-args:


double calculaMedia (double[] numeros){
 //codigo aqui....
}

 //codigo aqui.......
double[] array= new double[3];
array[0] = 10;
array[1] = 11.5;
array[2] = 10.75;
double media1 = calculaMedia(array);

array = new double[2];
array[0] = 55.23;
array[1] = 54.67
double media2 = calculaMedia(array);
 //codigo aqui....

Com var-args:


double calculaMedia (double... numeros){
 //codigo aqui....
}

 //codigo aqui....
double media1 = calculaMedia(10, 11.5, 11.75);
double media2 = calculaMedia(55.23, 54.67);
 //codigo aqui....

[quote=Murillo Pontes][quote=pmlm]O mais correcto é usar um Objecto

[code]
public boolean CadastraProp (Prop prop){

[/code][/quote]

Por que??? var-args não foi criado para isto???
Faz pouco tempo que estou estudando Java e gostaria de entender!!!

Grato[/quote]

Sim Murillo, var-args foi feito pra você poder passar Ns argumentos de um mesmo tipo sem precisar declará-los 1 a 1… Porém não é o caso dele…

Ele tem uma ordem de passada de Parâmetros que com certeza será pego do outro lado e passado a um banco de dados…

Aí vc pode dizer… “bom, ele pode continuar usando var-args que ainda assim funcionará”. É verdade, funcionará, mas o que a galera falou é que é bem pouco, mas bem pouco Orientado a Objetos mesmo…

Pensa conosco, tudo o que ele passou lá no método, é a composição de uma Entidade, a replicação de uma Tabela no Banco de Dados… Já pensaste se ele fizer um Sistema com Ns camadas ??? Cada vez que criar um campo novo, ele vai ter que entrar em todas as chamadas de todos os métodos pra adicionar esse cara ?? e a ordem ??

Espero que tenha ajudado…

Obrigado a todos!!!

Agora entendi, neste caso o uso de var-args limita muitos dos beneficios da orientação a objeto.

Grato
Novamente

Só complementando:

Além de ser extremamente FEIO passar milhares de parâmetros assim (com ou sem var-args) e não estruturado, no caso dos var-args (quer dizer, você precisa saber a posição exata em qual dado está no array), é importante usar objetos por causa da manutenibilidade, ou seja, para facilitar a manutenção. Ex.: suponha que , em algum determinado momento nessa vida, você precisa começar a usar um parâmetro a mais nesse seu método (que, aliás, pode ser chamado de vários pontos diferentes). Se você usar um objeto, OK, você coloca o atributo no objeto e ele já está lá. Mas se você passar como parâmetro um array, ou sei lá o que, você vai ter um verdadeiro pesadelo “caçando” os pontos onde você está chamando o método e modificar.

Obrigado, com varias tentativas usei uma lista com modelo e ficou bem melhor.