Телематика'2003

X Всероссийская
научно-методическая
конференция


 

 

РЕАЛИЗАЦИЯ КОНЕЧНЫХ АВТОМАТОВ С ИСПОЛЬЗОВАНИЕМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

Г.А.Корнеев, А.А.Шалыто

Санкт-Петербургский государственный институт точной механики и оптики (технический университет), Санкт-Петербург

Тел.: (812) 350-47-58, e-mail: kgeorgiy@rain.ifmo.ru

В работах [1, 2] была предложена концепция программирования с явным выделением состояний, базирующаяся на конечных автоматах. В настоящей работе предлагается метод реализации конечных автоматов с использованием объектно-ориентированного программирования.
В отличие от паттерна “State”, описанного в работе [3], предлагается реализовывать конечный автомат в виде одного класса (с использованием оператора “switch”), а не как набор классов, представляющих отдельные состояния автомата. При этом вся логика работы автомата концентрируется в одном месте, что упрощает отладку программы и внесение изменений при повторном использовании.
Для реализации унифицированного управления конечным автоматами и автоматизации генерации протоколов работы программ удобно вынести соответствующую им логику в базовый класс “BaseAutomata”, от которого будут наследоваться конкретные конечные автоматы.
Класс “BaseAutomata” должен предоставлять конечному автомату следующую функциональность:
– чтение и запись текущего состояния автомата;
– вызов функции переходов автомата;
– вызов функции, выполняющей действия, осуществляемые в состояниях (для автоматов Мура и смешанных автоматов).
При необходимости класс “BaseAutomata” может осуществлять запись в протокол работы программы при вызове функции переходов автомата и изменении его состояния (в функции изменения состояния автомата).
Для внешних модулей класс “BaseAutomata” должен представлять следующий функции:
– чтение номера текущего состояния автомата;
– чтение название текущего состояния (может применяться для генерирациии протоколов работы программы);
– генерация сообщений об изменении состояния автоматов (через “call-back” функции или очередь событий).
– вызов функции переходов автомата.
Реализация класса “BaseAutomata” и пример его использования приведены на сайте http://is.ifmo.ru в разделе “Тезисы”.
Предложенный подход позволяет совместить достоинства автоматного и объектно-ориентированного подходов. При этом функция переходов содержит только реализацию логики работы автомата.
Работа выполнена при поддержке Российского фонда фундаментальных исследований по гранту №02-07-90114 “Разработка технологии автоматного программирования”.
Литература
1. Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998.
2. Шалыто А.А., Туккель Н.И. Программирование с явным выделением состояний //Мир ПК. 2001. N8, N9.
3. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер, 2001.


 



Санкт-Петербург, 14-17 апреля 2003 г.
X Всероссийская научно-методическая конференция "Телематика'2003"