Главная страница
qrcode

Ии Визуальное программировани События в операционной системе


Скачать 243.05 Kb.
НазваниеИи Визуальное программировани События в операционной системе
АнкорIiP 3 laba teoria.pdf
Дата01.08.2017
Размер243.05 Kb.
Формат файлаpdf
Имя файлаIiP_3_laba_teoria.pdf
оригинальный pdf просмотр
ТипДокументы
#28689
Каталог

ИиП
3.Визуальное программирование
1. События в операционной системе.
ЭВМ, как и любая другая вычислительная система, работает по событийной модели, то есть модели обмена сообщениями.
Событие — это сообщение, наполненное семантикой.
Но в нашем курсе понятия сигнал, сообщение и событие — фактически одно и то же.
Цикл обработки событий
Устройства шлют ЭВМ сообщения-прерывания, ЭВМ преобразует их в события ОС. ОС рассылает события по приложениям.
Весьма важным отличием событийно-ориентированного подхода от ООП — является то,
что процесс связывания источника события с его обработчиком осуществляется
третьей стороной. (делегирование обработки событий)
При разработке графических интерфейсов пользователя(GUI) становится очевидной необходимость работы с событиями, так как GUI интерактивны (широко используют возможности взаимодействия человека и машины).

2. API операционной системы
API OC - это интерфейс, позволяющий различным программным компонентам взаимодействовать друг с другом.
API мб применён:
1. Интегрирован в среду программирования (C++, Java API)
2. В специальном назначении (Google Maps API)
3. API операционной системы это интерфейс, посредством которого приложения получают доступ к услугам ОС (Windows API)
Службы, доступные через Windows API:

Базовые службы ( управление процессами, памятью)

Службы компонентов

Службы пользовательского интерфейса (меню, окна)

Службы графики и мультимедиа

Сетевые службы (Networking)

И др.)
3.Графический интерфейс пользователя
GUI - разновидность пользовательского интерфейса, в котором элементы интерфейса, представленные пользователю на дисплее, исполнены в виде графических изображений.
3 вида:

простой: типовые экранные формы и стандартные элементы интерфейса, обеспечиваемые самой подсистемой GUI;

двумерный: нестандартные элементы интерфейса и оригинальные метафоры, реализованные собственными средствами приложения или сторонней библиотекой;

трёхмерный(как в звездных воинах)
4.Библиотеки для создания графических интерфейсов

Xlib — 1985

Motif — 1989

Turbo Vision (Borland for Pascal, and C++) — начало 90х

Borland VCL (Delphi) — 1995

Qt Trolltech — 1995

И др.

Главные задачи этих библиотек:
1. Предоставление готовых решений в плане визуализации графических компонентов
(виджетов).
2. Разделение ответственности (делегирование) обработки событий взаимодействия с пользователем отдельным компонентам
То есть сделать так чтобы было удобно программировать
5.Класс QObject
QObject – основной, базовый класс.
Содержит в себе поддержку:

механизма объединения объектов в иерархии для управления их жизненным циклом

отправку сообщений за счет использования сигналов и слотов (signal/slot);

таймера;

метаобъектной информации (в том числе приведения типов, и механизма свойств)
6.Управление жизненным циклом в QObject
В конструктор каждого объекта QObject может передаваться указатель объект-родитель. И если это было сделано, то в тот момент, когда этот родитель будет удаляться - он вызовет метод удаления и у всех своих потомков. То есть объект-родитель в момент своей смерти убьет всех своих потомков.
Обратите внимание, что это не имеет никакого отношения к наследованию классов (кроме того, что иерархия строится только для наследников QObject), иерархия управления жизненным циклом определяется во время выполнения путем вызова соответсвтующего конструктора или метода setParent.

Это можно проиллюстрировать на следующем примере:

