1
resposta

[Projeto] Faça como eu fiz: registro de clientes

class Pessoa
{
    public Pessoa(string nome, int idade)
    {
        Nome = nome;
        Idade = idade;
    }

    public string Nome { get; private set; }
    
    public int Idade { get; private set; }
}

class ClienteVip : Pessoa
{
    public ClienteVip(string nome, int idade, string nivelFidelidade, string codigo) : base(nome, idade)
    {
        NivelFidelidade = nivelFidelidade;
        Codigo = codigo;
    }

    public string NivelFidelidade { get; private set; }
    public string Codigo { get; private set; }

    public void ExibirSaudacao()
    {
        Console.WriteLine(@$"Bem-vindo, cliente VIP: {Nome}
Idade: {Idade}
Nível de Fidelidade: {NivelFidelidade}
Código VIP: {Codigo}");
    }
}

ClienteVip cliente1 = new ClienteVip("Renata", 32, "Ouro", "VIP123A");  
ClienteVip cliente2 = new ClienteVip("Leonardo", 40, "Diamante", "VIP789X");  

cliente1.ExibirSaudacao();
cliente2.ExibirSaudacao();
1 resposta

Olá, Eduardo! Tudo bem?

Parabéns pela implementação! Seu código demonstra uma compreensão sólida de como aplicar a herança em C# para evitar a duplicação de código e organizar as entidades do sistema de forma lógica.

Ao herdar de Pessoa, sua classe ClienteVip aproveita as propriedades base enquanto adiciona comportamentos e características específicas, o que é a essência da Orientação a Objetos.

Aqui estão os pontos de destaque do seu projeto:

  • **Uso do Construtor com base**: Você utilizou corretamente a palavra-chave base(nome, idade) no construtor de ClienteVip. Isso garante que as propriedades herdadas da classe Pessoa sejam inicializadas corretamente no momento da criação do objeto.
  • **Encapsulamento com private set**: Manter os setters como privados é uma excelente prática. Isso protege a integridade dos dados, garantindo que o nome e a idade só possam ser definidos através do construtor.
  • Organização de Responsabilidades: A classe ClienteVip contém apenas o que é exclusivo dela (NivelFidelidade e Codigo), enquanto o que é comum a qualquer ser humano permanece em Pessoa.
  • Interpolação de Strings: O uso do @$ para formatar a saudação tornou o código limpo e fácil de ler, ideal para exibir informações formatadas no console.

Como você está explorando Herança vs. Composição, um próximo passo interessante seria pensar: "E se um cliente deixar de ser VIP?". Na herança, essa mudança é rígida. Na composição, você poderia ter uma classe Cliente que possui um objeto PerfilFidelidade, permitindo trocar o comportamento do cliente em tempo de execução sem precisar criar uma nova classe!

Espero que possa ter lhe ajudado!