Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resposta - Exercício 4

Exercício 4:

public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateBirth { get; set; }
    public int Age => (int)((DateTime.Today - DateBirth).TotalDays / 365);
    public List<double> Notes = new List<double>();
    public string DetailedDescription => $"Name: {FirstName} {LastName} - Age: {Age}";

    public Student(string firstName, string lastName, DateTime dateBirth, List<double> notes)
    {
        FirstName = firstName;
        LastName = lastName;
        DateBirth = dateBirth;
        Notes = notes;
    }
}
public class Teacher
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    private List<Discipline> _disciplines = new List<Discipline>();
    public string DetailedDescription => $"Teacher: {FirstName} {LastName}";

    public Teacher(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }

    public void AddDiscipline(Discipline discipline)
    {
        _disciplines.Add(discipline);
    }

    public void ShowDisciplines()
    {
        Console.WriteLine($"Subjects taught by Professor {FirstName}: ");
        foreach (Discipline discipline in _disciplines)
        {
            Console.WriteLine(discipline.Name);
        }
        Console.WriteLine("");
    }
}
public class Discipline
{
    public string Name { get; set; }
    private List<Student> _students = new List<Student>();

    public Discipline(string name)
    {
        Name = name;
    }

    public void AddStudent(Student student)
    {
        _students.Add(student);
    }

    public void ShowStudents()
    {
        Console.WriteLine($"Students enrolled in the {Name} course:");
        foreach (Student student in _students)
        {
            Console.WriteLine(student.DetailedDescription);
        }
    }
}
Student carlos = new Student("Carlos", "Eduardo", new DateTime(2003, 7, 15), new List<double> { 10, 9.8, 5.0, 7.0});
Student ana = new Student("Ana", "Clara", new DateTime(2004, 12, 1), new List<double> { 5, 4, 10, 10});
Student roberto = new Student("Roberto", "Silva", new DateTime(2002, 4, 4), new List<double> { 10, 10, 9.9, 2.0});
Teacher gustavo = new Teacher("Gustavo", "Fernando");

Discipline discipline = new Discipline("Mathematics");

gustavo.AddDiscipline(discipline);
gustavo.ShowDisciplines();

discipline.AddStudent(carlos);
discipline.AddStudent(ana);
discipline.AddStudent(roberto);
discipline.ShowStudents();
2 respostas
solução!

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu modelo ficou organizado e bem distribuído entre as classes, mostrando domínio em relacionar Professor, Disciplina e Aluno. Gostei do uso da propriedade Age com cálculo automático usando DateTime, foi uma escolha prática.

Uma dica interessante para o futuro é criar um método para calcular a média das notas dentro da classe Student, assim você pode reutilizar esse valor sempre que quiser. Veja este exemplo:


public double Media()
{
    return Notes.Average();
}

public double Media() cria um método que retorna a média dos valores em Notes.

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

Obrigado pelo suporte, Rafaela. Gostei da ideia de adicionar funcionalidades no mini sistema, mais especificadamente na classe Student.