1
resposta

Sistema de pagamentos

package SistemaDePagamento;

public abstract class Pagamento {

    private double valor;

    public Pagamento(double valor) {

        if (valor < 0) {
            throw new IllegalArgumentException("Valor inválido");
        }
        this.valor = valor;
    }

    protected double getValor() {
        return valor;
    }

    public abstract double calcularTaxa();

    public abstract void confirmar();

    public double getValorTotal() {
        return valor + calcularTaxa();
    }
}
package SistemaDePagamento;

public class CartaoDeCredito extends Pagamento {

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

    @Override
    public double calcularTaxa() {
        return getValor() * 0.03;
    }

    @Override
    public void confirmar() {
        System.out.println("Pagamento confirmado com sucesso");
    }
}
package SistemaDePagamento;

public class Boleto extends Pagamento {

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

    @Override
    public double calcularTaxa() {
        return getValor() * 0.01;
    }

    @Override
    public void confirmar() {
        System.out.println("Pagamento confirmado com sucesso");
    }
}
package SistemaDePagamento;

public class Pix extends Pagamento{


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

    @Override
    public double calcularTaxa() {
        return 0;
    }

    @Override
    public void confirmar() {
        System.out.println("Pagamento via pix confirmado");
    }
}
package SistemaDePagamento;

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

        Pagamento cartao = new CartaoDeCredito(250);
        System.out.println("Total com cartão: R$ " + cartao.getValorTotal());
        cartao.confirmar();
        System.out.println("------");

        Pagamento boleto = new Boleto(500);
        System.out.println("Total com boleto: R$ " + boleto.getValorTotal());
        boleto.confirmar();
        System.out.println("------");

        Pagamento pix = new Pix(300);
        System.out.println("Total com pix: R$ " + pix.getValorTotal());
        pix.confirmar();

    }
}
1 resposta

Olá, Wanderson, como vai?

O seu código demonstra um excelente domínio sobre os pilares da orientação a objetos, utilizando corretamente o polimorfismo e a herança para resolver o desafio proposto. A criação da classe abstrata para definir o comportamento comum e a implementação específica das taxas em cada subclasse garantem que o sistema seja extensível e organizado.

Parabéns pela inclusão da validação de valores negativos no construtor, o que reforça a segurança do seu software, e obrigado por compartilhar sua resolução no fórum, continue com esse ótimo desempenho nos estudos.

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