Письмо 03 -Состояния контейнеров

Состояния контейнеров

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

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

Для многих приложений весьма желательно регистрировать моменты изменения состояния контейнера. Кроме того, регистрация существенно упрощает процесс отладки логики работы контейнера, условий перехода и изменений фактологической базы. Необходимо отметить, что использование нескольких состояний контейнера встречается достаточно часто, но обычно логика переходов достаточно проста и не требует введения элементов систем искусственного интеллекта. Но, тем не менее, существует определённый круг предметных областей, где невозможно получить качественную формализацию. Здесь трудно обойтись без использования эмпирических знаний.

Говоря иными словами, наличие нескольких состояний контейнера фактически приводит к виртуализации схем обработки сообщений, поступающих к контейнеру. Виртуализация может касаться только части схемы, например, начало схемы может не зависеть от состояния контейнера. В такой ситуации удобно делить схему на несколько подсхем, то есть, проводить декомпозицию схемы.

Сайт Alexus Software Development