4.5. События и событийная модель
События происходят в результате действий пользователя, например, щелчка кнопкой мыши или нажатия клавиши клавиатуры, в результате программного управления или действия другого объекта. Каждое событие возбуждает некоторое сообщение для другого объекта, например, операционной системе. Система обрабатывает это сообщение и передает его другим объектам. Каждый объект затем может предпринять соответствующие действия, основанные на его собственных инструкциях относительно этого конкретного сообщения, например, снова нарисовать себя на экране.
В традиционных "процедурной" программе (приложении) она сама отслеживает, какая часть его кода выполняется, и в какой последовательности. Ее выполнение начинается с первой строки кода и далее следует по предопределенному пути через всю программу, вызывая по мере необходимости соответствующие процедуры. В событийном приложении (управляемом событиями) выполнение кода не следует по заранее определенному пути: различные части кода выполняются в зависимости от произошедшего события. События инициируются действиями пользователя, сообщениями, поступающими от системы или других приложений, или даже от самого выполняемого приложения. Последовательность таких событий определяет последовательность выполнения кода в каждом новом сеансе работы приложения.
Так как нельзя заранее предугадать последовательность событий, код такого приложения должен иметь определенные предположения о состоянии среды во время своего выполнения, например, что в поле ввода должно быть некоторое значение до выполнения процедуры обработки этого значения. Поэтому приложение строится так, чтобы при любом возможном порядке следования событий обеспечивалось выполнение предположений. Например, может, блокироваться кнопка управления, которая запускает процедуру обработки, пока в поле ввода не появится нужное значение. Код приложения может сам инициировать события во время выполнения. Можно, например, программно изменить текст в текстовом поле (text box), путем инициирования события Change (Изменить) для этого поля. Если предполагалось, что это событие могло быть инициировано только взаимодействием с пользователем, можно получить неожиданный результат. Таких проблем не возникает при использовании традиционной процедурной модели. Именно по этой причине важно понимать событийную модель и помнить о ней при проектировании приложений.
Объекты, как уже отмечалось, обладают свойствами, методами и возможностью обмениваться сообщениями в результате возбуждения событий. Свойства – некоторые атрибуты объекта, методы - действия над объектом, события – реакции объекта в форме сообщений.
Объекты нашей повседневной жизни, например, воздушный шарик, имеют свойства, методы и события. Одни свойства шарика включают видимые атрибуты: размер, диаметр и цвет. Другие описывают его состояние (надут, не надут) или атрибуты, которые нельзя увидеть, например, возраст. По определению все шарики обладают этими свойствами, но значения этих свойств у разных шаров могут различаться. Шарик обладает присущими ему действиями (см. рисунок). Он обладает методами надувания (действие, связанное с надуванием шарика), сдувания (выпустить газ из шарика) и поднимания (если его отпустить, то он улетит). Эти действия способны выполнять все шарики.
Шарики также имеют стандартные ответные реакции на внешние события. Например, реакцией шарика на прокалывание будет выпускание газа. Если шарик выпустить из рук, он начнет подниматься в воздух. Если запрограммировать шарик, то код мог бы выглядеть следующим образом.
Шар.Цвет = Красный Шар.Диаметр = 10 Шар.Надут = True
Установка свойств шарика:
О Шар.Надуть Шар.Спустить Шар.Подъем 5
Методы шарика вызываются следующим образом:
Синтаксис такой же, как для свойств. Объект (существительное), за которым следует точка и метод (глагол). В третьем примере (Шар.Подъем 5) присутствует дополнительный элемент, называемый параметром, который означает высоту подъема шарика. Некоторые методы для более детального описания выполняемого действия могут иметь и более одного параметра.
К Sub Шар_Прокол () Шар.Спустить Шар.Звук "Бах!" Шар.Надуть = False Шар.Диаметр = 0 End Sub
- Введение в программирование и основы алгоритмизации
- 1.2. Понятие "правильной" программы
- 1.3. Надежность программного средства
- 1.4. Технология программирования как разработка надежных пс
- 1.5. Информатизация общества
- Тема 2 источники ошибок в программных средствах
- 2.1. Интеллектуальные возможности человека
- 2.2. Неправильный перевод как причина ошибок в пс
- 2.3. Модель перевода
- На каждом из этих шагов человек может совершить ошибку разной природы.
- 2.4. Основные пути борьбы с ошибками
- Тема 3 общие принципы разработки программных средств
- 3.1. Специфика разработки пс
- 3.2. Жизненный цикл пс
- 3.3. Понятие качества пс
- 3.4. Внешнего описания и его роль в обеспечении качества пс
- 3.5. Обеспечение надежности – основной мотив разработки пс
- 3.5. Борьба со сложностью систем и обеспечение точности перевода
- Тема 4 разработка структуры программы. Модульное и объектно-ориентированное программирование
- 4.1. Цель модульного программирования
- 4.2. Основные характеристики программного модуля
- 4.3. Методы разработки структуры программы
- 4.4. Объектно-ориентированное программирование
- 4.5. События и событийная модель
- Тема 5 Алгоритмизация и разработка программного модуля
- 5.1. Определение алгоритма
- Алгоритмизация - техника составления алгоритмов и программ для решения задач на эвм.
- 5.2. Изобразительные средства описания алгоритмов
- 5.3. Блок-схемы алгоритмов. Графические символы
- 5.4. Порядок разработки программного модуля
- 5.5. Структурное программирование
- 5.6. Пошаговая детализация и понятие о псевдокоде
- Тема 6 тестирование и отладка программного средства
- 6.1. Основные понятия
- 6.2. Принципы и виды отладки пс
- 6.3. Заповеди отладки пс
- 6.4. Автономная отладка пс
- Тема 7 Методы разработки алгоритмов
- 7.1. Метод частных целей
- 7.2. Метод подъема
- 7.3. Программирование с отходом назад
- Тема 8 Алгоритмы сортировки
- 8.1. Сортировка. Основные понятия
- 8.2. Пузырьковая сортировка
- 8.3. Сортировка с помощью дерева
- 8.4. Пирамидальная сортировка
- 8.5. Быстрая сортировка
- Тема 9 Алгоритмы поиска и перебора
- 9.1. Поиск. Основные понятия
- 9.2. Бинарный поиск
- 9.3. Поиск в сети
- Тема 10 Событийно-управляемое программирование на языке Visual Basic
- 10.1. Историческая справка
- 10.2. Основы Visual Basic
- Среда Windows: окна, события, сообщения
- Интерактивная разработка
- Интегрированная среда разработки
- 10.3. Формы и элементы управления
- Разработка и установка свойств формы
- События и методы формы
- Кнопки управления как основа выполнения действий
- 10.4. Элементы управления пользователя
- Флажки и переключатели
- Другие стандартные элементы управления
- 10.5. Фокус. Последовательность переходов. Меню Фокус
- Основы меню
- Контекстные меню
- Редактор меню
- Подсказки пользователю с помощью диалога
- Тема 11 Управление проектами
- 11.1. Работа с проектом и его структура
- 11.2. Работа с несколькими проектами
- 11.4. Установка параметров проекта
- 11.5. Дополнения и мастера
- Тема 12 Управляющие конструкции
- 12.1. Конструкции принятия решения (ветвление)
- 12.2. Циклы
- 12.3. Работа со структурами управления и досрочный выход из них
- Тема 13 Структура приложения. Техника написания кода
- 13.1. Структура приложения
- 13.2. Как работает событийное приложение
- 13.3. До начала кодирования
- 13.4. Техника написания кода
- 13.5. Автоматизация написания программы