Во всех вариантах работы 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; • по дате рождения студента с использованием интерфейс
Алина Эктова
Рэу
Мне в универе изменили сроки,попросила выполнить досрочно ,сразу скинули готовое решение,о...
Дарья
ДВИУ РАНХиГС
После выполнения задания оказалось, что нужно было решить через другую формулу. Попросила ...
Анна
Уральский государственный горный университет
Не написал условия задачи. Это заранее не обговаривалось, но стоило все таки это сделать
Евгений
Уральский Горный Университет
Все выполнено досрочно! Рекомендую данного исполнителя! Все сделано качественно! Спасибо ...