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

Dados de Passageiros - POO

Program.cs

using DadosPassageiros;

Passageiro p1 = new Passageiro("Lúcia", 45, 3);
Passageiro p2 = new Passageiro("Rodrigo", 30, 1);

p1.ExibirDados();
p2.ExibirDados();

Passageiro.cs

namespace DadosPassageiros;

internal class Passageiro : Pessoa
{
    public Passageiro(string nome, int idade, int quantidadeBilhetes)
        : base(nome, idade)
    {
        this.QuantidadeBilhetes = quantidadeBilhetes;
    }

    public int QuantidadeBilhetes { get; }

    public void ExibirDados()
    {
        Console.WriteLine($"Passageiro: {this.Nome} - Idade: {this.Idade} - Bilhetes: {this.QuantidadeBilhetes}");
    }
}

Pessoa.cs

namespace DadosPassageiros;

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

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

}
1 resposta
solução!

Oi, Cauã! Como vai?

Que ótimo exercício com dados de passageiros usando Programação Orientada a Objetos! Você demonstrou um entendimento muito claro ao separar as responsabilidades entre a classe Pessoa e a classe Passageiro dentro do namespace DadosPassageiros. O uso de herança para reaproveitar os atributos public string Nome e public int Idade é exatamente o caminho certo, e a chamada ao construtor base com base(nome, idade) mostra que você compreendeu bem esse conceito fundamental.

Outro ponto positivo é a forma como você utilizou a propriedade public int QuantidadeBilhetes com o get somente leitura, garantindo que os dados do objeto não sejam alterados após a criação. Isso demonstra boas práticas de encapsulamento.

Uma dica interessante para o futuro é sobrescrever o método ToString() na classe Pessoa ou na classe Passageiro, tornando o método ExibirDados ainda mais elegante e reutilizável. Veja este exemplo:


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

Com essa abordagem, sempre que um objeto do tipo Passageiro for impresso diretamente no console com Console.WriteLine, o método ToString será chamado automaticamente, sem a necessidade de um método separado. Isso torna o código mais limpo e alinhado com as convenções do C#.

Você já pensou em como poderia reaproveitar esse ToString na classe Passageiro para incluir também a informação de QuantidadeBilhetes sem repetir o código da classe Pessoa?

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