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

Como criar um contador de alunos, após ter vinculado eles na turma? C#

Preados, bom dia.

Venho exercendo o conteúdo aprendido neste curso, por conta disso montei um cenário em que eu criei uma classe aluno e uma outra turma. Vinculei a turma na classe aluno, por conta do relacionamento 1 para N.

Criei uma propriedade chamada QntAlunos e implementei o incremento no construtor da classe da Turma. Porém mesmo assim quando adiciono na turma mais de um aluno o contador não sai do 1. Acredito que isto seja porque a classe turma não está enxergando os alunos, mas sim vice e versa.

Poderiam me ajudar a criar este contador?

Segue abaixo o meu código.

namespace _01_Impacta
{
    class Turma
    {
        public string nomeTurma { get; private set; }

        public static int QntAlunos { get; private set; }
        public static int GeradorCodigo{ get; private set;}

        public Turma(string nomeTurma)
        {
            this.nomeTurma = nomeTurma;
            GeradorCodigo++;
            QntAlunos++;
        }


    }
}

namespace _01_Impacta
{
    class Aluno
    {
        public string nomeALuno { get; set; }
        public string _rg { get; set; }
        private int _idade;
        public Turma turma { get; set; }

        public int Idade{
            get
            {
                return _idade;
            }
            set
            {
                if (value < 18)
                {
                    return;
                }
                this._idade = value;
            }
        }

        public Aluno(string nome, string rg, int idade)
        {
            nomeALuno = nome;
            _rg = rg;
            Idade = idade;


        }
    }
}

namespace _01_Impacta
{
    class Program
    {
        static void Main(string[] args)
        {
            Aluno gui = new Aluno("Guilherme", "391-7", 25);

            Turma turma01 = new Turma("Turma SI");

            gui.turma = turma01;

            Console.WriteLine("Turma do Guilherme " + turma01.nomeTurma);
            Console.WriteLine("Quantidade de alunos na turma " + Turma.QntAlunos);

            Aluno gabriel = new Aluno("Gabriel", "101", 19);

            gabriel.turma = turma01;

            Console.WriteLine("Quantidade de alunos na turma " + Turma.QntAlunos);
            Console.WriteLine("Numero da turma " + Turma.GeradorCodigo);


            Turma turma02 = new Turma("Turma ADS");


            Console.WriteLine("Numero da turma " + Turma.GeradorCodigo);

            Console.WriteLine(gui.nomeALuno + gui.Idade);
            Console.ReadLine();

        }
    }
}

Obrigado pela vossa atenção.

1 resposta
solução!

Seu contador está sendo incrementado no construtor da turma. Ou seja, QntAlunos só aumenta quando você cria uma nova turma, e não um novo aluno. Além disso, sendo um atributo static significa que é o mesmo valor para todas as turmas, e não de uma turma especifica. o que você pode fazer é um setter para turma no aluno que incrementa a QntAlunos da turma.