Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Создать иерархию классов Person->Student->Teacher.
- Каждый класс – в своей сборке.
- В каждом классе должны быть:
- - свойства
- - виртуальная функция Print
- - переопределенная функция ToString()
- Основная программа создает массив объектов Person или их наследников, после чего выдает его на экран.
- У каждого Teacher должен быть список Students, которыми он руководит, у каждого Student - Teacher, который им руководит.
- Замечание. В процессе реализации возникнет такая ошибка как циклическая зависимость сборок:
- сборка Student зависит от сборки Teacher и наоборот. Для устранения этой ошибки рекомендуется создать класс Student
- без поля Teacher, после чего создать производный класс StudentWithAdvisor с полем Teacher в отдельной сборке.
- 2. Для классов Person->Student->Teacher реализовать и оттестировать (написать автотесты) ToString(), Equals(), GetHashCode().
- 3. Для классов Person->Student->Teacher реализовать статические методы RandomPerson, RandomStudent, RandomTeacher,
- которые возвращают случайного из некоторой коллекции.
- 4. С помощью is, as, GetType определить, сколько в массиве персон, студентов и преподавателей и перевести всех студентов на следующий курс.
- 5. Для классов Person->Student->Teacher реализовать глубокое клонирование,
- определив виртуальный метод Clone(). Клон должен возвращать точную копию по значению и типу.
- Проиллюстрировать Clone на примере контейнера персон - должны создаваться клоны объекты ровно тех типов,
- которые содержатся в исходном контейнере.
- 6. Для классов Person->Student->Teacher реализовать перегрузку операторов ==, !=
- 7. В классе Student реализовать интерфейс IComparable<Student>. Воспользовавшись Array.Sort, отсортировать массив студентов.
- 8. Реализовать в классах Person->Student->Teacher интерфейс ICloneable и проиллюстрировать его использование.
- 9. Реализовать в классе Person интерфейс IDisposable и убедиться в корректности его работы в операторе using
- В методе Dispose() класса Person достаточно выдавать диагностическое сообщение о том, что метод Dispose() вызван.
- 10. Создать контейнер Persons, который можно было бы использовать в foreach.
- Для этого поместить в него поле List<Person> list и метод Add(Person p), а также реализовать интерфейс IEnumerable<Person>,
- используя в методе GetEnumerator конструкцию yield return.
- Пример реализации:
- public class CustomContainer: IEnumerable<int>
- {
- public IEnumerator<int> GetEnumerator()
- {
- for (int i = 0; i < 10; i++)
- yield return i;
- }
- IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
- }
- Заполнить контейнер Persons персонами и студентами, используя его метод Add.
- После этого воспользоваться методом foreach по данному контейнеру, выдавая всех персон и студентов в контейнере.
- Перед каждой персоной или студентом должен выводиться порядковый номер во внутреннем списке.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement