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



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


Чтобы отразить эти роли, уточним ранее выявленный класс Assumption в подклассе Assertion (утверждение). Экземпляры обоих классов управляются объектами класса Affirmation и могут помещаться на доску. Для поддержки введенных ранее операций make и retract нам необходимо определить следующие селекторы:

    isPlainLetterAsserted - определена ли эта буква текста достоверно?

    isCipherLetterAsserted - определена ли эта буква шифра достоверно?

    plainLetterHasAssumptlon - есть ли предположение об этой букве текста?

    cipherLetterHasAssumption - есть ли предположение об этой букве шифра?

    Теперь мы можем определить класс Assumption. Поскольку данная абстракция носит исключительно структурный характер, ее состояние можно сделать открытым:

    class Assumption : public BlackboardObject


    {


    public:


    ...

    BlackboardObject* target;


    KnowledgeSource* creator;


    String<char> reason;


    char plainLetter;


    char cipherLetter;

    };

    Отметим, что мы повторно использовали еще один класс среды, описанной в главе 9, а именно, параметризуемый класс String.

    Класс Assumption является объектом информационной доски, поскольку информация о сделанных предположениях используется всеми источниками знаний. Отдельные члены класса выражают следующие его свойства:

      target - Объект доски, о котором делается предположение.

      creator - Источник знаний, который сделал предположение.

      reason - Основание для сделанного предположения.

      cipherLetter - Предполагаемое значение буквы исходного текста.

      Необходимость каждого из перечисленных свойств в значительной степени объясняется природой предположений: источник знании формирует предполагаемое соответствие "буква исходного текста - буква шифра" на основании каких-то причин (обычно, некоторого правила). Назначение первого свойства target менее очевидно. Оно нужно для отката. Если сделанное предположение не подтвердится, то нужно восстановить состояние объектов на доске, которые воспользовались предположением, а они должны известить источники знаний, что их смысл изменился.




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