1
resposta

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

Program.cs

using Escola.Modelos;

Console.Clear();
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"));

Console.WriteLine();
curso.ListarMatriculados();

Curso.cs

namespace Escola.Modelos;
class Curso {

    public string? Nome {get;set;}
    public int VagasTotais {get;}
    public int VagasDisponiveis => VagasTotais - matriculas.Count();

    private List<Estudante> matriculas = new();

    public Curso(string? nome, int vagasTotais) {
        Nome = nome;
        VagasTotais = vagasTotais;
    }

    public bool Matricular(Estudante estudante) {
        if (VagasDisponiveis > 0) {
            matriculas.Add(estudante);
            Console.WriteLine($"Aluno {estudante.Nome} adicionado com sucesso!");
            return true;
        } 
        else {
            Console.WriteLine("Não é possível adicionar mais alunos.");
            return false;
        }
    }

    public void ListarMatriculados() {
        Console.WriteLine("Lista de estudantes: ");
        matriculas.ForEach(estudante => Console.WriteLine($"- {estudante.Nome}"));
        Console.WriteLine($"Vagas Disponíveis: {VagasDisponiveis}");
    }

}

Estudante.cs

namespace Escola.Modelos;
class Estudante {

    public string? Nome {get; set;}

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

}
1 resposta

Olá, Diego! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso das propriedades automáticas para organizar atributos em C#, utilizou muito bem o List para armazenar objetos e ainda compreendeu a importância de um método com regras de negócio para controlar a matrícula e disponibilidade de vagas.

Uma dica interessante para o futuro é sobrescrever o método ToString() na classe Curso, dessa forma você pode exibir informações de forma mais clara sem precisar escrever múltiplos Console.WriteLine. Assim:

namespace Escola.Modelos;
class Curso {
    public string? Nome { get; set; }
    public int VagasTotais { get; }
    public int VagasDisponiveis => VagasTotais - matriculas.Count();

    private List<Estudante> matriculas = new();

    public Curso(string? nome, int vagasTotais) {
        Nome = nome;
        VagasTotais = vagasTotais;
    }

    public bool Matricular(Estudante estudante) {
        if (VagasDisponiveis > 0) {
            matriculas.Add(estudante);
            Console.WriteLine($"Aluno {estudante.Nome} adicionado com sucesso!");
            return true;
        } else {
            Console.WriteLine("Não é possível adicionar mais alunos.");
            return false;
        }
    }

    public override string ToString() {
        return $"Curso: {Nome}, Vagas Totais: {VagasTotais}, Vagas Disponíveis: {VagasDisponiveis}";
    }
}

Isso faz com que o curso seja exibido de forma mais descritiva e elegante sempre que for impresso.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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