1
resposta

Sistema Bancário

package SistemaBancario;

public abstract class OperacaoBancaria implements AcaoBancaria {

protected double valor;

public OperacaoBancaria(double valor) {
            this.valor = valor;
}

public double getValor() {
    return valor;
}

}

package SistemaBancario;

public class Deposito extends OperacaoBancaria {

public Deposito(double valor) {
    super(valor);
}

@Override
public String executar() {
    if (getValor() < 0) {
        return "Valor inválido";
    }
    return "Depósito de R$ " + getValor() +
            " Realizado com sucesso.";
}

}

package SistemaBancario;

public class Saque extends OperacaoBancaria {

public Saque(double valor) {
    super(valor);
}

@Override
public String executar() {
    if (getValor() < 0) {
        return "Valor inválido";
    }
    return "Saque de R$ " + getValor() +
            " realizado com sucesso";
}

}

package SistemaBancario;

public interface AcaoBancaria {

String executar();

}

package SistemaBancario;

public class Principal {
public static void main(String[] args) {

    OperacaoBancaria deposito = new Deposito(200);
    OperacaoBancaria saque = new Saque(50.5);

    System.out.println(deposito.executar());
    System.out.println(saque.executar());
}

}

1 resposta

Oi, Wanderson! Como vai?

Sua implementação ficou bem organizada e clara, principalmente na forma como você utilizou herança e polimorfismo com a classe abstrata e a interface. A separação das responsabilidades entre OperacaoBancaria, Deposito e Saque mostra um bom entendimento do conceito, e o uso do método executar() sobrescrito em cada classe está bem aplicado.

Continue evoluindo nessa linha, você está construindo uma base sólida em orientação a objetos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!