1
resposta

Transferência entre contas

Ao realizar um transferência para uma conta de destino inexistente, o programa emite uma mensagem que a conta não existe e sugere voltar para o menu inicial, porém a transação não é cancelada, e o dinheiro some da conta de origem. Dessa forma, dentro da classe ContaService, adicionei ao método void realizarTransferência() uma condição antes dos this, para verificar se a conta existe ou não. Para isso eu dei um throw new na RegraDeNegocioException dentro do bloco if, para que caso seja digitada uma conta inexistente, o saldo não seja retirado da conta de origem, por isso coloquei a condição antes dos this, como eu disse anteriormente. Agora, o metodo realizarTransferencia, chama dentro do if o contaExiste passando como parâmetro o númeroContaDestino. Esse método contaExiste eu também coloquei dentro da mesma classe ContaService.

public void realizarTransferencia(Integer numeroContaOrigem, Integer numeroContaDestino, BigDecimal valor) {
        if (!contaExiste(numeroContaDestino)) {
            throw new RegraDeNegocioException("A conta de destino não existe.");
        }
        this.realizarSaque(numeroContaOrigem, valor);
        this.realizarDeposito(numeroContaDestino, valor);
    }
private boolean contaExiste(int numeroDaConta) {
        Set<Conta> contasAbertas = this.listarContasAbertas();
        for (Conta conta : contasAbertas) {
            if (conta.getNumero() == numeroDaConta) {
                return true; // A conta existe
            }
        }
        return false; // A conta não existe
    }
1 resposta

Oii Erivan, tudo bem?

A sua modificação na classe ContaService parece ser uma abordagem válida para lidar com o caso em que a conta de destino não existe.

Ao lançar uma exceção do tipo RegraDeNegocioException no caso de a conta de destino não existir, você está sinalizando um problema na regra de negócio e evitando a dedução incorreta do saldo na conta de origem.

Muito obrigada por compartilhar com a gente!

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software