Параллельное и распределенное программирование на С++ (Хьюз, Хьюз) - страница 327

>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);