1.3 Пакеты в Java
Понятие о пакетах:
-
Способ логической группировки классов.
-
Комплект ПО, могущий распространяться независимо и применяться в
сочетании с другими пакетами.
-
Членами пакетов являются:
1.
классы;
2.
интерфейсы;
3.
вложенные пакеты;
4.
дополнительные файлы ресурсов.
Функциональность пакетов
-
Позволяют группировать взаимосвязанные классы и интерфейсы в
единое целое.
-
Способствуют созданию пространств имен, позволяющих избежать
конфликтов идентификаторов, относящихся к различным типам.
-
Обеспечивают дополнительные средства защиты элементов кода.
-
Формируют иерархическую систему.
Способы реализации и доступ к пакетам:
1.
Пакеты могут быть реализованы:
–
в виде структуры каталогов с файлами классов,
–
в виде jar-архива.
2.
Путь к используемым пакетам указывается:
–
непосредственно при запуске JVM,
–
через
переменную
окружения
CLASSPATH
(по умолчанию
CLASSPATH
="").
19
1.4 Правила именования и лексика языка
Понятие имени:
Имена задаются посредством идентификаторов, указывают на компоненты
программы. Имена бывают простые и составные. Пространства имен подразделяется
на:
–
пакеты
–
типы
–
поля
–
методы
–
локальные переменные и параметры
–
метки
Понятие модуля компиляции:
Модуль компиляции хранится в
.java
файле и является единичной порцией
входных данных для компилятора. Состоит из:
-
объявления пакета;
package mypackage;
-
выражений импортирования;
import java.net.Socket;
import java.io.*;
-
объявлений верхнего уровня – классов и интерфейсов.
Объявление пакета:
-
первое выражение в модуле компиляции (например, для файла
java/lang/Object.java);
-
package java.lang;
20
-
при отсутствии объявления пакета модуль компиляции принадлежит
безымянному пакету (не имеет вложенных пакетов);
-
пакет доступен, если доступен модуль компиляции с объявлением пакета;
-
ограничение на доступ к пакетам нет.
Выражения импорта:
-
доступ к типу из данного пакета – по простому имени типа;
-
доступ к типу из других пакетов – по составному имени пакета и имени
типа:
1.
import-выражения упрощают доступ:
2.
импорт одного типа (
import java.net.URL;
)
3.
импорт пакета с типами (
import java.net.*;
)
–
попытка импорта пакета, недоступного на момент компиляции, вызовет
ошибку;
–
дублирование импорта игнорируется;
–
нельзя импортировать вложенный пакет;
–
при импорте типов пакета вложенные пакеты не импортируются;
Алгоритм работы компилятора при анализе типов:
1.
выражения, импортирующие типы;
2.
другие объявленные типы;
3.
выражения, импортирующие пакеты.
Если тип импортирован явно невозможны:
1.
объявление нового типа с таким же именем;
2.
доступ по простому имени к одноименному типу в текущем пакете.
Импорт пакета не мешает объявлять новые типы или обращаться к имеющимся
типам текущего пакета по простые имена. Импорт конкретных типов дает
возможность при прочтении кода сразу понять, какие внешние типы используются.
Объявление верхнего уровня:
Объявление в языке Java производится следующим образом, показанном на
21
рисунке 1.5.
Рисунок 1.5 – Объявление верхнего уровня
Существуют следующие правила объявления:
–
область видимости типа – пакет;
–
доступ к типу извне его пакета:
1.
по составному имени,
2.
через выражения импорта.
–
разграничение (модификаторы) доступа;
–
в модуле компиляции может быть максимум один
public
тип;
–
имя публичного типа и имя модуля компиляции должны совпадать;
–
другие не-
public
типы модуля должны использоваться только внутри
текущего пакета;
–
как правило, один модуль компиляции содержит один тип.
Конвенция кода Java (или правила именования):
–
Пакеты:
java.lang, javax.swing, ru.mtu.mirea.isbo
–
Типы:
Student,
ArrayIndexOutOfBoundException
Cloneable,
Runnable, Serializable
–
Поля:
value, enabled, distanceFromShop
–
Методы:
getValue, setValue, isEnabled, length, toString
22
–
Поля-константы:
PI, SIZE_MIN, SIZE_MAX, SIZE_DEF
–
Локальные переменные.
Пример программы на Java представлен на рисунке 1.6.
Рисунок 1.6 – Пример программы на языке Java
Лексика языка Java состоит из следующих элементов:
–
Структура исходного кода и его элементы.
–
Типы данных.
–
Описание классов:
1.
Общая структура,
2.
Поля,
3.
Методы,
4.
Конструкторы,
5.
Блоки инициализации.
–
Точка входа программы.
Кодировка
–
Java ориентирован на Unicode;
–
первые 128 символов почти идентичны набору ASCII;
–
символы Unicode задаются с помощью escape-последовательностей
\
u262f, \uu2042, \uuu203d;
–
Java чувствителен к регистру.
|