Программа Hotel (Гостиница)
Приведенный код компилируется затем в сборку NET, называющуюся Hotel.dll Это можно сделать в Visual Studio NET, а можно – с помощью командной строки Если вы используете командную строку, то должны определить соответствующее окружение Простейший способ сделать это – открыть командное окно, выбрав пункты меню Start (Пуск) › Programs (Программы) › Microsoft Visual Studio NET 7 › Visual Studio NET Tools › Visual Studio NET Command Prompt. В командной строке, приведенной ниже, компилируется исходный файл Hotel.cpp:
cl /CLR Hotel.cpp /LD
Параметр /LD указывает, что компоновщик должен создать динамически подключаемую библиотеку (DLL), а не ЕХЕ-файл Класс Hotel (Гостиница) содержит частные (private) данные, два конструктора для инициализации данных и несколько общедоступных (public) методов.
Для того чтобы продемонстрировать возможность использования в NET разных языков, следующая программа, которая тестирует созданный ранее компонент Hotel (Гостиница), реализована на С#. Можно либо самостоятельно ее реализовать с использованием Visual Studio NET, либо просто открыть готовое решение, находящееся в папке HotelRes\TestHotel. Для создания программы необходимо создать проект консольного приложения на С# (С# Console Application) TestHotel, добавить исходный код, затем ссылку на сборку Hotel (Гостиница), после чего скомпилировать и запустить программу.
Создание консольного приложения на С# (С# Console Application)
Создайте проект консольного приложения С#, называющийся TestHotel:
- Откройте Visual Studio NET
- Выберите пункт меню File › New › Project (Файл › Создать › Проект) для того чтобы вызвать диалог New Project (Создание проекта).
- Выберите в списке Project Type (Тип проекта) Visual C# Projects (Проекты на Visual C#).
- Выберите в списке Template (Шаблон) Console Application (Консольное приложение)
- Введите "TestHotel" в поле Name (Название)
- Задайте папку, в которой будет сохранен проект
- Щелкните на кнопке ОК для того чтобы закрыть диалог New Project (Создание проекта) и создать проект.
Добавьте исходный код: - Щелкните правой кнопкой на файле Class.cs в окне Solution Explorer (Поиск решения) и выберите в меню пункт Rename (Переименовать)
- Введите новое имя исходного файла – TestHotel.cs
- Дважды щелкните на файле TestHotel.cs в окне Solution Explorer (Поиск решения) для того чтобы открыть файл для редактирования.
- Добавьте в файл TestHotel.cs соответствующий исходный код.
Добавьте ссылку на сборку Hotel (Гостиница): - Выберите пункт меню Project › Add Reference (Проект › Добавить ссылку).
- Щелкните на кнопке Browse (Обзор)
- Найдите папку, в которой хранится сборка Hotel (Гостиница).
- Дважды щелкните на сборке Hotel.dll.
- Щелкните на кнопке ОК.
Скомпилируйте и запустите проект: - Выберите пункт меню Build › Build (Сборка › Собрать)
- Нажмите сочетание клавиш CTRL + F5 для запуска программы без отладчика.
//TestHotel.cs using System; JI использование Системы; public class TestHotel // общедоступный класс TestHotel public static void Main() { Hotel generic = new Hotel (); // универсальная новая // Гостиница ShowHotel (generic); // универсальная Hotel ritz = new Hotel("Atlanta", "Ritz", 100, 95); // Роскошная гостиница = новая Гостиница // ("Атланта", "Роскошь", 100, 95), ShowHotel(ritz); ritz.RaisePrice(50m); ritz.SetNumber(125); ShowHotel(ritz); ; } private static void ShowHotel (Hotel hotel) // частный статический ShowHotel (Гостиница гостиница) { Console.WriteLine( "{0} {1}: number = {2}, rate = {3:C}", hotel.GetCity(), hotel.GetName(), // гостиница hotel.GetNumber(), hotel.GetRate()); // гостиница } }
Обратите внимание, что Visual Studio автоматически копирует Hotel.dll в ту же папку, в которую помещает файл TestHotel.exe. Так происходит потому, что в проект С# была добавлена ссылка на данную сборку. Это удобно, ведь если запустить программу-клиент, а общеязыковая среда выполнения CLR не найдет соответствующей сборки, возникнет исключение времени выполнения. Приведем строки, выведенные на экран программой, созданной на С# с компонентом на C++:
number = 50, rate = $0.00 Atlanta Ritz: number = 100, rate = $95.00 Atlanta Ritz: number = 125, rate = $96.00