7. Базовые виджеты библиотеки Qt
QWidget - Базовый класс для всех объектов интерфейса пользователя
QLabel - Отображает текст или рисунок
QMenu - Виджет меню, используемый в панели меню, контекстном меню и других всплывающих меню
QLineEdit - Однострочный редактор текста
QPushButton - Командная кнопка
И др.
8. Layout
Класс QLayout - это базовый класс для менеджеров компоновки (компоновщиков).
Это абстрактный базовый класс, от которого наследуются конкретные классы QBoxLayout,
QGridLayout, QFormLayout и QStackedLayout.
Чтобы создать собственный компоновщик, нужно реализовать функции addItem(), sizeHint(), setGeometry(), itemAt(), takeAt() и minimumSize(). Последнее нужно, чтобы гарантировать, что ваш компоновщик не уменьшается до нулевого размера, в случае если места слишком мало.
Управление компоновкой прекращается, когда компоновщик удаляется.
9. Представление событий в языке программирования C++
Событийно-ориентированная модель строится на том, что за связывание источника сообщения и его получателя отвечает кто-то третий. А значит, источник и потребитель в общем случае ничего не должны знать друг о друге.
10. Делегирование обработки событий
Делегирование обработки событий - процесс связывания источника события с его обработчиком, который осуществляется третьей стороной. В Qt этим занимается QtCore.
QtCore - Содержит механизмы делегирования событий, управления жизненным циклом компонентов, взаимодействия с событиями ОС, управления потоками выполнения, утилитарные классы коллекций, работы со временем и т.п.
11. Концепция слот-сигнал

Сигналы и слоты – это средства, позволяющие эффективно производить обмен информацией о событиях, вырабатываемых объектами. Сигнал испускается, когда происходит определенное событие. Слот — это то, куда сигнал придёт и кем будет обработан.
Попросту мы разделили методы классов (которые должны были вызывать друг друга) на две части, которые ничего не знают друг о друге.
Сигнал — это метод без реализации, вызываемый при возникновении определенного события.
Слот — это метод-обработчик, предназначенный для вызова в качестве реакции на сигнал.
А связывание между ними будет осуществляться третьим объектом . Причем:

связываемые сигнал и слот могут принадлежать разным объектам.

связывание происходит на уровне экземпляров классов во время выполнения, то есть связываются методы разных объектов, а не классов.
Плюсы:
+
каждый класс, унаследованный от QObject, может иметь любое количество сигналов и слотов
+
сигнал можно соединять с различным количеством слотов
+
слот может принимать сообщения от многих сигналов
+
соединение сигналов и слотов можно производить в любой точке приложения
+
при уничтожении объекта происходит автоматическое разъединение всех сигнально- слотовых связей. Это гарантирует, что сигналы не будут высылаться к несуществующим объектам.
Минусы:

сигналы и слоты не являются частью языка C++, поэтому требуется запуск дополнительного препроцессора перед компиляцией программы;

отсылка сигналов происходит немного медленее, чем обычный вызов функций

существует необходимость в наследовании класса QObject;

в процессе компиляции не производится никаких проверок: имеется ли сигнал или слот в соответствующих классах или нет; совместимы ли сигнал и слот друг с другом и могут ли они быть соединены в месте. Об ошибке можно будет узнать лишь тогда, когда приложение будет запущено. В Qt5 появилась возможность осуществлять статическую проверку совместимости слотов и сигналов на этапе компиляции.
12. Операции приведения типов в С++

static_cast - может быть использована для преобразования одного типа в другой, но не может быть использована для, например, преобразование значения в указатель.


dynamic_cast - для безопасного приведения указателя (или ссылки) на суперкласс, в указатель (или ссылку) на подкласс в иерархии классов.

const_cast - используется, чтобы константную переменную преобразовать в неконстантную.

reintrepred_cast - наименее безопасная форма, она позволяет интерпретировать значение в другой тип данных. Не должна быть использована для приведения иерархии классов или преобразования константных переменных.
13. Метаданные в Qt
Метаданных - например, геометрия виджета, заголовок окна, текст краткой подсказки.

перейти в каталог файлов


связь с админом