4.3. ПАКЕТЫ

Пакетом называется совокупность классов, связанных между собой по смыслу. Текст программы может состоять из нескольких пакетов. Каждый пакет должен храниться в отдельном исходном файле. Каждый исходный файл программы считается отдельным пакетом.

Каждый пакет обладает собственной областью видимости имён классов. Таким образом, имена классов, используемые внутри пакета, не видны из других пакетов до тех пор, пока не будут импортированы в эти пакеты явным образом, с помощью команд импорта. Целевое утверждение (проект) программы может входить в состав любого пакета.

В общем случае, каждый пакет включает заголовок пакета, команды импорта, а также произвольное количество классов и (возможно) целевое утверждение (проект):

 пакет = [ заголовок_пакета ] команды_импорта программа
 заголовок_пакета = package имя_пакета ":"
 имя_пакета = строковый_литерал

В начале исходного файла может быть указан заголовок пакета, определяющий имя пакета. Именем пакета является строковый литерал, представляющий собой имя соответствующего исходного файла без расширения. В качестве имени пакета допускается использование:

  1. Полного имени файла, включающего все подкаталоги.
  2. Укороченного имени файла, если пакет расположен в одном из подкаталогов системного каталога, который должен быть определён в конкретной реализации языка. В этом случае имя пакета должно включать лишь подкаталоги, вложенные по отношению к системному каталогу.

В качестве разделителя имён подкаталогов в имени пакета допускается использование как прямой "/", так и обратной "\\" дробной черты (реализация языка должна одинаково интерпретировать оба варианта). Имя пакета должно соответствовать реальному имени исходного файла. Несоответствие имени транслируемого пакета, не позволяющее однозначно сопоставить его с именем исходного файла, является синтаксической ошибкой. Если заголовок пакета не задан, имя пакета определяется автоматически по имени соответствующего исходного файла.

Команда импорта делает видимым в пакете имя класса (заданное после ключевого слова import), определённого в некотором другом пакете (имя которого указано после ключевого слова from). Класс, заданный в команде импорта, называется импортируемым классом. Действия, осуществляемые командой импорта называются импортом класса.

 команды_импорта = { команда_импорта }
 команда_импорта =
    import импортируемое_имя from имя_пакета ";"
 импортируемое_имя = имя_класса [ as имя_класса ]

Если в составе команды импорта задано ключевое слово as, импортируемый класс будет видим в текущем пакете под именем, заданным после ключевого слова as. Если ключевое слово as не задано, импортируемый класс будет видим под своим собственным именем.

Последовательность команд импорта, которая делает видимыми некоторые импортируемые классы под одним и тем же именем, является синтаксической ошибкой. Использование в пакете нескольких команд импорта, которые делают видимым один и тот же класс из одного и того же пакета, является синтаксической ошибкой.

Пример. Правильно построенные команды импорта:

import 'Sphere' as 'Marker' from "VRML/Shapes";
import 'Analyzer' from "My\\Features";

Ссылки: заголовок пакета 4.3, имя класса 4.1, имя пакета 4.3, исходный файл 4.4, класс 4.1, ключевое слово 2.1.2, команда импорта 4.3, программа 4, проект 4.2, строковый литерал 3.1, as 2.1.2, from 2.1.2, import 2.1.2, package 2.1.2.


Следующий: 4.4. ТРАНСЛЯЦИЯ ИСХОДНЫХ ФАЙЛОВ
Предыдущий: 4.2. ПРОЕКТ


4. СТРУКТУРА ПРОГРАММЫ
КОРНЕВАЯ СТРАНИЦА
ОГЛАВЛЕНИЕ
СПИСОК ПОНЯТИЙ ЯЗЫКА (ИНДЕКС)