Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resposta: controle de matrícula

Classe Curso:

public class Curso
{
    private readonly List<Estudante> matriculas;
    public string Nome;

    public int VagasTotais;

    public string Matriculas;

    public int VagasDisponiveis { get; }

    public Curso(string nome, int vagastotais)
    {
        Nome = nome;
        VagasTotais = vagastotais;
        matriculas = new List<Estudante>();
        
    }
   
    
    public bool Matricular(Estudante estudante)
    {
        

        if (matriculas.Count < VagasTotais)
        {
            matriculas.Add(estudante);
            Console.WriteLine("Estudante Matriculado.");
            return true;
        }
        else
        {
            Console.WriteLine("Erro: Não há vagas disponíveis para este curso.");
            return false;
        }
         
    }

    public void ListarMatriculados()
    {
        Console.WriteLine("Estudantes matriculados em Lógica de Programação:");
        foreach (var estudante in matriculas)
        {
            Console.WriteLine("-" + estudante.Nome);
            
        }
        Console.WriteLine("Vagas disponiveis: " + this.VagasDisponiveis);
    }
}

Classe Estudante:

public class Estudante
{
    public Estudante(string nome)
    {
        Nome = nome;
    }

    public string Nome {  get; set; }
}

Program:

Curso curso = new Curso("Lógica de Programação", 2);
curso.Matricular(new Estudante("Rafaela"));
curso.Matricular(new Estudante("João"));
curso.Matricular(new Estudante("Mirela"));
curso.ListarMatriculados();
1 resposta
solução!

Oii, Philip! Tudo bem?

Parabéns pelo empenho em resolver o desafio! Achei muito legal que você usou o readonly na sua lista de matrículas, isso mostra cuidado com a segurança dos dados da classe. Além disso, sua lógica no método Matricular para verificar se há vagas (if/else) está certinha!

Tenho apenas alguns pontos para a gente polir seu código e deixá-lo ainda mais dinâmico, vamos lá?

**1. A Propriedade VagasDisponiveis**
Notei que você declarou assim:

public int VagasDisponiveis { get; }

Dessa forma, o C# cria uma propriedade que guarda um valor fixo. Como não atribuímos valor a ela, ela ficará sempre com o valor padrão (zero).
A ideia do exercício é que essa propriedade seja calculada toda vez que for acessada. Para isso, precisamos dizer ao get qual conta ele deve fazer. Ficaria assim:

public int VagasDisponiveis
{
    get
    {
        return VagasTotais - matriculas.Count;
    }
}
// ou usando a sintaxe curta (arrow expression):
// public int VagasDisponiveis => VagasTotais - matriculas.Count;

Dessa forma, sempre que você chamar curso.VagasDisponiveis, ele vai olhar quantas pessoas estão na lista naquele exato momento e fazer a conta.

2. Nome do curso dinâmico
No método ListarMatriculados, você escreveu o nome do curso diretamente na mensagem:

Console.WriteLine("Estudantes matriculados em Lógica de Programação:");

Se criarmos um curso de "C#", a mensagem continuará dizendo "Lógica de Programação". Para corrigir isso, use a propriedade Nome da própria classe:

Console.WriteLine($"Estudantes matriculados em {this.Nome}:");

Continue praticando, você está no caminho certo.

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