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


         

Одно из свойств этого класса


class KnowledgeSources : public DynamicCollection<KnowledgeSource*>

...


Одно из свойств этого класса состоит в том, что при создании его экземпляра создаются также 13 специализированных источников знаний. Для объектов этого класса определяются три операции:


    restart - Перезапустить источник знаний.

    StartKnowledgeSource - Задать начальные условия для источника знаний.

    connect - Связать источник знаний с доской или контроллером.

     


    Рис. 11-5. Диаграмма классов источников знаний.

    На рис. 11-5 показана структура созданных в процессе проектирования классов источников знаний.

    Проектирование контроллера

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

    Каким образом контроллер определяет, какой из источников знаний следует активизировать? Можно предложить несколько разумных правил:


      Утверждение более приоритетно чем предположение.

      Если кто-то говорит, что решил всю фразу, надо дать ему возможность высказаться.

      Проверка по шаблону более приоритетна, чем источник, анализирующий структуру предложения.

      Контроллер действует в качестве агента, ответственного за взаимодействие источников знаний.

      Контроллер должен быть в ассоциативной связи с источниками знаний через класс KnowledgeSources. Кроме того, он должен иметь в качестве одного из своих свойств коллекцию высказываний, упорядоченных по приоритету. Тем самым контроллер легко может выбрать для активизации источник знаний с наиболее интересным высказыванием.

      После изолированного анализа класса мы предлагаем ввести для класса controller следующие операции:



        Содержание  Назад  Вперед