Architecture Net



Проектирование абстракций - часть 3


Резервирование

Ксиди клиент резервирует объект, создается запись о резервировании. Класс Reser-v,u j on (Резервирование) содержит информацию о резервировании.

public _gc _abstract class Reservation
// сборщик мусора - абстрактный класс Резервирование
{
public:
int Reservationld;
int Unitld;
DateTime Date; // Дата
int NumberDays;
static private int nextReservationld = 1; // статический
// частный
Reservation() // Резервирование
{
Reservationld = nextReservation!d++;
}
};

Значение поля Reservationld генерируется автоматически. Поле Unitld идентифицирует зарезервированный объект. Поле Date (Дата) определяет начальную дату резервирования, поле NumberDays определяет количество дней, на которые зарезервирован объект.

Брокер

Третья абстракция, класс Broker (Брокер), — это модель брокера, который отвечает за резервирование разнообразных объектов. Данная абстракция реализована в виде абстрактного класса. Этот класс содержит список резервируемых объектов, представленных в виде массива units, и список резервирований, представленных в виде массива reservations (резервирования). С помощью двумерного массива numCost отслеживается количество клиентов, которые зарезервировали объект на указанный день.

public _gc _abstract class Broker // сборщик мусора - абстрактный класс Брокера ' -{
private: // частный
int MaxDay;
static const int MAXRESERVATION = 10; // статическая константа


static int nextReservation = 0;
static int nextUnit = 0;
int numCust [,];
protected: // защищенный
Reservation *reservations[]; // Резервирование
Reservable *units[];
public:
Broker(int MaxDay, int MaxUnit) // Брокер
{
this->MaxDay = MaxDay;
numCust = new int _gc [MaxDay, MaxUnit];
units = new Reservable*[MaxUnit];
reservations = new Reservation*[MAXRESERVATION];
// резервирование }

Структура ReservationResult

Для возвращения результата резервирования используется простая структура ReservationResult.

public _gc struct ReservationResult
// сборщик мусора - struct ReservationResult
{
public:
int Reservationld;
Decimal ReservationCost; // Десятичное число ReservationCost


Decimal Rate; // Десятичное число - цена
String *Comment;
};

Поле Rate (Цена) определяет стоимость резервируемого объекта за один день. Значение поля ReservationCost определяет полную стоимость резервирования объекта, которая равняется количеству дней, умноженному на стоимость резервирования за один день. Если возникают проблемы, в качестве Reservationld возвращается -1. причем в поле Comment (Примечание) описывается проблема. Структура создана таким образом, что информация о результате будет передаваться в любом случае, например, ее можно использовать в Web-службах, которые не поддерживают обработку исключений.

CompEbook.ru Железо, дизайн, обучение и другие




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