using System.Collections.Generic;
private string firstName;
public Student(string firstName, string lastName)
this.firstName = firstName;
this.lastName = lastName;
return this.firstName + " " + this.lastName;
private List<Student> students;
public Group(string name)
this.students = new List<Student>();
public IEnumerable<Student> Students
public void AddStudent(Student student)
public void PrintStudents(TextWriter output)
output.WriteLine("Group name: {0}", this.Name);
output.WriteLine("Students in group:");
foreach (Student student in this.Students)
output.WriteLine("Name: {0}", student.Name);
private string firstName;
private List<Group> groups;
public Teacher(string firstName, string lastName)
this.firstName = firstName;
this.lastName = lastName;
this.groups = new List<Group>();
public void AddGroup(Group group)
public void PrintGroups(TextWriter output)
output.WriteLine("Teacher name: {0} {1}", this.firstName,
output.WriteLine("Groups of teacher:");
foreach (Group group in this.groups)
group.PrintStudents(output);
private List<Teacher> teachers;
private List<Group> groups;
private List<Student> students;
public School(string name) {
this.teachers = new List<Teacher>();
this.groups = new List<Group>();
this.students = new List<Student>();
public IEnumerable<Teacher> Teachers
public void AddTeacher(Teacher teacher)
public void AddGroup(Group group)
foreach (Student student in group.Students)
if(!this.students.Contains(student))
this.students.Add(student);
public static void AddObjectsToSchool(School school)
Teacher teacherTomcheva = new Teacher("Елисавета",
school.AddTeacher(teacherTomcheva);
Teacher teacherLazarova = new Teacher("Ива" , "Лазарова");
school.AddTeacher(teacherLazarova);
Teacher teacherGeleva = new Teacher("Ирена", "Гелева");
school.AddTeacher(teacherGeleva);
Group groupEnglish = new Group("английски език");
groupEnglish.AddStudent(new Student("Надежда", "Иванова"));
groupEnglish.AddStudent(new Student("Васил", "Тодоров"));
groupEnglish.AddStudent(new Student("Елена", "Георгиева"));
groupEnglish.AddStudent(new Student("Георги", "Георгиев"));
school.AddGroup(groupEnglish);
teacherLazarova.AddGroup(groupEnglish);
Group groupRussian = new Group("руски език");
groupRussian.AddStudent(new Student("Петър", "Петров"));
groupRussian.AddStudent(new Student("Живко", "Василев"));
groupRussian.AddStudent(new Student("Петко", "Христов"));
groupRussian.AddStudent(new Student("Габи", "Иванова"));
school.AddGroup(groupRussian);
teacherTomcheva.AddGroup(groupRussian);
Group groupBulgarian = new Group("български език");
groupBulgarian.AddStudent(new Student("Анелия", "Илиева"));
groupBulgarian.AddStudent(new Student("Марио", "Златев"));
groupBulgarian.AddStudent(new Student("Ивелина", "Горанова"));
groupBulgarian.AddStudent(new Student("Христо", "Панайотов"));
school.AddGroup(groupBulgarian);
teacherGeleva.AddGroup(groupBulgarian);
public static void Main() {
School school = new School("Васил Левски");
AddObjectsToSchool(school);
foreach(Teacher teacher in school.Teachers)
teacher.PrintGroups(Console.Out);