método transferir

7 respostas
J

Oi gente, sou bem iniciante em Java, pesquisei em apostila, vi exemplo pela net mas até agora não achei nada que se encaixe com a minha necessidade. Bem, comecei a fazer um exercício porém desde ontem tou travada no método transferir e como é pedido no enunciado não sei como codificá-lo, será que vocês podem me ajudar? Aqui segue a questão e o que consegui fazer até então:

a) Classe ContaCorrente.

a. Atributos da classe ContaCorrente:

numeroConta (inteiro) → não pode receber um valor menor ou igual a zero;

correntista (string) → não pode receber um valor nulo ou string vazia;

saldo (ponto-flutuante) → não pode manter um valor menor que zero;

b. Implementar apenas um construtor recebendo valores para os atributos numeroConta e correntista da classe ContaCorrente.

c. Utilizar a técnica de encapsulamento apresentada no curso e implementar métodos get e set para todos os atributos da classe (ver observação abaixo).

OBS: Não implementar o método set para o atributo saldo. O valor do atributo saldo só poderá ser alterado através dos métodos deposita, saque e transfere detalhados a seguir.

d. Implementar o método boolean deposita(double valor) que deposita um valor na conta corrente. O método retorna verdadeiro se o depósito foi realizado com sucesso ou falso em caso contrário.

OBS: Verificar se o valor informado é maior que zero.

e. Implementar o método boolean saque(double valor) que realiza um saque na conta corrente. O método retorna verdadeiro se o saque foi realizado com sucesso ou falso e caso contrário.

OBS: Verificar se o valor informado é maior que zero e se há saldo suficiente para realizar o saque.

f. Implementar o método boolean transfere(double valor, ContaCorrente c2) que realiza uma transferência de um valor da conta corrente para a conta corrente c2. O método retorna verdadeiro se a transferência foi realizada com sucesso ou falso em caso contrário.

OBS: Verificar se o valor informado é maior que zero, se o objeto c2 não é nulo e se há saldo suficiente para realizar a transferência.

b) Implementar uma aplicação chamada AplicacaoContas que instancia dois objetos do tipo ContaCorrente, a partir de dados informados pelo usuário. Em seguida, o programa deve oferecer um menu para o usuário com as seguintes opções:

a. Imprimir dados de uma conta. Para esta opção o usuário deverá informar o número da conta;

b. Realizar depósito. Para esta opção o usuário deverá informar o número da conta e o valor para depósito;

c. Realizar saque. Para esta opção o usuário deverá informar o número da conta e o valor para saque;

d. Realizar transferência. Para esta opção o usuário deverá informar o número da conta origem, o número da conta destino e o valor para transferência;

OBS: Para as opções de depósito, saque e transferência, o programa deve imprimir na tela uma mensagem indicando se o depósito, o saque ou a transferência foi realizado com sucesso ou não.

public class ContaCorrente {

int numeroConta;

String correntista;

double saldo;
ContaCorrente(int numeroConta, String correntista){
         this.numeroConta = numeroConta;
         this.correntista = correntista;
}

public void SetNumeroConta (int numeroConta){

this.numeroConta;

}

int GetNumeroConta(){

return this.numeroConta;

}

public void SetCorrentista(String correntista){

this.correntista = correntista;

}

String GetCorrentista(){

return this.correntista;

}
boolean deposita(double valor){

if (valor > 0 ){

this.saldo = this.saldo + valor;

return true;

}else{

return false;

}

}

boolean saque (double valor){

if (valor>0){

if(this.saldo > valor){

this.saldo = this.saldo - valor;

return true;

}else{

return false;

}

}else{

return false;

}

}

boolean transfere (double valor, ContaCorrente c2){

if (valor > 0){

boolean retirou = this.saque(valor);

if (retirou == false){

return false;

}else{

c2.deposita(valor);

return true;

}

}else{

System.out.println(Valor abaixo de zero);

return false;

}

}

}

7 Respostas

rafaelbortoletto

Pelo que eu vi falta apenas verificar se o objeto c2 é diferente de nulo

boolean transfere (double valor, ContaCorrente c2){
if (valor > 0){
boolean retirou = this.saque(valor);
if (retirou == false){
return false;
}else{
if(c2!= null){
 c2.deposita(valor);
 return true;
}
else{
System.err.println("Valor de Conta Corrente 2 nulo!");
return false;
}
}else{
System.out.println("Valor abaixo de zero");
return false;
}
}

Na classe AplicacaoContas você criará duas contas de acordo com o que o usuário informar.
No método transferir da classe AplicacaoContas você terá que informar a conta de origem e destino. Então, se você criou uma conta c1 e vai transferir para uma conta c2 ficaria assim:

c1.transfere(100.0,c2);
J

rafaelbortoletto:
Pelo que eu vi falta apenas verificar se o objeto c2 é diferente de nulo

boolean transfere (double valor, ContaCorrente c2){ if (valor > 0){ boolean retirou = this.saque(valor); if (retirou == false){ return false; }else{ if(c2!= null){ c2.deposita(valor); return true; } else{ System.err.println("Valor de Conta Corrente 2 nulo!"); return false; } }else{ System.out.println("Valor abaixo de zero"); return false; } }

Muito obrigada, isso me ajudou, não sabia como validar isso! =)

J

Alguém poderia colocar aqui algum exemplo de como posso fazer essa parte da questão: b) Implementar uma aplicação chamada AplicacaoContas que instancia dois objetos do tipo ContaCorrente, a partir de dados informados pelo usuário. ?

gRoOve

Qual tua dificuldade? Para instanciar classes utilize new NomeDaClasse().

J

Na verdade, é como eu faço para guardar por exemplo o numero da conta e nome do correntista, sendo que o usuario é quem informa isso.

J
Alguma ideia pra fazer uma segunda conta?
ArrayList contas = new ArrayList();
ContaCorrente c1 = new ContaCorrente();

String numeroConta = JOptionPane.showInputDialog("Numero da conta: ");
int numero = Integer.parseInt(numeroConta);
String nome = JOptionPane.showInputDialog("Correntista: ");

c1.SetNumeroConta(numero);
c1.SetCorrentista (nome);

contas.add(c1);
J

resolvi essa questao da segunda conta, acho não foi de maneira elegante ,mas pelo menos funfa ^^

Criado 23 de abril de 2011
Ultima resposta 23 de abr. de 2011
Respostas 7
Participantes 3