Во всех вариантах работы 7-9 требуется определить класс TestCollections, который содержит поля следующих типов
• System.Collections.Generic.List<TKey> ;
• System.Collections.Generic.List<string> ;
• System.Collections.Generic.Dictionary<TKey, TValue> ;
• System.Collections.Generic.Dictionary<string, TValue> .
Конкретные значения типовых параметров TKey и TValue зависят от варианта. Во всех вариантах тип ключа TKey и тип значения TValue связаны отношением базовый-производный. Во всех вариантах в классе TValue определено свойство, которое возвращает ссылку на объект типа TKey с данными, совпадающими с данными подобъекта базового класса (это свойство должно возвращать ссылку на объект типа TKey, а не ссылку на вызывающий объект TValue).
В конструкторе класса TestCollections создаются коллекции с заданным числом элементов. Надо сравнить время поиска элемента в коллекциях-списках List<TKey> и время поиска элемента по ключу и элемента по значению в коллекциях-словарях Dictionary<TKey,TValue>.
Для автоматической генерации элементов коллекций в классе TestCollections надо определить статический метод, который принимает один целочисленный параметр типа int и возвращает ссылку на объект типа TValue.
Каждый объект TValue содержит подобъект базового класса TKey. Соответствие между значениями целочисленного параметра метода и подобъектами TKey класса TValue должно быть взаимно-однозначным – равным значениям параметра должны отвечать равные объекты TKey и наоборот. Равенство объектов типа TKey трактуется так же, как это было сделано в лабораторной работе 2 при определении операций равенства объектов.
Все четыре коллекции содержат одинаковое число элементов. Каждому элементу из коллекции List<TKey> должен отвечать элемент в коллекции Dictionary<TKey, TValue> с равным значением ключа. Список List<string> состоит из строк, которые получены в результате вызова метода ToString() для объектов TKey из списка List<TKey>. Каждому элементу списка List<string> отвечает элемент в коллекции-словаре Dictionary<string, TValue> с равным значением ключа типа string.
Число элементов в коллекциях вводится пользователем в процессе работы приложения. Если при вводе была допущена ошибка, приложение должно обработать исключение, сообщить об ошибке ввода и повторить прием ввода до тех пор, пока не будет правильно введено целочисленное значение.
Для четырех разных элементов – первого, центрального, последнего и элемента, не входящего в коллекцию – надо измерить время поиска
• элемента в коллекциях List<TKey> и List<string> с помощью метода Contains;
• элемента по ключу в коллекциях Dictionary< TKey, TValue> и Dictionary <string, TValue > с помощью метода ContainsKey;
• значения элемента в коллекции Dictionary< TKey, TValue > с помощью метода ContainsValue.
Так как статический метод для автоматической генерации элементов должен обеспечивать взаимно-однозначное соответствие между значением целочисленного параметра метода и объектами TKey, этот метод можно использовать как при создании коллекций с большим числом элементов, так и для генерации элемента для поиска.
Вариант 7. Требования к программе
Определить новые версии классов Person и Student из заданий 4-6.
В класс Person добавить реализацию интерфейсов • System.IComparable для сравнения объектов типа Person по полю с фамилией; • System.Collections.Generic.IComparer<Person> для сравнения объектов типа Person по дате рождения.
В новой версии класса Student для списков зачетов и экзаменов использовать типы • System.Collections.Generic.List<Test> для списка зачетов; • System.Collections.Generic.List<Exam> для списка экзаменов.
В новой версии класса Student сохранить все остальные поля, свойства и методы из предыдущей версии класса, внести необходимые исправления в код свойств и методов из-за изменения типов полей для списков зачетов и экзаменов.
Определить вспомогательный класс, реализующий интерфейс System.Collections.Generic.IComparer<Student>, который можно использовать для сравнения объектов типа Student по среднему баллу.
Определить класс StudentCollection, который содержит • закрытое поле типа System.Collections.Generic.List<Student>; • метод void AddDefaults(), c помощью которого можно добавить некоторое число элементов типа Student для инициализации коллекции по умолчанию; • метод void AddStudents (params Student[] ) для добавления элементов в список List<Student>; • перегруженную версию виртуального метода string ToString() для формирования строки c информацией обо всех элементах списка List<Student>, включающую значения всех полей, список зачетов и экзаменов для каждого элемента Student; • метод string ToShortString(), который формирует строку c информацией обо всех элементах списка List<Student>, содержащую значения всех полей, средний балл, число зачетов и число экзаменов для каждого элемента Student, но без списков зачетов и экзаменов.
В классе StudentCollection определить методы, выполняющие сортировку списка List<Student>
• по фамилии студента с использованием интерфейса IComparable, реализованного в классе Person; • по дате рождения студента с использованием интерфейс
Алина
НГАТУ
Работа выполнена отлично, подробные и понятные объяснения. Большое спасибо
Лариса
ТУСУР
Все супер, задания выполнены в срок, оценены преподавателем на максимальный балл, всем рек...
Алина Эктова
Рэу
Мне в универе изменили сроки,попросила выполнить досрочно ,сразу скинули готовое решение,о...
Андрей
ЮУрГУ
Очень оперативно выполнено! В дальнейшем буду рад обратиться за помощью снова :)