Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
1
Добавлен:
14.04.2019
Размер:
181.25 Кб
Скачать

События конечного пользователя и системные, внешние и внутренние

Ранняя идеология ООП базировалась на задачах интерфейса конечного пользователя, - в первую очередь, визуальный интерфейс. Соответственно, события делятся на например, в Delphi) пользовательские (пользователь программы) (например, в Delphi: OnClick, OnKeyPress) и все остальные, системные (например, в Delphi: OnCreate, OnDestroy, OnShow).

Системные события никак не классифицируются, в частности, отсутствует разделение «пользователь-программист» или «клиент-сервер» в смысле использования результатов работы одного программиста другим. Следствие: устойчивый стереотип отождествления объектного и визуального программирования. В Delphi невозможна генерация событий программиста (за одним исключением, с точки зрения Delphi, выпадающим из, собственно, ООП).

Обработка исключений Делегирование

Ключевым в обработке событий является определение функции P, сопоставляющей сообщениям имён процедур-обработчиков, или внешнего интерфейса внутреннему.

Как это обозначается и реализуется?

В Delphi обработчики реализуются как ссылки на методы, оформляемые как свойства, одноимённые с сообщениями, что неудобно, поскольку разные сообщения могут именовать одно событие и требовать одной реакции. Возможный выход – присваивание соответствующим полям ссылки на нужную процедуру, что вызывает проблему согласования типов. Процедура-обработчик имеет фиксированный набор параметров определённых типов. Такое согласование типов этих параметров не может быть проверено на уровне синтаксического анализа.

В языках ООП нового поколения проблема обходится двумя путями. Подстановка явно задаётся синтаксисом.

Visual Basic 6

subroutine AnyName ( );

handles (имена сообщений)

Второй способ: строить эту функцию динамически.

Visual Basic 7. Добавлен оператор AddHanle – добавить сообщение в список обрабатываемых. RemoveHandle - удалить сообщение из списка обрабатываемых (случай взаимодействия двух объектов).

Живые данные

Что такое автомат? Объект, среди методов которого выделены процедуры обработки событий, или интерфейс пользователя.

Что такое поставщик и/или преемник данных? (Входной и выходной потоки в конечных автоматах, лента в машине Тьюринга). Это переменные строго определённых типов, или объекты. Автоматы реагируют на сообщения этих типов. Воспринимают ли они какие-то события, генерируемые автоматом? Выходные сообщения автомата являются входными для другого автомата. Автоматы (объекты) могут быть определены только попарно.

Задача (проблема) многих тел

В реальности всегда имеется несколько взаимодействующих тел, которые всегда можно представить графом. Именно такая модель неявно предполагается в ООП. С теоретической точки зрения, это автомат, состояниями которого являются автоматы.

Попытки структурировать такое сложное взаимодействие, свести его к рассмотрению в каждый момент времени лишь взаимодействия двух объектов называются идеологией «клиент-сервер» (двухзвенная архитектура), либо тернарному отношению (трёхзвенная архитектура). Эта задача, очевидно, аналогична соответствующей в СУБД.