Программа Hotel (Гостиница)
Теперь представим первую версию программы управления системой бронирования Гостиничных номеров, которую мы будем использовать и расширять в следующих главах. Обратите внимание, что класс Hotel (Гостиница) хранится не в сборке ЕХЕ, а в динамически подключаемой библиотеке (DLL).
Вы можете открыть готовое решение, находящееся в папке HotelRes\Hotel, или создать проект и ввести исходный код сами. Для того чтобы это сделать, необходимо создать проект библиотеки классов на управляемом C++ (Managed C++ Class Library project), называющийся Hotel (Гостиница), добавить исходный код, а затем скомпилировать проект. Заметьте, что поскольку выходной файл – динамически подключаемая библиотека (DLL), его не удастся протестировать до создания исполнимого файла (ЕХЕ) программы-клиента.
Создание библиотеки классов на управляемом C++ (Managed C++ Class Library project)
Создайте проект библиотеки классов на управляемом C++ под названием Hotel (Гостиница):
- Откройте Visual Studio .NET.
- Выберите пункт меню File › New › Project (Файл › Создаты › Проект) для того чтобы вызвать диалог New Project (Создание проекта).
- Выберите в списке Project Type (Тип проекта) Visual C++ Projects (Проекты на Visual C++).
- Выберите в списке Template (Шаблон) Managed C++ Class Library Project (Проект библиотеки классов на управляемом C++),
- Введите Hotel (Гостиница) в поле Name (Название).
- Задайте папку, в которой будет сохранен проект.
- Щелкните на кнопке ОК. для того чтобы закрыть диалог New Project (Создание проекта) и создать проект.
Добавьте исходный код: - Дважды щелкните на файле Hotel.cpp в окне Solution Explorer (Поиск решения).
- Введите исходный код примера Hotel (Гостиница). Скомпилируйте проект:
- Выберите пункт меню Build › Build (Сборка › Собрать).
Хотя определение класса уже присутствует в заголовочном файле и используется в качестве типа данных в срр-файлах, мы, ради простоты и наглядности, поместили данное ниже определение класса Hotel (Гостиница) непосредственно в исходный файл Hotel. срр. Это привело также к тому, что указанный файл стал больше похож на исходный файл С#, в котором директива Iinclude отсутствует. Visual Studio создала, конечно, файл Hotel.h, но это не имеет значения, т.к. соответствующая директива #include была удалена из файла Hotel.срр.
//Hotel.cpp finclude "stdafx.h" // имеет #using <mscorlib.dll> using namespace System; // использовать пространство имен Система; public _gc class Hotel // класс сборщика мусора Гостиница { private: // частный String *pcity; // Строка String *pname; // Строка int number; Decimal rate; // Десятичное public: Hotel(String *pcity, String *pname, // Гостиница int number, double rate) { this › pcity = pcity; this › pname = pname; this › number = number; this › rate = rate; } Hotel() // Гостиница { this › pcity = 0; this › pname = 0; this › number = 50; // значение по умолчанию 50 this › rate = 0; } String *GetCity() // Строка { return pcity; } String *GetName() // Строка { return pname; } int GetNumber() { return number; } void SetNumber(int val) { number = val; } Decimal GetRate() // Десятичное число { x return rate; } void SetRate(Decimal val) // Десятичное число { rate = val; } void RaisePrice(Decimal amount) // Десятичное количество { rate = rate+1; } };