public static void main(String[] args) {
// Criacao do cliente
// Inicializacao do cliente
// Impressao dos dados do cliente
Cliente c = new Cliente() { <---- pelo menos aki axo q criei o cliente, ou entendi errado ? ou tenho q passar algum parametro aki ?
c.inicializaCliente();
c.imprimeDados();
}
}
}
galera queri uma ajuda, se alguem puder me explicar, estou iniciando em java, e estou tendo difculdades em entender esse acesso de métofdos em outras classes,
nessa classes acima toda vez q tento compilar esta classe ele da erro e diz que “identifier” expected.
lendo oq eu entendi do java sobre métodos tentei inicializar ele e talz pelo acho q fiz certo.
mais nao entendo sobre criar um cliente, que pra min seria o objeto q to manipulando.
alguem em explica isso sobre acesso de métodos de outras classes e sobre essa dúvida de manipulacão de objetos?
[quote=tpmarc]Você representa seus objetos através de classes.
Um objeto Cliente só é produzido se a classe Cliente existe.
A sua classe TestaCliente, com a main, é um objeto TestaCliente.
public class Cliente {
private String nome;
public Cliente(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
public class TesteCliente {
public static void main(String[] args) {
Cliente cliente = new Cliente("Pedrosa");
System.out.println(cliente.getNome());
}
}
A saída deve ser “Pedrosa”.[/quote]
mais quando vc passou um parâmetro lah no Cliente(“Pedrosa”),
eu poderia passar desta forma ??? nessa parte fiquei com dúvida … da pra explicar isso. pq aki não passei parametro no objeto q eu referenciei, quero passar de outra forma, seri possivel ??
Sim é possivel, desde que o Contrutor receba esse parametro…
Exemplo:
public class Cliente {
private String nome;
private int idade;
public Cliente(){//Construtor que nao recebe nada como parametro
}
public Cliente(String nome){//Construtor que recebe como parametro um String nome
this.nome=nome;
}
public Cliente(int idade){/Construtor que recebe como parametro um int idade
this.idade=idade;
}
public Cliente (String nome, int idade){//Construtor que recee dois paramentros para serem preenchidos
this.nome=nome;
this.idade=idade;
}
public class TestaCliente{
Cliente cliente = new Cliente();
//Criou uma instancia da classe cliente apontando para o construtor que a assinatura dele eh vazia
//Mas poderia chamar qualquer construtor que voce criou, nao necessariamente voce vai ter esse monte de construtor na sua classe
Cliente cliente = new Cliente(String nome);
//Exemplo de instancia jah passando pelo contrutor os valores que voce deseja estar na classe instanciada
//voce pode acessar as variaveis tambem individualmente pelos metodos set/get da classe que voce esta instanciando, sem precisar criar um construtor que recebe os paramentros //desejados
cliente.//Metodos da classe
}
}
Entendeu? …caso negativo, poste a sua duvida que agente tenta explicar de uma maneira diferente…abracos e boa sorte
Voce pode passar via Set e Get da classe instanciada em vez de passar via construtor…
Exemplo:
public class Cliente{
String nome;
public Cliente(){
}
public void setNome(String nome){
this.nome=nome
}
public String getNome(){
return nome;
}
}
public class TestaCliente{
public static void main(String args[]){
Cliente cliente = new Cliente();//Criou a instancia sem passar nenhum parametro
cliente.setNome("TESTE");//Colocou dentro da variavel nome da classe Cliente o nome "Teste"
System.out.println(cliente.getNome());//Resgatou o a variavel nome na classe Cliente e exibiu na console
}
}
Essa eh uma outra forma de acessar as variaveis da classe sem passar pelo construtor os paramentro
foi de grande ajuda esta ultima resposta, do jeito q eu estava falando, focou bem an minah duvida, apesar deu estar passando os parametros via set e get e msm ele ta acusando erro na compilacão.
se eu por todos os parametros dentro de um método dentro da classe Cliente , e tentar chama-lo na classe TestaCliente, como faria para chama-los na classe TestaCliente, usando esse msm exemplo ?
Thalles, voce soh vai conseguir acessar os métodos do cliente somente dpois de um objeto criado.
Se seu cliente possui um metodo setNome vc vai conseguir acessa-lo dentro da classe testaCliente com objetoCliente.setNome().
E acho que esta confundindo parametro com atributo, pois nao faz sentido (na minha opiniao) criar um metodo separado apenas com os supostos parametros que funcionariam perfeitamente no construtor.
Para vc acessar diretamente os atributos do Cliente basta coloca-los como public e vc acessa com objetoCliente.nome porem nao é recomendado essa pratica, veja encapsulamento.
mais eu poderia passar todos os atributos dentro do método Cliente, ou seja, tudo oq eu quero q ele faca, e depois chama-lo em outra classe TestaCliente?
e quando vc fala (possuir um método setNome(), vc diz getters e setters ???disculpa a ignorancia, pois to comecando no java aki… isso que ta meio confuso pra min…
pq aki, pelo nao tenho nenhum método na minha classes com get ou set os quais eu vi vcs citarem, to simplismente tentando iniciar um método da classe Cliente em outra classe chamada TestaCliente… ou to fazendo errado isso ???
explicando:
digamos q eu quero acessar esse método abaixo que fica na classe Cliente:
quero acessar ele da classe TestaCliente por exemplo, mais como os colegas ai disseram, aqui eu não to usando gets ou sets como vi que disseram.
to fazendo do modo errado ?
[code]public class Cliente{
private String nome;
private String cpf;
void inicializaCliente(String nomeCliente, String cpfCliente) {
this.nome = nomeCliente; //o this nao é mais necessario, mas fica mais legivel
this.cpf = cpfCliente;
}
}
[/code]
Vc vai usar o método dessa forma:
public class TestaCliente{
public static void main(String args[]){
Cliente c = new Cliente(); //Instância o objeto.
c.inicializaCliente("Joao", "111.111.111-11"); // E com o objeto instanciado vc pode ter acesso ao método.
}
}
Obrigado Kimpastro, agora fico bem claro no que eu estava errando.
agora sim entendi sobre esses acessos de métodos, so tava tendo dificuldades de entender um pouco os conceitos e sabe como aplicá-los.
pelo q eu entendi, ali quando vc fez c= new Cliente(); --> vc meio q criou um novo cliente instanciando o objeto cliente e referenciando na na variável c, axo q seria isso.
e quando vc fez c.inicializaCliente(“jaoa”, “111.111.111.111-11”); --> vc passou na instancia criada os atributos que vc queria pro método q vc t manipulando certo ???
ou novamente entendi errado ???
mais acho q esta certo, a sua explicacão foi perfeita, so tendo dificuldade em memorizar a estrutura de métodos, getters e setters e construtores.
ai toda vez q vc der new ele vai executar esse metodo.
public class TestaCliente{
public static void main(String args[]){
Cliente c = new Cliente("Joao", "111.111.111-11"); //Instância o objeto e passa os parametros para o construtor.
}
}
qual a melhor forma para recuperar dados (por exemplo getNome()) em uma outra classe que não foi instanciada a classe cliente por exemplo…
n sei se expliquei direito…
por exemplo
classe x{
…
cliente c = new cliente();
c.setNome();
}
classe y {
c.getNome(); <- eu quero recuperar o valor setado para o cliente na classe x…como fazer?!
Cara, os getters e setters são padrões e servem para manipular os atributos da sua classe.
É importante utliza-los porque, justamente por serem padrões, os frameworks por aí os enxergam.
hum…
Vou tentar explicar melhor…
Por exemplo, a classe Usuario (contem os gets e sets)
public class Usuario {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Agora imagine, um programa exemplo com uma JFrame e um JDialog …
no JDialog eu tenho um método que seta um nome:
Usuario usuario = new Usuario();
usuario.setNome("fulano");
Agora na frame principal, eu quero recuperar este nome. É aí que está minha dúvida.
Para eu executar usuario.getNome(), eu tenho que instanciar a classe Usuario e eu perderia os dados…
Qual a maneira correta para recuperar este nome?!