@Test(expected = BusinessException.class) public void transferirNegativo() { a.transferir(b, new BigDecimal("-1")); }
public void transferir(ProductoFinanciero destino, BigDecimal importe) { if (this.equals(destino) == true) { throw new IllegalArgumentException("Transferencia entre una única cuenta."); } if (importe.compareTo(BigDecimal.ZERO) < 0) { throw new BusinessException(String.format("Importe {0} debería de ser superior a 0.", importe)); } if (importe.compareTo(this.getSaldo()) > 0) { throw new BusinessException(String.format("Saldo insuficiente para transferir el importe {0}.", importe)); } this.setSaldo(this.getSaldo().subtract(importe)); destino.setSaldo(destino.getSaldo().add(importe)); }
CuentaCorriente extends ProductoFinanciero implements Serializable { public void transferir(ProductoFinanciero destino, BigDecimal importe) { if (this.equals(destino) == true) { throw new IllegalArgumentException("Transferencia entre una única cuenta."); } if (importe.compareTo(BigDecimal.ZERO) < 0) { throw new BusinessException(String.format("Importe {0} debería de ser superior a 0.", importe)); } if (importe.compareTo(this.getSaldo()) > 0) { throw new BusinessException(String.format("Saldo insuficiente para transferir el importe {0}.", importe)); } this.setSaldo(this.getSaldo().subtract(importe)); destino.setSaldo(destino.getSaldo().add(importe)); } }
CuentaCorriente extends ProductoFinanciero implements Serializable { public void transferir(ProductoFinanciero destino, BigDecimal importe) { if (this.equals(destino) == true) { throw new IllegalArgumentException("Transferencia entre una única cuenta."); } if (importe.compareTo(BigDecimal.ZERO) < 0) { throw new BusinessException(String.format("Importe {0} debería de ser superior a 0.", importe)); } if (importe.compareTo(this.getSaldo()) > 0) { throw new BusinessException(String.format("Saldo insuficiente para transferir el importe {0}.", importe)); } this.setSaldo(this.getSaldo().subtract(importe)); destino.setSaldo(destino.getSaldo().add(importe)); } CuentaCorriente();  CuentaCorriente(String codigo, BigDecimal saldo, BigDecimal interesAnual); }
CuentaCorriente extends ProductoFinanciero implements Serializable { public void transferir(ProductoFinanciero destino, BigDecimal importe) { if (this.equals(destino) == true) { throw new IllegalArgumentException("Transferencia entre una única cuenta."); } if (importe.compareTo(BigDecimal.ZERO) < 0) { throw new BusinessException(String.format("Importe {0} debería de ser superior a 0.", importe)); } if (importe.compareTo(this.getSaldo()) > 0) { throw new BusinessException(String.format("Saldo insuficiente para transferir el importe {0}.", importe)); } this.setSaldo(this.getSaldo().subtract(importe)); destino.setSaldo(destino.getSaldo().add(importe)); } CuentaCorriente();  CuentaCorriente(String codigo, BigDecimal saldo, BigDecimal interesAnual); void transferir(ProductoFinanciero destino,
            BigDecimal importe); }
CuentaCorriente extends ProductoFinanciero implements Serializable { public void transferir(ProductoFinanciero destino, BigDecimal importe) { if (this.equals(destino) == true) { throw new IllegalArgumentException("Transferencia entre una única cuenta."); } if (importe.compareTo(BigDecimal.ZERO) < 0) { throw new BusinessException(String.format("Importe {0} debería de ser superior a 0.", importe)); } if (importe.compareTo(this.getSaldo()) > 0) { throw new BusinessException(String.format("Saldo insuficiente para transferir el importe {0}.", importe)); } this.setSaldo(this.getSaldo().subtract(importe)); destino.setSaldo(destino.getSaldo().add(importe)); } CuentaCorriente();  CuentaCorriente(String codigo, BigDecimal saldo, BigDecimal interesAnual); void transferir(ProductoFinanciero destino,
            BigDecimal importe);  }