
Усложненные задания ООП / ДЗ / ООП_DZ4E
.DOC
Домашнее задание. Вариант 4
Задание 1. Turbo Delphi
Часть 1.1. Delphi. Программирование с использованием классов. Графика. Обработка события нажатия клавиши мыши. Наследование. Полиморфизм.
Разработать иерархию классов Delphi. Разместить определение классов в отдельном модуле. Разработать программу, содержащую описание трех графических объектов: окружность с вырезанной четвертью, спираль Архимеда, квадрат.
Реализуя механизм полиморфизма, привести объекты в одновременное вращение вокруг их геометрических центров с различными угловыми скоростями.
Параметры задаются с использованием интерфейсных элементов.
В отчете показать иерархии используемых классов Delphi и разработанных классов, граф состояния пользовательского интерфейса и объектную декомпозицию.
Часть 1.2. Программирование с использованием метаклассов. Создание контейнеров. Использование исключений при программировании в среде Delphi.
Моделировать очередь, в качестве элементов которой могут использоваться числа и слова. Операции: добавление элемента, удаление элемента, печать элементов. Создать класс - потомок, который содержит процедуру сортировки элементов (сначала - числа сортировать по возрастанию, а затем - слова по алфавиту). Тестировать полученную модель.
В отчете представить структуру использованных классов и обосновать выбранную структуру представления данных.
Задание 2. С++.
Часть 2.1. Текстовая обработка.
Дана последовательность строк, содержащая данные о сотрудниках некоторого учреждения, записанные по образцу: Фамилия Имя Отчество. Написать программу, обеспечивающую ввод строк и их корректировку. Корректировка заключается в записи данных по образцу
А) Имя Отчество Фамилия; Б) Фамилия И.О.
Вывести на печать исходную и скорректированную последовательности строк. Реализовать как с использованием библиотечных функций работы со строками, так и с помощью собственной их реализации. Оценить время выполнения программы разными реализациями.
Часть 2.2. Файлы.
Проверить, позволяет ли триграммная модель представления текстов определить автора художественного произведения. Для использования этой модели необходимо преобразовать текст к одному регистру, удалить все пробелы, переводы строк, цифры и знаки препинания. Для триграммной модели используется скользящее окно размером 3 символа, которое по-символьно перемещаяется начиная с первого символа преобразованного текста. Комбинация из трёх символов представляет собой координату вектора количества совпадений трёхсимвольных комбинаций. Разработать программу, которая строит нормализованные векторы триграммной модели по поданным на вход текстовым файлам и формирует для каждого из них отдельный файл для хранения вектора. Построить матрицу расстояний по Евклиду между всеми полученными векторами, прочитанными из файлов. Для отладки использовать художественную литературу с сайта http://www.lib.ru, причём выбирать следует произведения соизмеримого размера. Использовать в комбинации не менее 3-х каждого автора (например Чехова и Толстого).
Часть 2.3. Программирование с использованием классов. Простые объекты.
Описать объект, включающий заданные поля и методы. Написать программу, которая создает динамический массив объектов, содержит процедуры, работающие с указанными структурами, а также создает двоичное дерево, ключом в котором является целая часть числа, а индексом – позиция объекта в массиве.
Объект - вещественное число, записанное с точкой. Параметры - его значение и запись. Методы: конструктор и процедура, определяющая количество цифр в дробной и целой части числа. Определить сумму введенных чисел и отношение количества цифр в целой и дробной частях. Реализовать поиск объектов по числу до запятой с использованием дерева. Программа не должна содержать ограничение длины массива. Проверить, что все созданные объекты удаляются.
Задание 3. Программирование с использованием классов в С++.
Часть 3.1. Программирование с использованием классов в С++. Наследование и композиция. Оформление программной документации средствами doxygen.
Разработать и реализовать диаграмму классов для описанных объектов предметной о механизмы наследования и композиции. Проверить ее на тестовом примере, с демонстрацией всех возможностей разработанных классов на конкретных данных. Подготовить документацию.
Даны: объект символ, умеющий печатать свое значение и отвечать на запрос о значении своего символьного поля; объект целое число, умеющий печатать свое значение и отвечать на запрос о значении своего числового поля; Объект «запись», состоящий из двух полей – символа и двух целых чисел. Объект умеет выводить на печать значение своих элементов, возвращать значение своих полей по запросу.
Часть 3.2. Меню. Стандартные диалоги Qt.
Разработать программу, обеспечивающую запрос имени бинарного файла, содержащего целые числа, открытие его в режиме десятичного представления в текстовом поле и редактирования. Предусмотреть возможность выбора шрифта отображения.
Часть 3.3. Классы Model/View.
Разработать приложение, предназначенное для создания, редактирования и сохранения таблицы товаров с тремя колонками (название, цена, количество). Название товара считать заданным изначально и не подлежащим редактированию. Реализовать дополнительную итоговую строку таблицы для подсчёта суммарного количества.