Oii, Rafael! Tudo bem?
Uau, parabéns pela dedicação! Achei sensacional que você não se limitou a criar apenas as classes e já partiu para desenvolver um Menu interativo no console. Isso é excelente pra treinar a lógica de programação e o uso do C# na prática.
Analisando o seu código e o objetivo do desafio (que é focado em relacionamentos entre classes), tenho algumas dicas para te ajudar a estruturar ainda melhor o seu sistema escolar.
O ponto principal da atividade é modelar como um objeto se conecta ao outro. Vamos ver dois pontos importantes:
1. Listas vs. Variáveis únicas
Na sua classe Aluno, você colocou public float Nota { get; set; }. Num cenário real, um aluno costuma ter várias notas, certo? Por isso, o ideal é usar uma lista (List<double> ou List<float>) pra armazenar todas elas. O mesmo vale para o relacionamento com as disciplinas.
2. O papel da classe disciplina
Você criou uma lista de strings dentro da classe Disciplina. Na Orientação a Objetos, a ideia é que a Classe Disciplina seja o molde, e cada matéria (Matemática, Português) seja um Objeto instanciado a partir desse molde. E, a disciplina precisa saber quem são os alunos matriculados nela.
Uma dica de como ficaria:
class Aluno
{
public string Nome { get; set; }
public int Idade { get; set; }
// uma lista para guardar várias notas
public List<double> Notas { get; set; } = new List<double>();
}
class Disciplina
{
public string NomeDisciplina { get; set; }
// o relacionamento: a disciplina tem uma lista de objetos do tipo Aluno
public List<Aluno> AlunosMatriculados { get; set; } = new List<Aluno>();
}
class Professor
{
public string Nome { get; set; }
// um professor pode dar várias aulas, então usamos uma lista de strings ou de objetos Disciplina
public List<string> DisciplinasLecionadas { get; set; } = new List<string>();
}
Continue praticando assim, você está no caminho certo! Bons estudos!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!