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


Архитектура информационной доски - часть 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 менее очевидно. Оно нужно для отката. Если сделанное предположение не подтвердится, то нужно восстановить состояние объектов на доске, которые воспользовались предположением, а они должны известить источники знаний, что их смысл изменился.




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



Книжный магазин