método transferir

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;
}
}
}

1 curtida

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);

[quote=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; } } [/quote]

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

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. ?

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

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.

Alguma ideia pra fazer uma segunda conta?

[code]
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);[/code]

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