
- •С.В.Сизов объектно-ориентированное программирование
- •Содержание
- •Лабораторная работа 1.
- •На различных платформах.
- •Реализация простейшего класса
- •Лабораторная работа 3 Классы потоков ввода-вывода данных.
- •Контрольные вопросы.
- •Лабораторная работа 4-5 (4 часа) Статически и динамически подключаемые библиотеки.
- •Контрольные вопросы.
- •Комментарии
- •Контрольные вопросы.
- •Контрольные вопросы
- •Лабораторная работа 8 Классы библиотеки Qt: элементы отображения Qt Цель работы: отработка умений и навыков использования библиотеки Qt для формирования элементов отображения.
- •Контрольные вопросы.
- •Методы и средства проектирования интерфейса пользователя
- •Методы и средства проектирования интерфейса пользователя в ос Unix
- •Контрольные вопросы
- •Создание интерфейса простых приложений.
- •Классы библиотеки Qt: обработка событий
- •Контрольные вопросы.
- •Создание приложений баз данных
- •Контрольные вопросы.
Контрольные вопросы.
Чем определяется количество заголовочных файлов в проекте?
Когда используются модули? Что они представляют?
Каково назначение подключаемых библиотек? Перечислить их виды и охарактеризовать.
Преимущества и недостатки использования библиотек.
Какие особенности объектно-ориентированного программирования использованы в данной работе?
В чем заключается преимущество применения ООП в данной работе?
В командной строке была введена следующая команда:
%gcc –o app –L. ltest app.o
компоновщик выдал ошибку
app.o: In function 'main';
app.o(.text+0x4): undefined reference to 'f'
collect2: ld returned 1 exit status
Какую операцию пытались выполнить, в чем заключается ошибка?
Лабораторная работа 6
Наследование и полиморфизм
Цель работы: отработка умений и навыков работы с механизмом наследования классов.
Задания
В лабораторной работе 2 вы создали и отладили работу некоторого класса. Неотъемлемыми принципами объектно-ориентированного программирования являются наследование и полиморфизм. В данной работе вам предложено создать класс – наследник, и, где это необходимо, перегрузить методы класса – родителя, предав новому классу новую функциональность.
см. лекцию lek4-6.pdf
В случае если непонятна формулировка вопроса, выполняйте задание так, как вы его понимаете, но предварительно объясните, как вы поняли задание, то есть сформулируйте ваше понимание данного задания.
Разработать класс ChangeInteger – изменение массива, наследованный от класса IntegerSet. Напишите функцию-элемент insertElement, которая вставляет новое целое k в множество (устанавливает элемент а[k] равным 1). Напишите функцию-элемент deleteElement, которая удаляет из множества целое m (устанавливает элемент а[m] равным 0). Напишите функцию-элемент isEqualTo, которая определяет, равны ли друг другу два множества.
Разработать класс NormVector – вектор единичной длины, наследованный от класса Vector.
Замечание: нормирование необходимо производить после любого изменения составляющих вектора. Соответственно необходимо перегрузить метод доступа к компонентам вектора.
Разработать класс NormMatrix (матрица с единичным определителем), наследованный от класса Matrix.
Замечание: для упрощения пусть матрица будет размерностью до 3х3. Нормирование матрицы необходимо производить после любого изменения составляющих. Соответственно необходимо перегрузить метод доступа к ее компонентам.
Разработать класс SortedArrayOfInt – упорядоченный массив целых чисел, наследованный от класса ArrayOfInt. Организовать сортировку по возрастанию и убыванию.
Замечание: сортировку массива необходимо производить после любого изменения его составляющих. Соответственно необходимо перегрузить метод доступа к его компонентам.
Разработать класс EncryptedFile – шифрованный файл, наследованный от файла FileStream. В конструктор данного класса передавать ключ – последовательность из нескольких символов, все операции чтения и записи производить через виртуальную процедуру шифрования. Об алгоритме шифрования читайте в комментариях. Все остальные методы сохраняются аналогично классу FileStream.
Реализовать класс ValidDate (корректная дата), наследованный от класса Date. При каждом изменении даты необходимо производить контроль корректности даты. Реализовать метод вывода печати в различных форматах.
Реализовать класс ValidTime – корректное время, наследованный от класса Time. При каждом изменении времени необходимо производить контроль корректности времени. Реализовать методы форматного вывода этой информации.
Реализовать класс Parallelepiped – параллелепипед, наследованный от класса Rectangular. Класс должен принимать третью величину – высоту (height) и находить объемные характеристики фигуры: площадь поверхности и объем. Организовать вывод новых результатов.
Реализовать класс Sphere – сфера, наследованный от класса Circle. Класс должен находить и выводить объемные характеристики фигуры: площадь поверхности и объем.
Разработать класс PolarComplex (комплексные числа, представленные в полярных координатах), наследованный от класса Complex. Ввод и вывод этих чисел осуществляется в полярных координатах, хранение и все остальные методы оставить родительские.
Разработать класс AlternatingCurrent – переменный ток, наследованный от класса Current. Класс должен находить характеристики переменного электрического тока: активные, реактивные и полные сопротивление и мощность, а так же коэффициент мощности. Организовать вывод новых результатов.
Разработать класс SRational – сокращенная дробь, наследованный от класса Rational. Класс должен сокращать дроби, при вводе данных и дроби полученные в результате действий над ними. Организовать вывод новых результатов.