1
resposta

[Resolução] Faça como eu fiz: dados de passageiros

Pessoa.cs

namespace E03DadosDePassageiros.Models;

//Tornei a classe abstrata supondo que só serão criados tipos especializados
internal abstract class Pessoa(string nome, int idade)
{
    public string Nome { get; } = nome;
    public int Idade { get; } = idade;
}

Passageiro.cs

namespace E03DadosDePassageiros.Models;

internal class Passageiro(string nome, int idade, int quantidadeBilhetes) : Pessoa(nome, idade)
{
    public int QuantidadeDeBilhetes { get; private set; } = quantidadeBilhetes;

    public void AdicionarBilhetes(int quantidade)
{
    if (quantidade <= 0)
    {
        Console.WriteLine("Erro: A quantidade deve ser positiva.");
        return;
    }

    QuantidadeDeBilhetes += quantidade;
}

public void RemoverBilhetes(int quantidade)
{
    if (quantidade <= 0)
    {
        Console.WriteLine("Erro: A quantidade de remoção deve ser positiva.");
        return;
    }

    if (quantidade > QuantidadeDeBilhetes)
    {
        Console.WriteLine("Erro: Saldo insuficiente. Tens apenas " + QuantidadeDeBilhetes + " bilhetes.");
        return;
    }

    QuantidadeDeBilhetes -= quantidade;
}


    public override string ToString()
        => $"Passageiro: {Nome} - Idade: {Idade} - Bilhetes: {QuantidadeDeBilhetes}";
}

Program.cs

namespace E03DadosDePassageiros.Models;

internal class Passageiro(string nome, int idade, int quantidadeBilhetes) : Pessoa(nome, idade)
{
    public int QuantidadeDeBilhetes { get; private set; } = quantidadeBilhetes;

    public void AdicionarBilhetes(int quantidade)
        => QuantidadeDeBilhetes += quantidade;
    public void RemoverBilhetes(int quantidade)
        => QuantidadeDeBilhetes -= quantidade;

    public override string ToString()
        => $"Passageiro: {Nome} - Idade: {Idade} - Bilhetes: {QuantidadeDeBilhetes}";
}
1 resposta

Oi, Gerson! Como vai?

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

Achei interessante você ter tornado a classe Pessoa abstrata, isso mostra que você pensou bem na modelagem e na ideia de especialização com herança. Também foi muito bom incluir validações nos métodos AdicionarBilhetes e RemoverBilhetes, controlando valores negativos e saldo insuficiente, isso deixa a classe mais segura e coerente com as regras de negócio.

Uma dica interessante para o futuro é utilizar ArgumentException para tratar regras inválidas em vez de apenas escrever no console. Veja este exemplo:


public void AdicionarBilhetes(int quantidade)
{
    if (quantidade <= 0)
    {
        throw new ArgumentException("quantidade deve ser maior que zero");
    }

    QuantidadeDeBilhetes += quantidade;
}

Nesse código, usamos throw para interromper a execução quando o valor é inválido, garantindo que o erro seja tratado de forma mais adequada em outros pontos do sistema.

Alura

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