Слайд 1Информатика. Спецглавы
Направление: Инфокоммуникационные технологии и системы связи
2012 год
Лекция 4
Слайд 2Библиотеки языка C++
Стандартная библиотека С++
Библиотека шаблонов STL
Библиотеки для создания
приложений с графическим интерфейсом пользователя (GUI): Win API,
MFC, OWL, gtk+, Qt
Библиотеки компонентов для быстрой разработки (RAD) VCL, CLX, ActiveX
Библиотеки для создания мультимедийных приложений OpenGL, SDL, DirectX
Слайд 3Стандартная библиотека языка C++
Первый стандарт языка C++ принят в 1998
году, новый стандарт – C++11 (11.09.2011)
Состав библиотеки:
Средства языка C в
соответствии со стандартом C89 (ныне действующий стандарт – C11, декабрь 2011)
Классы языка C++
Средства языка, унаследованные от библиотеки STL
Входит в состав инструментального средства (компилятора, IDE)
Доступна всегда после подключения соответствующих заголовочных файлов
Слайд 4Библиотека STL
STL (Standard Template Library) – Стандартная библиотека шаблонов
Разработчики: Александр
Степанов, Дэвид Муссер, Менг Ли (Hewlett-Packard, начало 1990-х годов)
В состав
библиотеки входят:
алгоритмы: поиск, сортировка, слияние последовательностей и перестановка элементов
итераторы: ввода, вывода, произвольного доступа
контейнеры: строки, вектора, множества, списки, очереди
Слайд 5Заголовочные файлы STL
– одномерный массив элементов;
– дата и
время;
– основные алгоритмы;
– функции обработки данных (поиск, сортировка,
обработка строк в стиле C, генератор случайных чисел);
– строка;
– стандартные потоки ввода/вывода;
– комплексные числа;
– общие математические функции;
– работа с динамической памятью.
Слайд 6Библиотека Win32 API
Стандарт отсутствует
Состав библиотеки:
Типы данных
Константы
Функции
Разработчик: Microsoft
Область использования: приложения
для ОС Windows на языках C или C++ (консольные, оконные)
Лицензия:
коммерческий продукт
Подключение через заголовочные файлы (windows.h)
Слайд 7Библиотека OWL
Стандарт отсутствует
Состав библиотеки:
Классы, представляющие собой надстройку над объектами Win16
и Win32 API, - TApplication, TDialog, TButton, TBrush
Классы общего назначения
TRect
Структуры
Макросы
Разработчик: Borland
Область использования: оконные приложения для ОС Windows на языках C++, Pascal (Object Pascal)
Лицензия: коммерческий продукт
Подключение через заголовочные файлы
Слайд 8Библиотека OWL (продолжение)
Библиотека предоставляет каркас прикладной программы
Главная функция:
#include
int OwlMain
(int argc, char** argv)
{
TApplication app (“Application name”);
app.Run ();
return 0;
}
Слайд 9Библиотека MFC
Стандарт отсутствует
Состав библиотеки:
Классы, представляющие собой надстройку над объектами Win32
API, - CApplication, CWnd, CDialog, CButton, CBrush
Классы общего назначения –
СRect
Шаблоны
Разработчик: Microsoft
Область использования: оконные приложения для ОС Windows на языке C++
Лицензия: коммерческий продукт
Подключение через заголовочные файлы
Слайд 10Библиотека gtk+
Стандарт отсутствует
Состав библиотеки:
Функции, написанные на языке C
Макросы
Структуры и др.
типы данных
Разработчик: Open Source
Последняя версия – gtk+ 3.0.6 (на 26.03.2011)
Область
использования: оконные приложения для ОС Linux, Windows на языках C или C++
Подключение через заголовочные файлы
Требуется установка дистрибутива
Основа для рабочего окружения Linux (оболочек) GNOME, Xfce ()
Лицензия: свободная
Информация и дистрибутивы: www.gtk.org
Слайд 11Библиотека wxWidgets
Стандарт отсутствует.
Состав библиотеки: классы (wxApp, wxFrame), функции (connect)
Разработчик:Юлиан Смарт,
Эдинбургский университет, 1992 год.
Написана на С++.
ОС: Linux, Windows, Mac OS
X.
Лицензия — бесплатная.
Программы, созданные на основе: Code::Blocks, wxMaxima.
Слайд 12Библиотека Qt
Стандарт отсутствует
Состав библиотеки: классы, макросы (сигналы и слоты)
Разработчик: Trolltech
(Хаавард Норд, Эрик Чамбенг, 1995 год), Nokia, Digia
Лицензия: коммерческая
(?)
Версия: 4.8.1 (на 28.03.2012)
Область использования: оконные приложения для ОС Linux, Mac OS, Windows на языке C++
Основа для оболочки KDE (Linux)
Подключение через заголовочные файлы
Требуется установка дистрибутива (Qt 4.x)
Используется метаобъектный компилятор (MOC)
Qt Creator – инструментальная среда разработки
Слайд 13Классы библиотеки Qt
QApplication — класс приложения
QWidget – базовый класс элементов
управления
QMainWindow – класс главного окна
QDialog – класс диалоговой панели
QLabel
– надпись (статический текст)
QPushButton - кнопка
QLineEdit – однострочный текстовый редактор
QString – класс строки
Слайд 14Простейшее приложение на Qt
#include
#include
int main(int argc, char** argv)
{
QApplication
app(argc, argv);
QLabel lb1("Hello, World!");
lb1.show();
return app.exec();
}
Слайд 15Компиляция проекта в MacOS X
Перейти в папку, где находятся файлы
проекта
Выполнить последовательно команды:
qmake –project
qmake
make
Слайд 16Сигналы и слоты
int main(int argc, char* argv[])
{
QApplication app(argc,
argv);
QPushButton quit("Quit");
quit.resize(75, 30);
quit.setFont(QFont("Times", 18,
QFont::Bold));
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
quit.show();
return app.exec();
}
Слайд 17Проект на основе Qt
// MyWidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include
#include
#include
#include
#include
class MyWidget : public QMainWindow
{ Q_OBJECT
public:
MyWidget();
private:
QLineEdit* line1;
QPushButton* bcount;
QLabel* lcount;
public slots:
void slotCount();
};
#endif // MYWIDGET_H
Разработка в IDE Code::Blocks
Слайд 18MyWidget.cpp
#include "..\include\MyWidget.h"
MyWidget::MyWidget()
{
this -> resize(300,150);
line1 = new
QLineEdit(this);
bcount = new QPushButton("Count",this);
lcount = new
QLabel("плюс 1",this);
line1 -> move(60,30); line1 -> resize(70,20);
lcount -> move(140,30); lcount -> resize(30,20);
bcount -> move(190,80); bcount -> resize(50,50);
connect (bcount, SIGNAL (clicked()), this, SLOT (slotCount()));
}
void MyWidget::slotCount()
{
double d;
QString tmp;
d=line1->text().toDouble();
d=d+1;
line1->setText(tmp.setNum(d));
}
resize(300,150); line1 = new QLineEdit(this); bcount = new QPushButton("Count",this); lcount = new QLabel("плюс 1",this); line1 -> move(60,30); line1 -> resize(70,20); lcount -> move(140,30); lcount -> resize(30,20); bcount -> move(190,80); bcount -> resize(50,50); connect (bcount, SIGNAL (clicked()), this, SLOT (slotCount()));} void MyWidget::slotCount(){ double d; QString tmp; d=line1->text().toDouble(); d=d+1; line1->setText(tmp.setNum(d));}"> resize(300,150); line1 = new QLineEdit(this); bcount =" alt="MyWidget.cpp#include "..\include\MyWidget.h"MyWidget::MyWidget(){ this -> resize(300,150); line1 = new QLineEdit(this); bcount = new QPushButton("Count",this);">
Слайд 19main.cpp
#include
#include "include\MyWidget.h"
int main(int argc, char* argv[])
{
QApplication app(argc,
argv);
MyWidget widget;
widget.show();
return app.exec();
}
Слайд 20Библиотека VCL
Стандарт отсутствует
Состав библиотеки VCL (Visual Component Library):
Классы, представляющие собой
надстройку над объектами Win32 API, - TWindow, TDialog, TButton, TBrush
Классы
общего назначения TRect, TString
Визуальные и невизуальные компоненты (окна, таймеры, меню)
Разработчик: Borland (Embarcadero Technologies)
Область использования: оконные приложения для ОС Windows на языках C++, Pascal (Object Pascal)
Лицензия: коммерческий продукт
Подключение через заголовочные файлы
Классы используют простое наследование, базовый класс – TObject (TComponent)
Слайд 21Главный модуль приложения, использующего VCL
Слайд 22Библиотека CLX
Стандарт отсутствует
Состав библиотеки:
Классы, представляющие собой надстройку над объектами Win32
API, - TWindow, TDialog, TButton, TBrush
Классы общего назначения TRect
Разработчик: Borland
Область
использования: оконные приложения для ОС Windows и Unix на языках C++, Pascal (Object Pascal – Delphi, Kylix)
Подключение через заголовочные файлы
Классы используют простое наследование, базовый класс – TObject (TComponent)
Лицензия: коммерческий продукт
Использует в качестве промежуточного звена библиотеку Qt
Слайд 23Библиотека SDL
SDL (Simple DirectMedia Layer) – содержит базовый набор средств
для создания мультимедийных приложений на языке C:
Установка видеорежима с любой
глубиной цвета (от 8 бит и выше)
Прямая запись в линейный графический видеобуфер
Создание поверхностей с атрибутами прозрачности
Воспроизведение 8-ми и 16-ти битных звуков, моно или стерео.
Полный API для управления CD аудио
События для ввода с клавиатуры, ввода мыши, выхода по требованию пользователя
Потоки
Таймеры
Слайд 24Библиотека SDL (продолжение)
Разработчик: Сэм Лантинга
Официально поддерживаются операционные системы: Linux,
Microsoft Windows, Mac OS, Mac OS X, FreeBSD, OpenBSD, Solaris,
IRIX и QNX
SDL доступна для языков: C, C++, D, Ada, Eiffel, Haskell, Java, Lisp, Lua, Pascal, Perl, PHP, Python и Ruby
Лицензия: свободная (GNU LGPL)
Сайт: www.libsdl.org
Слайд 25Библиотека OpenGL
Стандарт: 1992 год
Состав:
Средства для программирования двух- и трехмерной графики
(геометрические и растровые примитивы, текстуры, освещение, атмосферные эффекты)
Разработчик: Silicon Graphics
Разработка
приложений для ОС Unix, Irix, Linux, Windows, Solaris
Языки программирования: Java, Perl, Python, Ada, Visual Basic, Pascal, C++ и C#
Лицензия: различные, в т.ч. Свободная
Версия: 4.1 (на 2010 год), поддержка: Chronos Group
Официальный сайт: www.opengl.org
Подключение: заголовочные файлы gl.h, glu.h, glaux.h, glut.h
Слайд 26DirectX
Состав: набор мультимедийных драйверов высокого уровня, напрямую использующих аппаратные возможности
оборудования
Разработчик: Microsoft
Версия: DirectX 11
Возможности: 2D/3D графика, потоковое видео, звук, различные
устройства ввода
Использование: ОС Windows