<<
>>

Пространства имен

Следует отметить важное нововведение в языке Delphi, вызванное приспособле­нием его для нужд платформы .NET.

Стандартным контейнером типов в Delphi является модуль (unit). В .NET реали­зована другая система организации хранения типов — пространства имен.

Необ­ходимость работы с классами .NET потребовала введения в Delphi поддержки про­странств имен. В отличие от модулей, пространства имен имеют иерархическую структуру. Наличие иерархии пространства имен позволяет исключить неодноз­начность в определении одноименных типов данных.

В Delphi 8 файл проекта неявно объявляет новое пространство имен, называемое пространством имен проекта по умолчанию (project default namespace). Например, следующая строка объявляет пространство имен MyProgram:

program MyProgram:

Модуль может иметь пространство имен, вложенное в пространство проекта, или явно объявить собственное пространство имен. Пространство имен модуля объяв­ляется в его заголовке, например, следующий код объявляет пространство имен Myllnit:

unit MyUnit;

Поддержка иерархии пространства имен обеспечивается разделением точкой ча­стей иерархии: unit MyNamespace.MyUnit:

В данном примере объявлено пространство имен MyUnit, вложенное в простран­ство имен MyNamespace.

При этом файл, в котором сохраняется модуль, будет на­зываться MyNamespace. MyUnit.pas. Глубина иерархии пространства имен не ограни­чена.

По умолчанию, если имя модуля не содержит полного пути иерархии, то он считается вложенным в пространство имен проекта. При этом в имя файла мо­дуля не добавляется полный путь пространства имен проекта. Однако резуль­татом компиляции такого модуля станет файл, содержащий в имени полный путь иерархии и имеющий расширение .cduil. Рассмотрим вышесказанное на простом примере. Допустим, что у нас есть проект MyProgram, содержащий мо­дуль MyUnit. Тогда модуль получит пространство имен MyProgram.MyUnit, назы­ваться файл модуля станет MyUnitl.pas, а компилироваться модуль будет в файл MyProgram. MyUnit.dcuil.

Регистр символов в имени пространства имен не учитывается.

Пространство имен может иметь псевдоним (alias) — короткое название, объяв­ленный после ключевого слова as:

uses MyCompany.VeryDescriptiveUnitName as MainUnit:

В данной строке объявлен псевдоним MainUnit для пространства имен MyCompa­ny. VeryDescriptiveUnitName.

При сборке проекта компилятор использует следующий порядок поиска про­странств имен.

1. Текущее пространство имен модуля.

2. Пространство имен проекта.

3. Пространства имен, перечисленные после ключевого слова namespaces в объяв­лении проекта.

4. Пространства имен, прописанные при настройке компилятора.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Пространства имен:

  1. Два пространства
  2. ПРОСТРАНСТВО: ВОСПРИЯТИЕ
  3. ПРОСТРАНСТВО: ВОСПРИЯТИЕ: НАРУШЕНИЕ
  4. ПРОСТРАНСТВО СЕМАНТИЧЕСКОЕ СУБЪЕКТИВНОЕ
  5. Часть I Пространство движения
  6. 5.10.1. Создание пространства для ответа
  7. ФАЗИРОВАНИЕ ПРОСТРАНСТВА
  8. Утренняя медитация от возлюбленной Сарасвати. Исцеление пространства.
  9. ЛЕКЦИЯ 11 2.2.3. Структура городского пространства
  10. 5.3. КАК ОСВОБОДИТЬ ПРОСТРАНСТВО ДЛЯ СЮРПРИЗА
  11. Структурирование консультативного пространства
  12. Упражнение для восприятия физических пространств
  13. Упражнение СОЗДАНИЕ СВЯЩЕННОГО ПРОСТРАНСТВА
  14. 3.11.12. Метод пространства - времени
  15. РАБОТА С ПРОСТРАНСТВОМ И ВРЕМЕНЕМ.
  16. "Вторжение в личное пространство"
  17. 4. Европейское правовое пространство