7. Поток обработки
Когда один объект внутри функции вызывает другую функцию, а та вызывает третью и т.д., образуется цепочка вызовов функций. Количество вызовов в цепочке называется длиной цепочки вызовов.
ПРИМЕЧАНИЕ
В концепции ООП учитывается многозадачность, поэтому более общим случаем вызова функции считается отправка сообщения одного объекта другому. Сообщение может быть отправлено синхронно или асинхронно.
На практике механизм отправки сообщения всегда инкапсулирован в виде функции. Таким образом, отправка сообщения объектом другому объекту – это всегда вызов функции, не принадлежащей классу объекта, отправляющего сообщение (хотя это может быть и класс-родитель класса-получателя или класса-отправителя).
И ещё один момент: на практике невозможно написать алгоритм, который был бы абстрагирован от того, как отправляется сообщение: синхронно или асинхронно. Примеры таких алгоритмов можно привести, но они не являются показателем в общем случае.
Показателем явилась бы примерно следующая абстракция.
Например, в Windows есть функции синхронной и асинхронной отправки сообщений – SendMessage и PostMessage (в X11 – SendEvent и PostEvent соответственно). А пусть бы объект сам определял, в каком режиме ему обрабатывать сообщения, синхронно или асинхронно? Это существенно упростило бы его интерфейс. Увы, такой подход не позволяет работать с этим объектом, как с объектом, с которым можно работать синхронно, то есть без обеспечения обратной связи.
Многозадачность и способы отправки сообщений, как свойства операционной системы, выходят за рамки WYCIWYC, потому исключены из списка понятий данной концепции. Они точно также являются лишними понятиями в ООП. Свидетельством тому то, что поток и сообщение в подавляющем большинстве языков, реализующих ООП, – это классы, имплементирующие соответствующую функциональность.
Поток необязательно может быть объектом. То, что в C++ потоки – не средство языка, только делает этот язык более гибким, чем сама концепция ООП.
Выполнение алгоритма на уровне цепочки вызовов, то есть с точки зрения передачи управления между объектами, называется потоком обработки.
Далее
Автор: Андрей Шаройко <vanyamboe@gmail.com>