Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Emissão de passagem de viagem

Finalmente eu acho que entendi a questão de classe, atributos e métodos... estava um pouco confuso, mas como todo programador mais senior e os intrutores aqui dizem "Coloque a mão na massa que tudo começa a fazer sentido", eu fiz isso e agora está ficando mais claro, porém tenho uma duvida.

Acrescentei mais dois atributos, sendo Duração do voo e o preço da passagem.

Gostaria de saber se a forma que eu fiz está correto, o resultado foi o esperado, mas gostaria validar com os instrutores.

Segue meu código abaixo:

Arquivo Passagem.cs :

class Passagem
{
    public string Passageiro { get; set; }
    public string Destino { get; set; } 
    public int DuracaoDoVoo {  get; set; }
    public decimal Preco {  get; set; }

    public Passagem (string passageiro, string destino)
    {
        Passageiro = passageiro;
        Destino = destino;
    }

    public void ExibirInformacoesDaPassagem()
    {
        Console.WriteLine($"Nome do passageiro: {Passageiro}");
        Console.WriteLine($"Destino: {Destino}");
        Console.WriteLine($"Duração do Voo: {DuracaoDoVoo} ");
        Console.WriteLine($"Preço da passagem: {Preco} ");
    }
}

Arquivo Program.cs:

Passagem passagemCliente = new Passagem("Lucas", "Congonhas");

passagemCliente.DuracaoDoVoo = 250;
passagemCliente.Preco = 1400.00m;

passagemCliente.ExibirInformacoesDaPassagem();

Console.WriteLine("\nO sistema finalizou... viva Alura \\o/");

Agradeço a todos pela força!!

2 respostas
solução!

Oii, Lucas! Tudo bem?

Fico muito feliz em ler seu depoimento. O aprendizado na programação funciona exatamente assim: a teoria nos dá o norte, mas é na prática que os conceitos se consolidam. Parabéns pela iniciativa de ir além do que foi solicitado e adicionar novos atributos, essa é a melhor forma de fixar o conteúdo.

Analisando sua implementação, ela tá correta e segue a lógica da orientação a objetos. Você separou bem as responsabilidades e utilizou corretamente o método para exibir as informações.

Para te ajudar a evoluir ainda mais, preparei alguns pontos sobre o que você construiu e uma sugestão de melhoria:

  • Atributos e propriedades: Você adicionou DuracaoDoVoo e Preco corretamente. Note que, ao criar o objeto, o C# inicializa esses valores com o padrão (0 para int e 0.0 para decimal), e depois você os atribui manualmente no Program.cs.
  • Encapsulamento de comportamento: A criação do método ExibirInformacoesDaPassagem foi uma excelente decisão. Isso mantém a lógica de exibição dentro da classe Passagem, evitando repetição de código (o famoso DRY - Don't Repeat Yourself).

Uma pequena sugestão de melhoria

Se a duração e o preço também forem informações que toda passagem deve ter desde o início, você pode incluí-las no construtor. Além disso, no C#, é comum usarmos o modificador de acesso public também na classe para evitar problemas de visibilidade.

Veja como ficaria o arquivo Passagem.cs:

public class Passagem
{
    public string Passageiro { get; set; }
    public string Destino { get; set; } 
    public int DuracaoDoVoo { get; set; }
    public decimal Preco { get; set; }

    // Construtor atualizado para receber todas as informações
    public Passagem(string passageiro, string destino, int duracao, decimal preco)
    {
        Passageiro = passageiro;
        Destino = destino;
        DuracaoDoVoo = duracao;
        Preco = preco;
    }

    public void ExibirInformacoesDaPassagem()
    {
        Console.WriteLine($"Nome do passageiro: {Passageiro}");
        Console.WriteLine($"Destino: {Destino}");
        Console.WriteLine($"Duração do Voo: {DuracaoDoVoo} min");
        Console.WriteLine($"Preço da passagem: {Preco:C}"); // O :C formata como moeda local
    }
}

Dessa forma, no seu Program.cs, você criaria o objeto em uma única linha, garantindo que ele já nasça completo:

Passagem passagemCliente = new Passagem("Lucas", "Congonhas", 250, 1400.00m);
passagemCliente.ExibirInformacoesDaPassagem();

Continue com essa mentalidade de "mão na massa", pois é ela que diferencia um bom desenvolvedor. Seu código está muito organizado e legível.

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

Lorena,

Muito obrigado pelo toque, realmente fazia mais sentido já incluir o preco e duração do voo direto no contrutor dessa forma eu já passaria a informação no objeto.

Abraços.