Declaração de objeto em Java

12 respostas
R

Olá Pessoal,

Comecei a programar em Java essa semana e preciso de ajuda para entender e fazer algumas coisas,

Preciso usar o codigo abaixo para a criacao de um novo objeto do Tipo Endereco, Porém o nome do objeto deve ser o texto contido na variavel tpeString.
Alguém pode ajudar?

tpe += 1;
	tpeInt = tpe;
	tpeString = "tpe" + Interger.toString(tpeInt);
	
	Endereco tpeString = new Endereco();

Obrigado,
Rodrigo Rocha

12 Respostas

S

A classe Endereço tem quais atributos?
e é Integer !

R
class Endereco {

String tipo;

String logradouro;

String numero;

String complemento;

String cidade;

String estado;

String pais;

Endereco cep;

}
S

desculpa cara,mas pode dizer o enunciado desse exercicio? porque não encontro sentido nisto…
Você quer que a String tpeString seja o nome do novo objeto de Endereco,porém Endereço é tipo,não entendi muito bem isso.
para você instanciar uma classe você simplesmente faz assim:

Endereco objEndereco = new Endereco();
Yelden

Do Jeito que está, o compilador provavelmente acusará duplicação de variável pois a tpeString ja foi usada e inicializada.

Acho que você deve interpretar seu problema de outra maneira, Porque seu objeto deve se chamar assim?

R

Obrigado pela ajuda,

Então não é exercício, estou fazendo para aprender.

Tenho uma Classe Cliente:

class Cliente {

String cpf;

String rg;

String sobrenome;

String nome;

String foneResidencial;

String foneCelular;

int idade;

Endereco enderecoCliente;

String profissao;

String empresa;

double salario;

}

Essa Classe Cliente tem um objeto do tipo Endereco e a classe é esta:

class Endereco {

String tipo;

String logradouro;

String numero;

String complemento;

String cidade;

String estado;

String pais;

Endereco cep;

}

Primeiramente eu solicito entrada dos dados do enderecoe guardo em variaveis pra depois fazer

Endereco endCliente1 = new Endereco();

mas se eu colocar dessa forma, a criação do primeira instância de Endereco funciona mas a segunda não porque endCliente1 já existe.
Então preciso de algo que incremente o nome endCliente1 fiz assim

public static void incluirEndereco() {
	Scanner entrada = new Scanner(System.in);	
	
	int tpeInt = 0;
	String tpeString;
				
	// variaveis para criacao do endereco 			
	String tipoEndereco;
	String logradouroEndereco;
	String numeroEndereco;
	String complementoEndereco;
	String cidadeEndereco;
	String estadoEndereco;
	String paisEndereco;
	String cepEndereco;
			
	tpe += 1;
	tpeInt = tpe;
	tpeString = "tpe" + Integer.toString(tpeInt);
}
S

acho desnecessario criar uma classe endereço porque o endereço pertence ao Cliente.
ou seja na classe do cliente tem os atributos do endereco . E não se pode criar nomes em String para que o nome das variaveis receba esse nome,você diz o nome da variavel e acabou,
sendo que ela não pode ser repetida…
se você quer trabalhar com multiplos endereços,uma boa seria criar um ArrayList da classe endereço

ArrayList <Endereco> enderecos = new ArrayList<Endereco>();

e popular essa classe endereço,e adicionar no arraylist.

enderecos.add(objEndereco)

recomendo você estudar arraylists porque vai ser puta importante para o futuro…

S

Amigo ,outra coisa coloque os codigos entre as tags code,basta você clicar no botão code que está entre Quote e list,você clica nele,escreve o codigo dentro dele e fecha.
assim o codigo fica mais legivel

R

Slow17, eu vou usar a classe Endereco em outras objetos, por isso que fiz assim.

Não sei se esse array List vai servir porque o usuário pode criar quantos Clientes quiser então como vou saber o tamanho do array?

S

rodrigo.srrocha:
Slow17, eu vou usar a classe Endereco em outras objetos, por isso que fiz assim.

Não sei se esse array List vai servir porque o usuário pode criar quantos Clientes quiser então como vou saber o tamanho do array?


o arraylist é um dos arrays dinamicos que o java proporciona,você vai adicionando e ele vai ocupando posições , começando pelo indice 0

R

Slow17, acho que encontrei uma forma de fazer + ou - menos como vc sugeriu

public static void incluirEndereco() {
	Scanner entrada = new Scanner(System.in);	
	
	Endereco[] enderecoCliente;
	arrEndCli += 1;
	enderecoCliente[arrEndCli] = new Endereco();
	
	System.out.print("TIPO: ");	
	enderecoCliente[arrEndCli].tipo = entrada.nextLine();
	
	System.out.print("LOGRADOURO: ");	
	enderecoCliente[arrEndCli].logradouro = entrada.nextLine();

	System.out.print("NUMERO: ");	
	enderecoCliente[arrEndCli].numero = entrada.nextLine();
	
	System.out.print("COMPLEMENTO: ");	
	enderecoCliente[arrEndCli].complemento = entrada.nextLine();

	System.out.print("CIDADE: ");	
	enderecoCliente[arrEndCli].cidade = entrada.nextLine();		
	
	System.out.print("ESTADO: ");	
	enderecoCliente[arrEndCli].estado = entrada.nextLine();		
	
	System.out.print("PAIS: ");	
	enderecoCliente[arrEndCli].pais = entrada.nextLine();

	System.out.print("CEP: ");	
	enderecoCliente[arrEndCli].cep = entrada.nextLine();			
}

esse método não está dentro do main porque senão ele sempre será chamado (pelo q entendi é assim q funciona).
O array enderecoCliente e o int arrEndCli eu vou precisar usar no método q chama esse método incluirEndereco.

então como faço pra enxegar essas variáveis nos dois métodos?

S

ai cara,to vendo que você está + ou - enrrolado com bastante coisa no quesito de programação.
Tem algum livro de orientação a objetos? estude mais esse livro.e tipo,existe os tipos de variavel global e internas(não lembro se o nome é exatamente internas)as variaveis global são declaradas fora de qualquer função,logo elas são acessiveis em todo o ducumento que o programa está lendo,e as variaveis internas,são declaradas dentro dos blocos da função,então elas serão acessadas apenas dentro da função,em outra função ela não poderá ser acessada,entendeu?
Global = todo o arquivo que está sendo processado na hora pode ler,inclusive todas as funções,
Interna = apenas a função que ela foi declarada pode ler. tipo

//variavel global 
//Poderá ser lida tanto fora quanto dentro do processAlgo
String texto;

public void processaAlgo(){
//variavel interna
//apenas será lida no processaAlgo
String varIntera;
}

é mais ou menos isso,entendeu? recomendo você dar uma lida sobre o assunto
ah,em java swing o programa é executado dentro do main sim

outra,são variaveis locais e não internas!

G

rodrigo.srrocha, tenta explicar o que você quer fazer, não precisa colocar código. Tenta explicar que é mais facil de entender o que você quer, isso ai tá tudo muito confuso.
E, como o Slow17 disse, use as tags code

Criado 25 de agosto de 2013
Ultima resposta 26 de ago. de 2013
Respostas 12
Participantes 4