Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

[Projeto] Faça como eu fiz: sistema de pagamentos

Classe Program:

using SistemaDePagamentos;

PagamentoCredito cliente1 = new("André", "andre@email.com");
PagamentoBoleto cliente2 = new("Juliana", "juliana@email.com");

cliente1.ProcessarPagamento();
cliente2.ProcessarPagamento();

Classe Pessoa:

namespace SistemaDePagamentos;

internal class Pessoa(string nome, string email)
{
    public string Nome { get; private set; } = nome;
    public string Email { get; private set; } = email;
}

Interface IPagamento

namespace SistemaDePagamentos;

internal interface IPagamento
{
    void ProcessarPagamento();
}

Classe PagamentoBoleto:

namespace SistemaDePagamentos;

internal class PagamentoBoleto(string nome, string email) : Pessoa(nome, email), IPagamento
{
    public void ProcessarPagamento()
    {
        Console.WriteLine($"Processando pagamento via boleto para {Nome} - {Email}");
    }
}

Classe PagamentoCredito:

namespace SistemaDePagamentos;

internal class PagamentoCredito(string nome, string email) : Pessoa(nome, email), IPagamento
{
    public void ProcessarPagamento()
    {
        Console.WriteLine($"Processando pagamento com cartão de crédito para {Nome} - {Email}");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da forma como você aplicou herança com a classe Pessoa e utilizou a interface IPagamento para definir o comportamento de pagamento. Sua solução ficou organizada e demonstra bem a diferença entre reutilizar atributos comuns por herança e implementar comportamentos específicos em cada tipo de pagamento. Além disso, o uso do construtor primário deixou o código mais moderno e conciso.

Uma dica interessante para o futuro é utilizar override ToString() para facilitar a exibição dos dados de um objeto. Veja este exemplo:

public override string ToString()
{
    return $"Nome: {Nome} - Email: {Email}";
}

Esse código permite exibir as informações da pessoa de forma mais simples quando o objeto for utilizado em mensagens ou no console.

Alura

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