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

Registro de Clientes - POO

Program.cs

using RegistroDeClientes;

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

Console.WriteLine(@$"Bem-vindo, cliente VIP: {cliente1.Nome}
Idade: {cliente1.Idade}
Nivel de Fidelidade: {cliente1.Level}
Codigo VIP: {cliente1.Codigo}");

Console.WriteLine(@$"
Bem-vindo, cliente VIP: {cliente2.Nome}
Idade: {cliente2.Idade}
Nivel de Fidelidade: {cliente2.Level}
Codigo VIP: {cliente2.Codigo}");

Pessoa.cs

namespace RegistroDeClientes;

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

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

ClienteVIP.cs

namespace RegistroDeClientes;

internal class ClienteVIP : Pessoa
{
    public ClienteVIP(string nome, int idade, string level, string codigo) 
        : base(nome, idade)
    {
        this.Level = level;
        this.Codigo = codigo;
    }

    public string Level { get; }
    public string Codigo { get; }

}
1 resposta
solução!

Oi, Cauã! Como vai?

Que ótimo ver você praticando Programação Orientada a Objetos com um exemplo tão bem estruturado. O seu código de registro de clientes demonstra um entendimento sólido dos conceitos fundamentais da POO em C#.

A forma como você organizou a classe Pessoa com as propriedades Nome e Idade usando public e get; set;, e depois criou a classe ClienteVIP herdando de Pessoa com os atributos Level e Codigo, ficou muito bem construída. O uso do namespace RegistroDeClientes manteve tudo organizado, e a chamada base(nome, idade) no construtor de ClienteVIP demonstra que você entendeu como a herança funciona na prática. Repare também que as propriedades Level e Codigo foram declaradas apenas com get, o que as torna imutáveis após a criação do objeto, uma decisão bastante adequada para códigos de identificação VIP.

Uma dica interessante para o futuro é sobrescrever o método ToString() na classe Pessoa para centralizar a exibição das informações, evitando repetir vários blocos de Console.WriteLine para cliente1, cliente2 e outros objetos que você vier a criar. Veja este exemplo:


public override string ToString()
{
    return $"Nome: {Nome}\nIdade: {Idade}";
}

Com isso, ao chamar Console.WriteLine(cliente1), o próprio objeto sabe como se apresentar, deixando o código em Program.cs muito mais limpo e reutilizável.

Você já pensou em como poderia sobrescrever o ToString() diretamente na classe ClienteVIP para incluir também o Level e o Codigo na exibição?

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