Problema ao tentar usar um atributo

3 respostas
maginotjr

Olá gente, sou novo por aqui, estou tentando aprender a programar em java atraves de uma apostila em pdf, porém me surgiu um erro quanto tento passar um atributo entre classes:

Cliente.class

package principal;

public class Cliente {
	public String nome;
	String endereco;
	String cidade;
	String bairro;
	String pais = "Brasil";
	int cep;
	
}

Conta.class

package principal;

class Conta {
	int numero;
	double saldo;
	double limite;
	Cliente cliente = new Cliente();
	
	
	boolean saca(double quantidade) {
	if (this.saldo < quantidade) {
		return false;
	} else {
		this.saldo -= quantidade;
		return true;
	}
}
	boolean transferePara(Conta destino, double quantidade) {
		boolean retirou = this.saca(quantidade);
		if (!retirou) {
			System.out.println("Saldo insuficiente para a transferêcnai");
			return false;
		} else {
			destino.deposita(quantidade);
			System.out.println("Transferencia executada com sucesso.");
			return true;
		}
	}
	
	void deposita(double quantidade) {
		this.saldo += quantidade;
	}
}

Main

package principal;

class MeuPrograma {
	public static void main(String[] args) {
		Conta c1 = new Conta();
		c1.cliente.nome = "Joe Doe"; //Aqui é aonde sempre da erro dizendo que nao pode resolver o nome 
		c1.numero = 165301;
		System.out.println(c1.saldo);
		
		
	}
}

Eu coloquei uma observacao na classe MeuPrograma (Main) que é aonde está acontecendo o erro…

[ ] ś

3 Respostas

M

com certeza vc ja deve estar cansado e nao ta enxergando heheheh isso sempre acontece bem vamos la vc instanciou so a classe conta nao instanciou a classe cliente ficando assim

outra dica importante nao basta programar em java tem que ser orientado a objeto grave isso.

em vez de tu acessar direto a variavel nome, crie 2 metodos um pra setar e outro pra pegar ficando assim

e fora dos metodos digite

public String nome;

pronto assim sempre que vc kizer mudar o nome sera

espero ter ajudado

LPJava

vc tentou acessar um membro da class cliente sem ter a instancia da class… como o amigo acima falou… normalmente isso acontece por falta de atenção e as vezes pq ja está cansado mesmo é normal…

francislon

Como mfp.c falou, orientação a objetos de dá a fantastica possibilidade de você encapsular seus atributos protegendo-os.

private String nome;
 	private String endereco;
 	private String cidade;
 	private String bairro;
 	private String pais = "Brasil";
 	private int cep;

Como seus atributos são privates, vc não poderá acessar eles diretamente de outra classe, ou seja, vc não poderá fazer:


cli.nome = “Joe Doe”;

Na sua classe cliente você faria seus metodos sets e gets:

package principal;
 
 public class Cliente {
 	private String nome;
 	private String endereco;
 	private String cidade;
 	private String bairro;
 	private String pais = "Brasil";
 	private int cep;

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

        // aki vc faz os outros sets e gets dos outros atributos
 }

Agora sim você vai atribuir valores a seus atributos utilizando os metodos sets e gets:

class MeuPrograma {
          public static void main(String[] args) {
                  Conta c1 = new Conta();
                  Cliente cli = new Cliente();
                  cli.setNome("Joe Doe");
                  // Atribuindo valor ao atributo nome da sua instancia
                  System.out.println(c1.getNome());

}
}

Espero ter ajudado.

Criado 10 de maio de 2007
Ultima resposta 10 de mai. de 2007
Respostas 3
Participantes 4