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: registro de clientes

Segue minha resolução.

Classe Program:

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

cliente1.MostrarSaudacao();
cliente2.MostrarSaudacao();

Classe Pessoa:

    internal class Pessoa
    {
        public string Nome { get; }
        public int Idade { get; }

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

Classe PessoaVIP

    internal class ClienteVIP : Pessoa
    {
        public string NivelFidelidade { get; }
        public string Codigo { get; }

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

        public void MostrarSaudacao()
        {
            Console.WriteLine($"Bem-vindo, cliente VIP: {Nome}");
            Console.WriteLine($"Idade: {Idade}");
            Console.WriteLine($"Nível de Fidelidade: {NivelFidelidade}");
            Console.WriteLine($"Código VIP: {Codigo}");
        }
    }
1 resposta
solução!

Oi, Fabiano! Como vai?

Eu gostei de como você aplicou herança ao criar ClienteVIP a partir da classe Pessoa, reaproveitando os atributos Nome e Idade e adicionando informações próprias, como NivelFidelidade e Codigo. A chamada de base(nome, idade) também ficou bem colocada, pois deixa claro que parte dos dados pertence à classe base.

Uma dica interessante para o futuro é sobrescrever o método ToString() para centralizar a forma como os dados do cliente serão exibidos.

public override string ToString()
{
    return $"Cliente VIP: {Nome} - Nivel: {NivelFidelidade} - Codigo: {Codigo}";
}

Console.WriteLine(cliente1);

Esse código permite imprimir o objeto diretamente com Console.WriteLine(cliente1), deixando a saída mais organizada e reutilizável.

Você pretende testar também uma classe ClienteComum para comparar melhor o uso de herança entre tipos diferentes de cliente?

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