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