- •С.В.Сизов объектно-ориентированное программирование
- •Содержание
- •Лабораторная работа 1.
- •На различных платформах.
- •Реализация простейшего класса
- •Лабораторная работа 3 Классы потоков ввода-вывода данных.
- •Контрольные вопросы.
- •Лабораторная работа 4-5 (4 часа) Статически и динамически подключаемые библиотеки.
- •Контрольные вопросы.
- •Комментарии
- •Контрольные вопросы.
- •Контрольные вопросы
- •Лабораторная работа 8 Классы библиотеки Qt: элементы отображения Qt Цель работы: отработка умений и навыков использования библиотеки Qt для формирования элементов отображения.
- •Контрольные вопросы.
- •Методы и средства проектирования интерфейса пользователя
- •Методы и средства проектирования интерфейса пользователя в ос Unix
- •Контрольные вопросы
- •Создание интерфейса простых приложений.
- •Классы библиотеки Qt: обработка событий
- •Контрольные вопросы.
- •Создание приложений баз данных
- •Контрольные вопросы.
Лабораторная работа 4-5 (4 часа) Статически и динамически подключаемые библиотеки.
Цель работы: отработка умений и навыков создания и правильного подключения статических и динамических библиотек при проектировании программ на С/С++:
создание модулей библиотек с использованием классов (2 часа);
статическое и динамическое подключение библиотек (2 часа).
Теория:
Множественные заголовочные файлы. Файлы как модули.
Стиль разбиения программы с одним заголовочным файлом наиболее пригоден в тех случаях, когда программа невелика и ее части не предполагается использовать отдельно. В случае объемной программы имеет смысл для каждой ее логической части создать свой заголовочный файл, в котором определяются предоставляемые этой частью средства. Тогда каждый логически законченный файл .cрр будет имеет соответствующий ему заголовочный файл .h.
Необходимое количество заголовочных файлов зависит от многих факторов: как много классов и функций используется в вашей программе, одновременное ли их использование предполагается, например библиотечные файлы. Во многом на этот вопрос оказывает влияние комфорт в процессе программирования. Например, если в вашем редакторе нет средств, позволяющих одновременно открывать несколько файлов, использование большого их числа становится менее привлекательным. Аналогично, если открывание и чтение 10 файлов по 50 строк в каждом требует заметно больше времени, чем чтение одного файла в 500 строк, вы можете дважды подумать, прежде чем использовать в небольшом проекте стиль множественных заголовочных файлов. Однако, набор из десяти заголовочных файлов плюс стандартные заголовочные файлы обычно легче поддаются управлению. С другой стороны, если вы разбили описания в большой программе на логически минимальные по размеру заголовочные файлы (помещая каждое описание структуры в свой отдельный файл и т.д.), у вас легко может получиться неразбериха из сотен файлов. Скорее всего, необходима систематизация используемых классов и функций по решению ими поставленных задач. Логически обособленную задачу и выделяют в отдельный заголовочный файл.
В рассматриваемых программах файл .h обычно служит интерфейсом для других ее частей, а файл .cрр – задает его реализацию. Такой объект часто называют модулем. Доступными делаются только те имена, которые необходимо знать пользователю, остальные скрыты. Это качество часто называют скрытием данных, хотя данные - лишь часть того, что может быть скрыто. Модули такого вида обеспечивают большую гибкость. Например, реализация может состоять из одного или более .c файлов, а в виде .h файлов может быть предоставлено несколько интерфейсов. Информация, которую пользователю знать не обязательно, искусно скрыта в *.c файлах.
Области действия данных
Заголовочные файлы позволяют программисту определить явный интерфейс для обеспечения согласованного использования типов данных в программе. В отсутствие заголовочного файла идентификация переменных и функций определяется с помощью четырех спецификаций класса памяти: auto, register, extern и static (см. лекцию).
Как создать библиотеку
В качестве примера рассмотрим случай, когда необходимо задать (обычным способом) набор математических функций для некоторого неопределенного множества пользователей. Заголовочный файл мог бы выглядеть примерно так:
extern double sqr(double); // подмножество
extern double sin(double);
extern double cos(double);
extern double exp(double);
extern double log(double);
а определения этих функций хранились бы соответственно в файлах sqrt.c, sin.c, cos.c, exp.c и log.c.
Можно создать библиотеку с именем mat.h (см. лекцию biblio.pdf):
Задание.
В "Практическом руководстве по методам вычислений с приложением программ для ПК" Ракитин В.И., Первушин В.Е. –М.: Высш.шк., 1998. -383с.; даны примеры решений задач вычислительной математики численными методами. Приложение с программами на разных языках программирования находятся в папке с лабораторной работой (Rakitin_Pervushin.pdf);
Необходимо переписать программы (2-3 шт. см. вариант) с применением объектно-ориентированного программирования, создав один или несколько классов, отделяя интерфейс от реализации (лаб.4);
Объединить созданные программы в библиотеку (статическую и динамическую);
Написать программу, реализующую использование одной программы из созданной библиотеки. Библиотеку подключить статически и динамически. Определить размер запускаемого файла.
Варианты заданий.
Решение систем линейных алгебраических уравнений
методом Гаусса
методом итераций
Решение уравнения f(x) = 0
методом половинного деления
методом итераций
Вычисление производной
по ее определению
с одинаковым порядком аппроксимации по шагу h
Решение задачи Коши для дифференциального уравнения
первого порядка методами Эйлера, Эйлера-Коши и Рунге-Кутта
системы дифференциальных уравнений методом Рунге-Кутта
Вычисление определенного интеграла
по квадратурным формулам прямоугольников, трапеций и Симпсона
методом двойного пересчета по формуле Симпсона
Поиск минимума функции одной переменной
методом половинного деления
методом золотого сечения
методом сканирования
Поиск минимума функции двух переменных
методом покоординатного спуска
методом скорейшего спуска
