Г. Шилдт - Полный справочник по C++ (1109478), страница 147
Текст из файла (страница 147)
Часть к. Приложения на языке С++ Дополнительные ключевые слова Для поддержки технологии .й(ЕТ компания М)сгозогг ввела в язык С++ новые ключевые слова. Ьох Еьпаьзу ЕлеетЕасе рторетту еуреоеЕ аЪаетасе етгелт ЕдепеЕЕЕет рьл ету свае вез адате пс попс , аеаъед тгаХие Опишем каждое из эти слов. Ключевое слово аЬ|1гас1 Используется в сочетании с ключевым словом яс для указания абстрактного управляемого класса. Класс, имеющий атрибут атзаетасе, не имеет обьектов. Кроме того, такой класс не обязан содержать чисто виртуальную функцию. Ключевое слово Ьох Погружает значение в объект.
Это позволяет использовать значения вместо объектов класса яуаеепт тоьзест, являющегося базовым классом лля всех объектов, создаваемых по технологии .НЕТ. Приложение А. Расширение языка С++ для платформы . МЕТ ехнология .)чЕТ (.НЕТ ГгаптегчогЦ, разработанная компанией М(сгозой, определя- Т ст среду разработки и выполнения распределенных приложений, использующих компоненты. Она позволяет объединять разные языки программирования, обеспечивает безопасность и машинонезависимосгь программ, а также создает общую платформу программирования под управлением системы %гппоова Несмотря на то что технология .г(ЕТ появилась лишь нелавно, в ближайшем будущем она, без сомнения, станет основной средой программирования на языке С+-ь. Технология .НЕТ обеспечивает управляемую среду выполнения программ. Программы, предназначенные лля среды .14ЕТ, не компилируются в исполняемый объектный код. Вместо этого они транслируются в промежуточный язык М(сгозой )пгсгптег)1ате 1лпяиаяе (МВП ).
а затем выполняются под управлением срелы Сснпптоп Еапяиаяе Коптнпе. Управляемое выполнение является механизмом, поддерживающим основные преимушества, преллагаемые технологией .НЕТ. Для того чтобы воспользоваться преимушествами технологии .НЕТ, в программе на языке С++ необходимо применять нестандартные ключевые слова и директивы препроиессора, введенные компанией М)сгозой. Следует иметь в виду, что эти расширения не являются частью стандарта языка С++.
Таким образом, кол, использующий эти ключевые слова и директивы, не является машинонезависимым. Описание технологии .НЕТ и способов ее применения выходит далеко за рамки нашей книги. (Эта тема лля отлельной и доволыю толстой книги!) Однако мы сделаем краткий обзор расширений языка С++, связанных с этой технологией. При этом мы будем предполагать, что читатели уже знакомы с основами технологии .НЕТ.
Ключевое слово де!еяа1е Описывает представителя, инкапсулирующего указатель на функцию в управляемом классе (т.е. в классе с модификатором яс). Ключевое слово е)(еп1 Описывает функцию, представляюшую событие. Задает лишь прототип этой функции. Ключевое слово йпа!! у Является дополнением к стандартному механизму обработки исключительных ситуаций в языке С++. Оно используется для обозначения блока кода, который выполняется после выхода из блока екуГсессн. Блок вьпаззу выполняется в любом случае. Ключевое слово Яс Описывает управляемый класс. Аббревиатура яс расшифровываезся как *'яагЬаде со!(есг(оп" (уборка мусора) и означает, что объекты этого класса уничтожаются автоматически, когда становятся ненужными. Объект считается ненужным, если на него нет ни одной ссылки. Объекты класса, имеюшего спецификатор пс, должны создаваться с помошью оператора пеи.
Массивы, указатели и интерфейсы глюке могут иметь спецификатор яс. Ключевое слово Ыеп66ег Позволяет использовать ключевое слово языка С++ в качестве идентификатора, Это специальное расширение языка С++, которое очень редко используется. Ключевое слово (п1еИасе Описывает класс, действуюший как интерфейс. В интерфейсном классе ни одна функция не имеет тела. Все функции, входящие в интерфейсный класс, неявно считаются чисто виртуальными функциями. Таким образом, интерфейс, по сушеству, является абстрактным классом, в котором ни одна функция не имеет реализации. Ключевое слово пояс Описывает неуправляемый класс. Поскольку по умолчанию все классы считаются неуправляемыми, это ключевое слово обычно не используется. Ключевое слово р(п Описывает указатель, фиксируюший ячейку памяти, в которой расположен объект, на который он ссылается.
Иначе говоря, "пришпиленный" (р(ппег() обьект нельзя удалить из памяти с помогдью механизма уборки мусора. В результате механизм уборки мусора не действует на указатель, имеющий модификатор рз.п. Ключевое слово ргорег~у Описывает свойство, представляюшее собой функцию-член„которая может извлекать и задавать значение переменной-члена. Такие функции-члены позволяют легко контролировать доступ к закрытым и защищенным членам. Приложение А. Расширение языка С++ для платформы .НЕТ Ключевое слово веа!ед Предотвращает наследование класса. С его помощью можно также предотвразить замещение виртуальной функции, Ключевое слово 1гу сав1 Предусматривает попытку привести выражение к другому типу.
Если приведение невозможно, генерируется исключительная ситуация типа взгвееес:хсее11есеаевхсереьос. Ключевое слово 1урео$ Позволяет получить объект, инкапсулирующий информацию о заданном типе. Зтот объект является экземпляром класса вуеееег г туре. Ключевое слово чайе Описывает класс, представленный как тип значения. Тип значения хранит свои собственные значения. Он отличается от класса типа ис, объект которого должен создаваться с помощью оператора пем.
На класс с атрибутом чеъие не распространяется действие механизма уборки мусора. Расширение директив препроцессора Для поддержки технологии .)чЕТ компания Мгсгоаой предусмотрела директиву препроцессора Есв1ои, КОЮРая используется для импорта метаданных в программу. Мета- данные содержат информацию о типе и членах, форма которой не зависит от конкретного языка программирования. Таким образом, метаданные облегчают поддержку многоязычного программирования. Все управляемые программы на языке С+ должны содержап заголовок <евсох11Ъ.Е11>, содержащий метааанные для платформы .)чЕТ.
Технология .НЕТ предусматривает две прагмы. (Прагмы используются в сочетании с директивой препроцессора ерхеиев.) Первая прагма, месхиев, задает управляемый код. Вторая прагма, исеесесее, определяет неуправляемый (т.е. обычный) код. Эти прагмы можно использовать в программе для выбора фрагментов управляемого и неуправляемого кода. Атрибут айпЬи1е Компания М(симой определила атрибут ееехьЬсее, который используется для объявления другого атрибута. Компилирование управляемых программ на языке С++ Пока создавалась зта книга, технологию .НЕТ поддерживал только адин компилятор — М1сгозой ЪЪца( Бгцг)(о .НЕТ. Для компилирования управляемого кода следует применять опцию /с1х, настраивающую код на систему Соппцоп Елпяцаяе йцп!ипе.
Приложение А. Расширение языка С++ для платформы .НЕТ д олгг>е время я интересовался робототехникой, особенно языками управления гю- ботами. Много лет назад я даже разработал и реализовал язык управления небольшими экспериментальными роботами. Хотя я больше не работаю профессионально в этои области, она по-прежнему очень интересует меня С течением времени средства управления роботами сделали большой шаг вперед.
Мы стоим на пороге эры робо~о~ехники Уже существуют роботы, стри1ушис шзоны и моющис полы. Роботы стали частью автомобилеи и работают в условиях, опасных для человсческои жизни. Реальнос~ью стали даже воснныс роботы. В перспективе нас ожидаю~ еще более интересные разработки.
По мере внедрения роботов в повседневную жизнь возрастает количество программистов, создающих программы управления роботами, цричсл1 большая часть этих программ написана на языке С+ах Язык С+-ь представляет собои естественный выбор, поскольку программы управления роботами должны быть эффективными Особенно это относится к низкоуровневым процедурам управления двигателями, а также системам технического зрения, где необходима высокая скорость работы. Хотя нскоторыс части робототелнических подсистем, например, процессор расцознавания естественного языка, можно написать на других языках, скажем, на Сн, низкоуровневыи код, лучше писать на языке С++.
Таким образом, язык С++ и робототехника идут рука об руку. Если читателей интересует робототехника, особенно создание экспериментальных роботов, им будет полезно ознакомиться с роботом, представленным на рис. Блй Этот робот сделал я сам. Он интересен по нескольким причинам. Во-первых, он снабжен бортовым микропроцессором, обеспечивающим выполнение основных функции управления двиштслем и работу дпчиков обратной связи. Во-вторых, он имеет устройство для приема и передачи информации на базе микросхемы В5-232, которое позволяет ему получать команды от главного компьютера и возвращать результаты.
Благодаря этому лолходу существует возможносп выполнять интенсивные вычисления на удаленном компьютере, не перегружая робот дополнительными устройствами. В-третьих, он имеет видеокамеру, соединенную с беспроводным лерслатчиком видеосигналов. Рис. БП. Простой, но эффективный экспериментальный робот (фото Кена Каизера (Кеп Кайег)) Приложение Б.