2
respostas

Desafio 4 - solução

se entendi direito é somente a instanciação de atributos das classes:

class Alunos
{ 
    public string Nome { get; set; }
    public int Idade { get; set; }
    public float Nota { get; set; }

}
class Professor
{
    public string Nome;
    public string DisciplicaLecionada;
}
class Disciplina 
{
    public string NomeDaDisciplina { get; set; }

    private List<Alunos> alunos { get; set; } = new List<Alunos>();
    private List<Professor> professores { get; set; } = new List<Professor>();
}
2 respostas

estou tentando fazer da seguinte forma:

Alunos aluno1 = new Alunos();
aluno1.Nome = "João";
aluno1.Idade = 15;
aluno1.Nota = 8.5f;

Alunos aluno2 = new Alunos();
aluno2.Nome = "Maria";
aluno2.Idade = 16;
aluno2.Nota = 9.0f;

Professor professor1 = new Professor();
professor1.Nome = "Carlos";
professor1.DisciplicaLecionada = "Matemática";

Professor professor2 = new Professor();
professor2.Nome = "Ana";
professor2.DisciplicaLecionada = "Português";

Disciplina disciplina = new Disciplina();
disciplina.NomeDaDisciplina = "Matemática";

disciplina.alunos.Add(aluno1);
disciplina.alunos.Add(aluno2);
disciplina.professores.Add(professor1);
disciplina.professores.Add(professor2);

foreach (var aluno in disciplina.alunos)
{
    Console.WriteLine($"Nome: {aluno.Nome}");
    Console.WriteLine($"Idade: {aluno.Idade}");
    Console.WriteLine($"Nota: {aluno.Nota}");
    Console.WriteLine();
}

mas por algum motivo encontro erro de acesso nesta parte:

disciplina.alunos.Add(aluno1); disciplina.alunos.Add(aluno2); disciplina.professores.Add(professor1); disciplina.professores.Add(professor2);

foreach (var aluno in disciplina.alunos)

Olá, Paulo. Tudo bem?

O erro acontece porque as listas alunos e professores na classe Disciplina são privadas (private), então não podem ser acessadas diretamente de fora da classe.

Para resolver isso, torne essas listas públicas ou forneça métodos para adicionar alunos e professores. Veja como ajustar:


class Disciplina 
{
    public string NomeDaDisciplina { get; set; }

    public List Alunos { get; } = new List();
    public List Professores { get; } = new List();

    public void AdicionarAluno(Alunos aluno)
    {
        Alunos.Add(aluno);
    }

    public void AdicionarProfessor(Professor professor)
    {
        Professores.Add(professor);
    }
}

Agora, no seu código principal, utilize os métodos para adicionar os objetos:


Disciplina disciplina = new Disciplina();
disciplina.NomeDaDisciplina = "Matemática";

disciplina.AdicionarAluno(aluno1);
disciplina.AdicionarAluno(aluno2);
disciplina.AdicionarProfessor(professor1);
disciplina.AdicionarProfessor(professor2);

foreach (var aluno in disciplina.Alunos)
{
    Console.WriteLine($"Nome: {aluno.Nome}");
    Console.WriteLine($"Idade: {aluno.Idade}");
    Console.WriteLine($"Nota: {aluno.Nota}");
    Console.WriteLine();
}

Dessa forma, o código funcionará corretamente sem erros de acesso.

Fico à disposição. Abraços e bons estudos!