Boa tarde!
Imagino que o título tenha ficado confuso então explicarei melhor aqui.
Estou criando um sistema de Banco bem simples em OO e minha dúvida é a seguinte:
O sistema possui duas classes que irão possuir seus atributos e métodos ( Account e Movement ). A classe Account, como próprio nome diz, é a classe para se criar uma nova conta ( Objeto ) quando instanciada assim como a classe Movement.
O problema está na classe Movement. Que acontece exatamente o seguinte:
System.out.println("How much do you want to withdraw?");
value = input.nextDouble();
// a varíavel balance da classe Account já possui um certo valor armazenado.
newAcc.getbalance() = newAcc.getbalance() - value;
O que acontece na classe Movement? Eu crio um Objeto Account newAcc = Account(); e pego a variável de instância ‘’ balance ‘’, localizada na classe Account através de um get, ou seja, newAcc.getbalance().
Só que o que eu preciso fazer é colocar o resultado de ‘’ newAcc.getbalance() - value ‘’ dentro de newAcc.getbalance(). É possível eu fazer isso? Pois aqui está dando um erro, o que eu estou fazendo de errado?
Obrigado pela ajuda, galera.
Espero que a minha explicação não tenha ficada muito confusa.
Cria um setter
newAcc.setBalance( newAcc.getBalance() - value );
Ou melhor ainda: Cria um método chamado withdraw
.
class Account {
/* ... */
public void withdraw(double value) {
if ( value <= balance )
balance -= value;
}
}
Muito mais elegante:
System.out.println("How much do you want to withdraw?");
newAcc.withdraw( input.nextDouble() );
1 curtida
Brother, primeira coisa… você encapsulou a variável assim:
classe: account
private double balance;
public double getBalance(){
return balance;
}
então seu acesso a variável “balance” foi restrita e você só consegue “pegar” o valor dela com o get… O que vc precisa agora é “setar” o valor dessa variável dando suporte pra isso, então na classe account cria:
public void setBalance(double balance){
this.balance = balance;
}
e usar assim:
System.out.println("How much do you want to withdraw?");
value = input.nextDouble();
// a varíavel balance da classe Account já possui um certo valor armazenado.
newAcc.setbalance(newAcc.getbalance() - value);
1 curtida
Valeu!! Consegui resolver o problema aqui!
O SET eu já tinha criado, só não estava sabendo como usá-lo corretamente nesse caso.
Essa parte do código que passei é justamente de um método chamado ‘’ withdraw ‘’ haha!
É que não passei a informação muito completa, erro meu.
Mas valeu!! Consegui resolver aqui!