+7 (812) 703-02-02 info@hse.spbstu.ru

DEV-QT20. Прикладное программирование на С++ с использованием Qt. Часть 2

Длительность дисциплины: 44 ак.ч.


Аннотация

Целью реализации модуля «DEV-QT20. Прикладное программирование на С++ с использованием Qt. Часть 2» является углубленное изучение библиотеки Qt и совершенствование профессиональных компетенций в области разработки прикладного программного обеспечения на языке С++ с использованием данной библиотеки.

Знания и умения, полученные в результате изучения

В результате освоения программы, обучающийся должен уметь:
•    решать практические задачи по созданию приложений с использованием архитектуры MVC;
•    использовать средства Qt для взаимодействия с БД, создания многопоточных приложений;
•    запускать дочернее приложение и осуществлять обмен данными между приложениями.

В результате освоения программы обучающийся должен знать:

•    основные классы модулей QtSQL (работа с БД), QtNetwork (обмен по сети);
•    основные способы и классы для организации многозадачности;
•    принципы создания многопоточного приложения;
•    основные классы и принципы архитектуры MVC (model-view-controller).

В результате освоения программы обучающийся должен приобрести практический опыт:

•    создания работоспособных приложений на языке С++ с использованием библиотеки Qt.

Содержание дисциплины

Тема 1. Программирование с использованием архитектуры MVC
1.1    Основные классы архитектуры MVC
      Классы модели (QAbstractItemModel, QStandartItemModel), представлений (QAbstractItemView).
    Модельные индексы.
    Роли элементов.
1.2    Дополнительные возможности архитектуры MVC
      Использование делегатов.
    Промежуточная модель данных.
    Модели выбора.
Практические занятия   
1.    Реализация модели в виде таблицы хранимых данных
2.    Отображение данных модели посредством QTableView
3.    Использование делегатов для модификации данных в табличном представлении в удобном для пользователя виде

Тема 2. Взаимодействие с базами данных

2.1    Основные классы для работы с БД   
    Установление соединения с БД.
    Добавление таблиц в БД, работа с записями в таблицах, модификация полей записи, выборка записей, удовлетворяющих условию, упорядочение записей
2.2    Использование архитектуры MVC для работы с БД   
    Классы моделей: QSqlQueryModel, QSqlTableModel, QSqlRelationalTableModel, QSqlRelationalDelegate.
    Создание информационно-связанных форм (QDataWidgetMapper).
Практические занятия   
1.    Создание однотабличной базы данных и заполнение ее данными с использованием Qt.
2.    Работа с БД посредством модели: связь модели с базой данных, занесение, модификация, удаление, упорядочение данных.

Тема 3. Межпроцессное взаимодействие
3.1    Реализация многозадачности посредством процессов
    Формирование, хранение (QByteArray), передача «сырых» данных.
    Классы ввода/вывода (QIODevice, QFile, QBuffer, QProcess).
3.2    Обмен данными между процессами
    Обмен с дочерним процессом посредством перенаправления стандартного ввода/вывод.
    Разделяемая память (QSharedMemory)
Практические занятия   
1.    Запуск обособленного дочернего процесса. 
2.    Запуск дочернего процесса с ожиданием его завершения.
3.    Запуск дочернего процесса с возможностью обмена данными.
4.    Использование разделяемой ппамяти.

Тема 4. Использование многопоточности

4.1    Реализация многозадачности посредством потоков   
    Потоковые классы (обзор).
    Использование класса QThread.
    Синхронизация потоков с помощью: QMutex, QSemaphore, QSystemSemaphore, QWaitCondition.
4.2    Высокоуровневый API для поддержки многопоточности
    Использование классов QtConcurrent, QRunnable, QThreadPool.
    Взаимодействие вторичного потока с главным.
    Механизмы оповещения главного потока (события, сигналы-слоты).
Практические занятия   
1.    Использование класса QThread.
2.    Создание нескольких потоков для параллельного выполнения задачи.
3.    Использование различных объектов синхронизации.

Тема 5. Обмен данными по сети
4.1    Классы для поддержки сетевого взаимодействия
     Сетевые протоколы (TCP, UDP).
    Модель «клиент- сервер».
    Низкоуровневый API для взаимодействия посредством сокетов: QTcpServer, QTcpSocket, QHostAddress, QUdpSocket.
    Обмен сообщениями разной длины.
    Асинхронный и блокирующий подход.
4.2    Высокоуровневый API для сетевого взаимодействия      
    Классы: QNetworkAccessManager, QNetworkRequest, QNetworkReply
Практические занятия   
1.    Создание простых клиента и сервера TCP. Многопоточный сервер TCP.
2.    Создание клиента и сервера UDP.

Тема 5. Промежуточная аттестация.
Практические занятия    Зачет