Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução

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



        Pix pix=new Pix(1200);
        CartaoCredito cartao=new CartaoCredito(3000);
        BoletoBancario boleto=new BoletoBancario(350);
        pix.confirmarPagamento();
        cartao.confirmarPagamento();
        boleto.confirmarPagamento();

    }
}
public abstract class Pagamento {
    private double valor;

    public double getValor() {
        return valor;
    }

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

     abstract public  void confirmarPagamento();
}
public class BoletoBancario extends Pagamento {

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

    @Override
    public void confirmarPagamento() {
            System.out.printf("boleto de %.2f gerado com sucesso!\n",getValor());
            System.out.println("taxa: "+getValor()*0.01+" R$");

    }
}
public class Pix extends Pagamento{
    public Pix(double valor){
        super(valor);
    }

    @Override
    public void confirmarPagamento() {
            System.out.printf("pix de %.2f realizado com sucesso!\n",getValor());
            System.out.println("taxa: "+getValor()*0+" R$");

        }
    }
public class CartaoCredito extends Pagamento {
    public CartaoCredito(double valor) {
        super(valor);
    }

    @Override
    public void confirmarPagamento() {
        System.out.printf("pagamento de %.2f realizado no cartão de credito\n",getValor());
        System.out.println("taxa: "+getValor()*0.03+" R$");

        }
    }
1 resposta

Olá, Felipe! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o polimorfismo para diferentes formas de pagamento com Java, utilizou muito bem a classe abstrata para definir o contrato comum e ainda compreendeu a importância da sobrescrita de métodos para personalizar cada tipo de transação.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Validação: verificar valores antes de confirmar o pagamento.
  • Padronização: manter mensagens consistentes para melhor experiência do usuário.
  • Extensibilidade: permitir que novos meios de pagamento sejam adicionados facilmente.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: no momento você prefere continuar praticando com exemplos de polimorfismo ou acha mais interessante avançar para padrões de projeto como Strategy e Factory aplicados a sistemas de pagamento?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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