Architecture Net


Класс HotelBroker - часть 2



if ('Contains(city))
// если (! Содержит (город))
cities[nextCity++] = city;
// города [nextCity ++] = город;
}
bool Contains(String *city)
{
for (int 1=0; i < NumberCity; i++)
{
if (String::Compare(cities[i] , city) == 0)
// сравниваются (города [i], город)
return true; // истина
}
return false; // ложь
}

Итак, мы реализовали методы вывода списка всех гостиниц, гостиниц определенного города и списка всех городов. Стоит взглянуть на код, чтобы понять, как реализуется простое форматирование текста.


Наконец, мы подошли к описанию ключевого в классе HotelBroker метода Reserve (Резерв), с помощью которого можно зарезервировать номер.

ReservationResult *Reserve(
int customerld, String *city, String *name,
DateTime dt, int numDays)
{
int id = Findld(city, name);
// int идентификатор = Findld (город, название{имя});
if (id == -1)
// если (идентификатор ==-1)
{
ReservationResult *result =
new ReservationResult;
result->Reservation!d = -1; // результат
result->Comment = "Hotel not found";
// результат-> Комментарий = "Гостиница не найдена";


return result; // результат
}
HotelReservation *res = new HotelReservation;
res->Unit!d = id; // идентификатор
res->CustomerId = customerld;
res->HotelName = name; // название
res->City = city; // Город = город
res->ArrivalDate = dt;
res->DepartureDate =
dc.Add(TimeSpan(numDays, 0, 0, 0)); // Добавить на период
res->NumberDays = numDays;
return Broker::Reserve(res);
}

Реализовать класс HotelBroker оказалось несложно, потому что в его основе лежит логика, реализованная в классе Broker (Брокер). Если гостиницы нет в списке гостиниц, то возвращается сообщение об ошибке. После этого создается объект Но-telReservation, который передается в качестве параметра методу Reserve (Резерв) базового класса. В производном классе мы создаем объект резервирования, так как нам нужны все поля класса HotelReservation, а не только поля, унаследованные от класса Reservation (Резервирование). Для того чтобы подсчитать дату отбытия (прибавить количество дней, на которые зарезервирован номер, к дате прибытия), мы используем структуру TimeSpan вместо ранее использовавшейся для этих целей структуры DateTime. Такое вычисление сделать нетрудно, поскольку в структуре DateTime знак операции + перегружен.


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




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



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