Чтобы отразить эти роли, уточним
Чтобы отразить эти роли, уточним ранее выявленный класс
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 менее очевидно. Оно нужно для отката. Если сделанное предположение не подтвердится, то нужно восстановить состояние объектов на доске, которые воспользовались предположением, а они должны известить источники знаний, что их смысл изменился.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий