Java Herança + Interfaces

1 resposta
java
B

Boa noite pesoal. Gostaria de tirar essa duvida sobre o assunto. Quando eu executo o comando c.getCorrente().Saca(100, corrente); o programa pega o valor setado em corrente.Saldo(1000) o que é de se esperar e retorna o valor 900. Até ai tudo bem, porém, quando eu executo logo após isso o comando c.getCorrente().Depoista(200, corrente); em vez de me retornar o valor 1100 que seria o correto, ele “ignora” o comando anterior e soma 200 ao valor padrão de Saldo setado em corrente.Saldo(1000), alguem sabe como resolver ? Segue abaixo as classes.

Classe Conta

package cliente;

public abstract class Conta implements ISaca, IDeposita, ITransfere{
	protected Cliente titular;
	
	public abstract double Saldo(double valor, Conta conta);
	
	public Cliente getTitular() {
		return titular;
	}
	public void setTitular(Cliente titular) {
		this.titular = titular;
	}	
}

Classe Corrente

package cliente;

public class Corrente extends Conta{
	private double saldo;
	@Override
	public double Saldo(double valor, Conta conta) {
		// TODO Auto-generated method stub
		return setSaldo(valor);
	}	
	public double Saca(Conta conta, double valor) {
		return getSaldo() - valor;
	}
	@Override
	public double Deposita(Conta conta, double valor) {
		// TODO Auto-generated method stub
		return getSaldo() + valor;
	}
	@Override
	public double Transfere(Conta conta, double valor, Conta destino) {
		// TODO Auto-generated method stub
		Saca(conta, valor);
		return Deposita(destino, valor);	
	}
	public double getSaldo() {
		return saldo;
	}
	public double setSaldo(double saldo) {
		return this.saldo = saldo;
	}
}

Classe Poupanca

package cliente;

public class Poupanca extends Conta{
	private double saldo;	
	@Override
	public double Saldo(double valor, Conta conta) {
		// TODO Auto-generated method stub
		return setSaldo(valor);
	}
	@Override
	public double Saca(Conta conta, double valor) {
		// TODO Auto-generated method stub
		return getSaldo() - valor;
		}
	@Override
	public double Deposita(Conta conta, double valor) {
		// TODO Auto-generated method stub
		return getSaldo() + valor;
	}
	@Override
	public double Transfere(Conta conta, double valor, Conta destino) {
		// TODO Auto-generated method stub
		Saca(conta,valor);
		return  Deposita(destino, valor);
	}
	public double getSaldo() {
		return saldo;
	}
	public double setSaldo(double saldo) {
		return this.saldo = saldo;
	}
}

Classe TestaCliente

package teste;

import cliente.*;

public class TestaCliente {
	
	public static void main(String[] args) {
		
		Cliente c = new Cliente();
		c.setNome("Bruno");
		c.setCpf("123456");
		//----------------------------
		Endereco endereco = new Endereco();
		endereco.setCEP("24111170");
		endereco.setNumero("60");
		c.setEndereco(endereco);
		//----------------------------
		Conta corrente = new Corrente();
		corrente.Saldo(1000, corrente);
		corrente.setTitular(c);
		c.setCorrente(corrente);
		//----------------------------
		Conta poupanca = new Poupanca();
		c.setPoupanca(poupanca);
		poupanca.Saldo(2000, poupanca);
		poupanca.setTitular(c);
//-------------------------------------------------------------------------		
		Cliente c2 = new Cliente();
		c2.setNome("Lek");
		c2.setCpf("654321");
		//----------------------------
		Endereco endereco2 = new Endereco();
		endereco2.setCEP("963852741");
		endereco2.setNumero("20");
		c2.setEndereco(endereco2);
		//----------------------------
		Conta corrente2 = new Corrente();
		corrente2.Saldo(2000, corrente2);
		corrente2.setTitular(c2);
		c2.setCorrente(corrente2);
		//----------------------------
		Conta poupanca2 = new Poupanca();
		c2.setPoupanca(poupanca2);
		poupanca2.Saldo(5000, poupanca2);
		poupanca2.setTitular(c2);
//---------------------------------------------------------------------
		
		System.out.println("Sacando 100 da conta  corrente de c: "
				 + c.getCorrente().Saca(corrente, 100));
		System.out.println("Sacando 100 da conta  poupanca de c: "
				 + c.getPoupanca().Saca(poupanca, 100));
		System.out.println("Depositando 200 na conta corrente de c: "
				+ c.getCorrente().Deposita(corrente, 200));
		System.out.println("Depositando 200 na conta poupanca de c: "
				+ c.getPoupanca().Deposita(poupanca, 200));
		System.out.println("transferindo 300 da conta corrente de c para a "
				+ "conta poupanca: "
				+ c.getCorrente().Transfere(corrente, 300, poupanca));
		System.out.println("Transferindo 300 da conta poupanca de c para a"
				+ "conta corrente: "
				+ c.getPoupanca().Transfere(poupanca, 300, corrente));
		
		
		System.out.println("Sacando 100 da conta  corrente de c2: "
				 + c2.getCorrente().Saca(corrente, 100));
		System.out.println("Sacando 100 da conta  poupanca de c2: "
				 + c2.getPoupanca().Saca(poupanca, 100));
		System.out.println("Depositando 200 na conta corrente de c2: "
				+ c2.getCorrente().Deposita(corrente, 200));
		System.out.println("Depositando 200 na conta poupanca de c2: "
				+ c2.getPoupanca().Deposita(poupanca, 200));
		System.out.println("transferindo 300 da conta corrente de c2 para a "
				+ "conta poupanca: "
				+ c2.getCorrente().Transfere(corrente, 300, poupanca));
		System.out.println("Transferindo 300 da conta poupanca de c2 para a"
				+ "conta corrente: "
				+ c2.getPoupanca().Transfere(poupanca, 300, corrente));
		
//-------------------------------------------------------------------------------
		
		System.out.println("transferindo 500 da conta corrente de c para conta corrente de c2"
				+ c.getCorrente().Transfere(corrente, 500, corrente2));
		System.out.println("transferindo 500 da conta poupanca de c para conta poupanca de c2"
				+ c.getPoupanca().Transfere(poupanca, 500, poupanca2));
		System.out.println("transferindo 500 da conta poupanca de c para conta corrente de c2"
				+ c.getPoupanca().Transfere(poupanca, 500, corrente2));
		System.out.println("transferindo 500 da conta corrente de c para conta poupanca de c2"
				+ c.getCorrente().Transfere(corrente, 500, poupanca2));
		System.out.println("transferindo 500 da conta poupanca de c2 para conta corrente de c"
				+ c2.getPoupanca().Transfere(poupanca2, 500, corrente));
		System.out.println("transferindo 500 da conta corrente de c2 para conta poupanca de c"
				+ c2.getCorrente().Transfere(corrente2, 500, poupanca));
		
//-------------------------------------------------------------------------------
		
	}
}

1 Resposta

peczenyj

Ora vc pega o salario, soma com algo e retorna.

Se vc quer alterar o salario, vc deve setar essa quantidade.

Criado 20 de outubro de 2018
Ultima resposta 20 de out. de 2018
Respostas 1
Participantes 2