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

[Projeto] Faça como eu fiz: controle de matrícula

Classe Program:

Curso curso = new("Lógica de Programação", 2);
curso.Matricular(new Estudante("Rafaela"));
curso.Matricular(new Estudante("João"));
curso.Matricular(new Estudante("Mirela")); // excede o limite
curso.ListarMatriculados();

Classe Estudante:

namespace Encapsulamento;

internal class Estudante(string nome)
{
    public string Nome { get; private set; } = nome;
}

Classe Curso:

namespace Encapsulamento;

internal class Curso(string nome, int vagasTotais)
{
    private List<Estudante> matriculas = [];

    public string Nome { get; set; } = nome;
    public int VagasTotais { get; private set; } = vagasTotais;
    public int VagasDisponiveis => VagasTotais - matriculas.Count;

    public bool Matricular(Estudante estudante)
    {
        if (VagasDisponiveis > 0)
        {
            matriculas.Add(estudante);
            Console.WriteLine("Estudante matriculado com sucesso.");
            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 {Nome}:");
        foreach (Estudante estudante in matriculas)
        {
            Console.WriteLine($"- {estudante.Nome}");
        }
        Console.WriteLine($"Vagas disponíveis: {VagasDisponiveis}");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Gostei da forma como você aplicou o conceito de encapsulamento, utilizando private set nas propriedades e criando a propriedade calculada VagasDisponiveis. Além disso, a validação dentro do método Matricular() ficou bem organizada, impedindo que o número de alunos ultrapasse o limite definido para o curso.

Uma dica interessante para o futuro é utilizar o método Any() para verificar se um estudante já está matriculado antes de adicionar uma nova matrícula. Veja este exemplo:


if (matriculas.Any(e => e.Nome == estudante.Nome))
{
    Console.WriteLine("Aluno ja matriculado.");
    return false;
}

Esse código verifica se já existe um aluno com o mesmo nome na lista antes de realizar a matrícula.

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