Курсовая работа должна быть выполнена на языке программирования C# с использованием технологии объектно-ориентированного программирования (классы, наследование, виртуальные функции).
Для заданной коллекции коллекций объектов (таблица 1) разработать совокупность (иерархию) классов реализации объектов всех уровней:
– элемент коллекции,
– коллекция элементов
– коллекция коллекций.
Для выбранного вида коллекции должны быть реализованы классы (возможно – один класс), инкапсулирующие внутреннее устройство коллекции и предоставляющие методы:
– добавления элемента (Add или Put или Push или…);
– возврата элемента с удалением из коллекции (Remove или Pop или …);
– возврата элемента без удаления из коллекции (Get или Item или …);
– получения сведений о количестве элементов в коллекции (Size или Length или …);
– опционально для массива фиксированного размера в качестве способа реализации – установки / получения емкости коллекции (SetCapacity и GetCapacity или …);
– опционально для массивов изменяющегося размера в качестве способа реализации – установки / получения начального размера и способа/величины изменения размера (StartCapacity и SetDeltaCapacity или …);
– очистки коллекции, т.е. удаления всех элементов (Clear или…).
Для всех объектов – элементов коллекций – должен быть выбран, обоснован и реализован адекватный перечень полей (свойств) и методов (например, для любого объекта, отображающего человека, типичными полями являются: фамилия, имя, отчество, дата рождения (объект), адрес места рождения(объект), адрес проживания (объект), образование/воинское звание/специальность/квалификация, …).
Разработанные классы должны быть интегрированы в приложение, демонстрирующее (в текстовом или графическом виде):
– результаты выполнения типовых операций с объектами и коллекциями (создание объекта/коллекции, добавление / выборка / удаление объекта в/из коллекции, …) в соответствии с заданным вариантом вида коллекции и способа ее реализации;
– и, по отдельному запросу пользователя – текущее состояние указанной коллекции на уровне ее реализации (для массивов – состояние свободен/занят элементов массива и соответствие занятых элементов массива элементам коллекции; для линейных списков и деревьев – значения указателей на связанные элементы списка / узлы дерева и соответствие элементов списка / узлов дерева элементам коллекции).
Таблица 1
|
Коллекция коллекций |
Коллекция |
Элемент коллекции |
1 |
Факультет, курс |
Студенческая группа |
Студент |
2 |
Населенный пункт |
Вид транспорта |
Маршрут |
3 |
Компьютерный класс |
Компьютер |
Устройство |
4 |
Завод |
Цех |
Рабочий |
5 |
Дом |
Квартира |
Житель |
6 |
Рота |
Взвод |
Солдат |
7 |
Склад |
Стеллаж |
Единица товара |
8 |
Расписание занятий |
Аудитория |
Дисциплина |
9 |
… |
… |
… |
Таблица 1 может быть расширена по предложениям студентов при выборе ими варианта задания.
Вид реализуемой в приложении коллекции (строки таблицы 2):
1. Стек
2. Очередь
3. Двусторонняя очередь
4. Очередь по добавлению с произвольным доступом на чтение/выборку
5. Стек по чтению/выборке с произвольным доступом на добавление
6. Список с полностью произвольным доступом
7. Неупорядоченное множество (все элементы множества различны)
8. Упорядоченное множество (все элементы множества различны)
Способ реализации коллекции (столбцы таблицы 2):
1. Массив фиксированного размера
2. Массив динамически растущего (но не уменьшающегося) размера
3. Массив динамически изменяющегося размера
4. Линейный однонаправленный список
5. Линейный двунаправленный список
6. Несбалансированное двоичное дерево
7. Сбалансированное двоичное дерево
В таблице 2 приведены максимальные оценки, соответствующие каждому сочетанию вида коллекции (столбцы) и способа ее внутренней реализации (строки). Например, максимальная оценка для упорядоченного множества (строка 7), реализуемого в виде массива фиксированного размера (столбец 1) равна 3.5 балла.
Окончательная оценка за курсовую работу, округляемая до целого значения, формируется преподавателем с учетом проверки расчетно-пояснительной записки и защиты.
Таблица 2
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1 |
3 |
3.5 |
3.5 |
4 |
4.5 |
- |
- |
2 |
3 |
3.5 |
3.5 |
4 |
4.5 |
- |
- |
3 |
3 |
3.5 |
3.5 |
4 |
4.5 |
- |
- |
4 |
3.5 |
3.5 |
3.5 |
4 |
4.5 |
- |
- |
5 |
3.5 |
3.5 |
3.5 |
4 |
4.5 |
4.5 |
5 |
6 |
3.5 |
4 |
4 |
4.5 |
4.5 |
4.5 |
5 |
7 |
3.5 |
4 |
4 |
4.5 |
4.5 |
4.5 |
5 |
8 |
3.5 |
4 |
4 |
4.5 |
4.5 |
4.5 |
5 |
Вариант задания на курсовую работу выбирается студентом самостоятельно в виде совокупности трех чисел:
Первая – номер строки из таблицы 1.
Вторая – номер строки из таблицы 2.
Третья – номер столбца из таблицы 2.
Выбранный вариант должен быть уникальным в пределах группы, для обеспечения чего студент сообщает преподавателю желаемую им комбинацию чисел. Если она никем не занята, то этот вариант закрепляется за студентом, иначе им должен быть выбран другой вариант (например – предложена дополнительная строка таблицы 1; содержимое предлагаемого сочетания коллекций и объектов должно быть одобрено преподавателем). Согласованные таким образом варианты публикуются на сайте дисциплины.
Пояснительная записка должна иметь объем не менее 20 стр.
текста (без приложений, шрифт 12), выполнена в соответствии с ГОСТ
2.105-95 «Общие требования к текстовым документам» и СТП 1.701-98 «Текстовые
документы» и
содержать следующие разделы.
1. Развернутое описание задания.
2. Структурное описание
разработки.
-
Описание
используемых структур данных, форматов данных, сопровождаемое необходимыми
графическими иллюстрациями (рисунками).
-
Содержательное
описание основных алгоритмов и их особенностей.
-
Структурное
описание разработки должно давать представление о том, какие основные решения
приняты при разработке, как работает программа, какие данные являются
статическими, какие – динамическими, должны быть упомянуты особенности
алгоритмов. Структурное описание должно быть словесным с привлечением
графических иллюстраций (схем, рисунков) и фрагментов оригинальных алгоритмов и структур данных.
3. Функциональное описание
– перечень основных функций программы и алгоритмов их выполнения. Ограничения
(по памяти, по времени, …).
4. Описание пользовательского интерфейса.
5. Результаты исполнения
программы с тестовыми данными (скриншоты).
6. Выводы.
7. Список используемой литературы.
8. Приложение: текст программы с комментариями по существу алгоритма и
структур данных.
Приложение может быть как графическим, так и консольным и должно быть реализовано в виде иерархии/совокупности классов (рекомендуется использование абстрактных, параметризованных и вложенных классов) и интерфейсов. Приложение должно демонстрировать выполнение всех своих функций в произвольной последовательности по выбору пользователя через систему меню.
1.
Для
каждой группы заданий установлен начальный уровень оценки по пятибалльной шкале,
определяемый сложностью задания.
2.
При
“идеальном” выполнении задания оценка может быть повышена, но не более, чем на 0,5 балла.
3.
При
низком качестве выполнения работы (отсутствие иерархии наследования, вложенных,
абстрактных, параметризованных классов, отсутствие интерфейсов, необоснованное
использование вложенных, абстрактных, параметризованных классов или интерфейсов)
оценка может быть снижена на 0,5–2 балла.
4.
Пояснительная
записка и файл программы (проект) сдаются преподавателю за 3 дня до защиты.
Работоспособность программы должна быть продемонстрирована при защите. Защита
курсовой работы проходит в форме собеседования с вопросами
как по пояснительной записке, так и по тексту программы.
5.
Неполное
описание разработанного приложения, небрежное оформление пояснительной записки,
выявление не самостоятельного выполнения работы влечет снижение оценки на 0,5 –
2 балла.