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

Описание сложного поведения

Мы сильно продвинулись в понимании статики строения объектов, представленной в виде иерархий – деревьев фиксированной глубины (процедурное программирование, типы данных), либо переменной глубины (ссылочное программирование, ООП), либо произвольных или функциональных отношений (реляционные СУБД). Но моделирование сложных, особенно «интеллектуальных», объектов подразумевает описание сложного поведения. Динамика существенно сложнее статики; дать статическое описание движения – парадокс.

Базовая идея ООП как аппарата описания сложного поведения относится к 60м годам, но эта идея была востребована лишь в 90-х в связи с развитием: 1) многозадачных ОС: один пользователь и много одновременно и асинхронно работающих программ; 2) сетей и сетевых БД: много пользователей, много программ; 3) распределённых вычислений (обычно в сети): много пользователей – одна задача; и соответствующих адекватных пользователю средств общения с компьютером – интерфейса пользователя.

Эволюция пользовательского интерфейса

Предыстория: никакого интерфейса нет.

Пакетный режим: пользователи отдают программы и данные оператору, который и передаёт их на последовательное выполнение.

Программы как функции:

client

x f(x)

server

В программировании эта схема породила первые языки высокого уровня, отношение «программа-подпрограмма», а затем в понятиях именованной, или пользовательской, процедуры и технологию восходящего и нисходящего программирования.

Итерация использования.

client



server

тип данных

Это идиома пошаговой обработки, трассировки и интерпретации. Это уже описание поведения. Если поведение пользователя зависит от выходных данных, то появляется итеративный интерфейс и идея человеко-машинных систем.

Формальное описание систем произвольной сложности теоретически тривиально. Этот тезис носит название «тезис Чёрча-Тьюринга». Описание поведения систем сколь угодно высокой сложности может быть дано с любой степенью точности при помощи одного из равносильных определений понятия алгоритма. Например, блок-схемы, автоматы, машины Тьюринга и др.

Мы остановимся на рекуррентных последовательностях, или итерации процедуры.

P P P

Вспомним теорему о нормальной форме: любая программа может быть приведена к такому «нормальному» виду.

Автоматные модели описания поведения Сложное поведение как изменчивое поведение

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

P

input output

Мы определили семантику программы как функцию преобразования входного потока (input) в выходной поток (output). Под потоком понимались последовательности компонент некоторых типов tInput, tOutput (обычно последовательность символов: char), значения которых в контексте описания поведения мы будем называть сообщениями (message), или метками событий (event). Саму программу в качестве обработчика событий (event handler) будем называть автоматом.

Что такое событие? К этому вопросу мы вернёмся много позже.

Понятно, что Р – непроизвольная функция. Понятие автомата неявно подразумевает не только сложное, но, в каком-то смысле, разумное поведение. Они нас интересуют как модели интеллектуальной деятельности. Для этого уточним понятия.

Входной поток – не просто множество последовательностей, но тип данных, на котором определены предикат eof(f) и оператор read(f,x), семантику которого мы описывали в терминах неявной (скрытой) системной переменной текущей позиции, или marker. Read – выборка с одновременным переводом маркеров:

Read(f,x)  x; marker:=f(i); marker+1

Переход на первую позицию неявно подразумевается при первом выполнении read.

Для выходных потоков определён оператор write, семантика которого – изменение значений с одновременным переводом маркера:

Write(f,x)  f(marker); marker:=x; marker+1;

Понятно, что функции следования и аппликации – единственные операции, используемые в этих определениях.

Что такое сообщение?