1
resposta

[Projeto] Desafio resolvido

package com.github.aldenyjr.exercicios.sistema_de_pagamento;

public abstract class Pagamento {
    protected double valor;

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

    public abstract void processarPagamento();

    protected void exibirResumo(double taxa) {
        System.out.printf("Pagamento de R$ %.2f confirmado.%n", valor);
        System.out.printf("Taxa aplicada: R$ %.2f%n%n", taxa);
    }
}
package com.github.aldenyjr.exercicios.sistema_de_pagamento;

public class CartaoCredito extends Pagamento {

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

    @Override
    public void processarPagamento() {
        double taxa = valor * 0.03;
        System.out.println("Pagamento via Cartão de Crédito");
        exibirResumo(taxa);
    }
}
package com.github.aldenyjr.exercicios.sistema_de_pagamento;

public class BoletoBancario extends Pagamento {

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

    @Override
    public void processarPagamento() {
        double taxa = valor * 0.01;
        System.out.println("Pagamento via Boleto Bancário");
        exibirResumo(taxa);
    }
}
package com.github.aldenyjr.exercicios.sistema_de_pagamento;

public class Pix extends Pagamento {

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

    @Override
    public void processarPagamento() {
        double taxa = 0;
        System.out.println("Pagamento via Pix");
        exibirResumo(taxa);
    }
}
package com.github.aldenyjr.exercicios.sistema_de_pagamento;

public class SistemaDePagamento {
    public static void main(String[] args) {
        Pagamento p1 = new CartaoCredito(100);
        Pagamento p2 = new BoletoBancario(200);
        Pagamento p3 = new Pix(300);

        p1.processarPagamento();
        p2.processarPagamento();
        p3.processarPagamento();
    }
}

Resultado:

Pagamento via Cartão de Crédito
Pagamento de R$ 100,00 confirmado.
Taxa aplicada: R$ 3,00

Pagamento via Boleto Bancário
Pagamento de R$ 200,00 confirmado.
Taxa aplicada: R$ 2,00

Pagamento via Pix
Pagamento de R$ 300,00 confirmado.
Taxa aplicada: R$ 0,00
1 resposta

Oi, Aldeny! Como vai?

A forma como você estruturou a classe abstrata Pagamento e reutilizou o método exibirResumo(double taxa) ficou ótima, porque isso deixou a solução organizada e mostrou muito bem o uso de herança, polimorfismo e sobrescrita de método no sistema de pagamentos.

Uma dica interessante para o futuro é usar o método getClass().getSimpleName() quando quiser identificar o tipo do objeto em tempo de execução. Veja este exemplo:


Pagamento pagamento = new Pix(150);
System.out.println(pagamento.getClass().getSimpleName());

Esse código mostra no console o nome da classe do objeto criado, o que pode ajudar em testes e mensagens dinâmicas no sistema.

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