- •Часть 1. Варианты заданий.
- •Содержание
- •1Общие сведения
- •2Требования к выполнению лабораторных работ
- •2.1Методика подготовки и выполнения лабораторных работ
- •2.2Требования к содержанию лабораторных работ
- •3Требования к выполнению курсовой работы
- •3.1Методика подготовки и выполнения курсовой работы
- •3.2Требования к содержанию курсовой работы
- •Литература.
- •4Требования к оформлению программного кода
- •5Варианты заданий Вариант №1
- •5.1Автоматизация учета и анализа результатов испытаний артиллерийских установок
- •Вариант №2
- •5.2Автоматизация учета и анализа результатов собеседований соискателей на бирже труда
- •Вариант №3
- •5.3Автоматизация учета поставок товаров на оптовый склад
- •Вариант №4
- •5.4Автоматизация учета и анализа результатов проведения акций по продвижению товара на рынок
- •Вариант №5
- •5.5Автоматизация учета и контроля технического состояния парка самолетов
- •Вариант №6
- •5.6Автоматизация учета планового технического обслуживания парка автомобилей, сдаваемых в прокат
- •Вариант №7
- •5.7Автоматизация учета и анализа результатов тренировок спортсменов.
- •Вариант №8
- •5.8Автоматизация учета результатов продвижения рекламных интернет‑услуг
- •Вариант №9
- •5.9Автоматизация учета и контроля успеваемости студентов.
- •Вариант №10
- •5.10Автоматизация учета и контроля назначений в процедурном кабинете поликлиники
- •6Литература
2.2Требования к содержанию лабораторных работ
В рамках лабораторной работы №1 необходимо ознакомиться с текстом задания и на основе анализа предметной области выявить основную сущность, которая подлежит учету и анализу по смыслу задачи. Далее необходимо разработать ее объектно-информационную модель и реализовать класс, соответствующий данной модели.
В данном классе необходимо определить поле (или совокупность полей), значения которого, по смыслу задачи, будет уникально идентифицировать конкретный объект данного класса. Например, студент идентифицируется номером зачетной книжки, назначенная встреча – датой и временем проведения. Все поля класса должны быть объявлены как закрытые; обращение к полям, доступ к которым может быть открыт по смыслу задачи, должно осуществляться посредством запроса к соответствующим методам класса.
Помимо этого в классе необходимо реализовать конструкторы (по умолчанию, инициализирующий, копирования) и деструктор.
В рамках лабораторной работы №2 необходимо расширить объектно-информационную модель предметной области: выделить две взаимодействующие сущности, между которыми определено отношение «один ко многим».
На основе данной модели следует создать два класса, один из которых в качестве поля должен инкапсулировать список объектов второго класса, реализованный с использованием динамического массива.
Для каждого класса необходимо определить поле (или совокупность полей), значения которого, по смыслу задачи, будет уникально идентифицировать конкретный объект данного класса.
Все поля объявляются закрытыми; обращение к полям, доступ к которым может быть открыт по смыслу задачи, должно осуществляться посредством запроса к соответствующим методам класса. Необходимо также реализовать все виды конструкторов и деструктор.
В классе, инкапсулирующем список объектов, должны быть реализованы методы, обеспечивающие их добавление и удаление, а также методы их поиска по индексу и идентификационным полям.
В рамках лабораторной работы №3 необходимо реализовать шаблонный класс связного списка. Для обеспечения корректной работы с полями-указателями на динамические области памяти необходимо реализовать конструктор по умолчанию, конструктор копирования, деструктор, оператор присваивания (перегрузить стандартный метод).
Для предотвращения аварийных ситуаций (несоответствие индекса границам списка), необходимо использовать механизм обработки исключений C++.
В результате выполнения лабораторной работы №3 необходимо модифицировать код разработанного ранее проекта: вместо массивов для представления списков объектов необходимо использовать реализованный шаблонный класс связного списка.
В рамках лабораторной работы №4 необходимо расширить созданную ранее объектно-информационную модель: добавить класс, реализующий логику управления поведением объектов предметной области.
Управляющий класс должен содержать закрытое поле, хранящее список управляемых объектов предметной области, а также методы, которые реализуют проверку соответствия множества элементов данного списка условиям, изложенным в тексте задачи. Любые изменения состояний объектов предметной области, которые должны контролироваться согласно смыслу задачи, должны осуществляться через запрос к методам управляющего класса.
Чтобы управляющий класс корректно исполнял функции контроля, необходимо гарантировать, что в системе существует только один его экземпляр. С этой целью при реализации управляющего класса следует применить паттерн объектно-ориентированного проектирования «одиночка» (singleton).
Аварийные ситуации (например, попытка добавить в список объект с недопустимыми значениями полей), должны обрабатываться с использованием механизма исключений С++.
В рамках лабораторной работы №5 необходимо провести анализ предметной области и определить алгоритм формирования аналитической информации, на основе которой принимаются управленческие решения, представленные в тексте задания. Подразумевается, что к анализу представляется упорядоченный список объектов, отвечающих определенным критериям. Для формирования данного списка должны быть разработаны критерии поиска интересующих аналитика объектов, а также критерии сортировки полученного в результате поиска списка объектов.
Необходимо модифицировать созданный ранее управляющий класс: в него должны быть добавлены методы, реализующие алгоритмы поиска объектов предметной области, соответствующих разработанным критериям поиска, а также методы, реализующие алгоритмы сортировки списка объектов предметной области в соответствии с разработанными критериями сортировки.
При необходимости, в класс управляемого объекта предметной области должны быть внесены изменения: реализованы методы, вычисляющие значение сложных параметров сортировки и поиска. Сложным является параметр, который вычисляется на основе значений нескольких полей объекта, либо учитывает отношения объекта с другими объектами данного или другого класса.
В рамках лабораторной работы №6 необходимо модифицировать шаблонный класс связного списка: добавить метод, реализующий обобщенный алгоритм сортировки, независимый от типа элементов списка и критериев сортировки.
С этой целью необходимо применить паттерн «стратегия» (strategy): инкапсулировать алгоритм сравнения объектов по определенному критерию в специальный класс-компаратор и передавать объект данного класса в качестве параметра метода сортировки связного списка. Таким образом, обеспечивается взаимозаменяемость алгоритмов сравнения двух объектов по различным критериям при реализации обобщенного алгоритма сортировки.
Чтобы унифицировать прототипы методов сравнения в различных классах-компараторах и гарантировать единообразный механизм их применения, следует использовать такие принципы ООП, как наследование и полиморфизм (динамическое связывание). В классах-компараторах должен замещаться виртуальный метод сравнения, унаследованный от общего родительского класса. Чтобы обеспечить возможность применения компаратора к любым типам, в качестве параметров метод сравнения должен принимать указатели на пустой тип данных.
