Класс TestHotel. Резюме.
Класс TestHotel, который находится в файле TestHotel.h, содержит интерактивную программу для испытания классов, связанных с резервированием гостиницы, и классов клиентов, поддерживающих описанные ранее команды. В этом классе имеется цикл, просматривающий команды, – такой цикл считывает команду и затем выполняет ее. Класс содержит большой блок try для всех команд, за которым следует обработчик исключений catch. Обратите внимание, – чтобы получить доступ к пространству имен нужно использовать директиву using.
//TestHotel.h using namespace System; // использовать пространство имен Система; using namespace OI::NetCpp::Acme; // использовать пространство имен OI::NetCpp::Acme; public _gc class TestHotel // класс сборщика мусора TestHotel { public: static void Main() { const int MAXCUST = 10; // константа HotelBroker *hotelBroker = new HotelBroker; Customers *customers = new Customers(MAXCUST); // новые Клиенты InputWrapper *iw = new InputWrapper; String *cmd; Console::WriteLine("Enter command, quit to exit"); // ("Введите команду, quit для выхода"); cmd = iw › getString("H> "); while (! cmd › Equals("quit")) { try // попытка { if (cmd › Equals("hotels")) // если Равняется // ("гостиницы") { String *city = iw › getString("city: "); // город hotelBroker › ShowHotels(city); // город } else if (cmd › Equals("all")) // если Равняется // ("все") hotelBroker › ShowHotels (); else hotelhelp(); } catch (Exception *e) // Исключение { Console::WriteLine( "Exception: {0}", e › Message); // "Исключение: {0} ", e › Сообщение); } cmd = iw › getString("H> "); } } };
Резюме
В этой главе сделан обзор принципов объектно-ориентированного программирования на управляемом C++, причем много внимания было уделено изучению наследования. Мы обратились к примеру "Бюро путешествий Acme", который продолжим использовать на протяжении всей книги.
Мы также рассмотрели абстракции, наиболее подходящие для того, чтобы реализовать системы резервирования разных объектов, и реализовали систему резервирования гостиничных номеров. Описанные нами абстрактные базовые классы можно использовать и для реализации других систем резервирования.