Объектно-ориентированное проектирование с примерами


Архитектура информационной доски - часть 13


  • reset - Перезапуск контроллера.

  • addHint - Добавить высказывание от источника знаний.

  • removeHint - Удалить высказывание от источника знаний.

  • processNextHint - Разрешить выполнение следующего по приоритету высказывания.

  • isSolved - Селектор. Истина, если задача решена.

  • UnableToProceed - Селектор. Истина, если источники знаний застряли.

  • connect - Устанавливает связь с источником знаний.

  • Все эти решения можно описать следующим образом:

    class Controller {


    public:


    ...

    void reset();


    void connect(Knowledgesource&);


    void addHint(KnowledgeSource&);


    void removeHint(KnowledgeSource&);


    void processNextHint();


    int isSolved() const;


    int unableToProceed() const;

    };

    Контроллер в некотором смысле управляется источниками знаний, поэтому для описания его поведения наилучшим образом подходит схема конечного автомата.

    Рассмотрим диаграмму состояний и переходов на рис. 11-6. Из нее видно, что контроллер может находиться в одном из пяти основных состояний: инициализация (Initializing), выбор (Selecting), вычисление (Evaluating), тупик (Stuck) и решение (Solved). Наибольший интерес для нас представляет поведение контроллера при переходе от выбора к вычислению. В состоянии selecting контроллер переходит от создания стратегии (CreatingStrategy) к вычислению высказывания (ProcessingHint) и, в конце концов, выбирает источник знаний (SelectingKS).
     

    Рис. 11-6. Контроллер как конечный автомат.

    Дав одному из источников возможность высказаться, контроллер переходит в состояние Evaluating, где прежде всего изменяет состояние информационной доски. Это вызывает переход в состояние Connecting при добавлении источника знании или к Backtracking, если предположение не оправдалось и надо откатить его, оповестив при этом все зависимые источники знаний.

    Конечной точкой работы нашего механизма является solved (задача решена) или stuck (тупиковая ситуация).

    11.3. Эволюция




    Начало  Назад  Вперед