>bool operator()(void);
>bool operator==(const trip_announcement &X) const;
>void origin(string X);
>string origin(void);
>void destination(string X);
>string destination(void);
>bool directTrip(void);
>bool validTrip(list::iterator I,
>string TempOrigin);
>stack candidates(void);
>friend bool operator||(bool X,trip_announcement &Y);
>friend bool operator&&(bool X,trip_announcement &Y);
>//. . .
>};
Обратите вни м ание на то, что класс trip_armouncement наследует класс proposition. Вспо м ните, что класс proposition является шаблонным и требует задания параметра, определяющего тип. Объявление
class trip_announcement :
public proposition
{... } ;
обеспечивает класс proposition требуе м ы м типо м. Кро м е того, важно от м етить, что класс trip_announcement определяет операторный м етод operator (). Следовательно, наш класс trip_armouncement — конкретный, а не абстрактный. Теперь мы можем объявить и использовать предположение типа trip_announcement непосредственно в программе агента. В классе trip_announcement определены слелую-щие дополнительные члены данных: Origin Destination Candidates
Эти члены данных используются для указания пунктов отправления и назначения автобусного маршрута. Если автобусный маршрут требует пересадки с одного автобуса надругой и несколько остановок в пути, то член данных Candidates будет содержать полный путь следования. Следовательно, объект класса trip_armouncement представляет собой утверждение об автобусном маршруте и пути следования. В классе trip_armouncement также определены некоторые дополнительные операторы. Эти операторы позволяют уравнять класс trip_announcement «в правах» со встроенны м и типа м и данных языка С++. Помимо убеждений относительно автобусных м аршрутов, агент также обладает убеждения м и, связанны м и с показателя м и успешности функционирования расс м атривае м ой ко м пании. Эти убеждения отличаются по структуре, но в основном содержат высказывания, которые могут быть истинными либо ложными. Итак, мы снова испо л ьзуе м класс proposition в качестве базового. Влистинге 12.3 представлено объявление класса p eformance_statement.
>// Листинг 12.3. Объявление класса performance_statement
>class performance__statement :
>public proposition{
>//. . .
>int Bays;
>float Sales;
>float PerHour;
>public:
>bool operator() (void);
>bool operator==(const performance__statement &X) const;
>void bays(int X);
>int bays(void);
>float sales(void);
>void sales(float X);
>float perHour(void);