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