Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори JAVA.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.34 Кб
Скачать

16. Пакети в Java

Програма на Java являє собою набір пакетів (packages). Кожен пакет може включати вкладені пакети, тобто вони утворюють ієрархічну систему.

Крім того, пакети можуть містити класи та інтерфейси і таким чином групують типи. Це необхідно відразу для кількох цілей. По-перше, чисто фізично неможливо працювати з великою кількістю класів, якщо вони "звалені в купу". По-друге, модульна декомпозиція полегшує проектування системи. До того ж, як буде показано нижче, існує спеціальний рівень доступу, що дозволяє типам з одного пакету більш тісно взаємодіяти один з одним, ніж з класами з інших пакетів. Таким чином, за допомогою пакетів проводиться логічне групування типів. З ООП відомо, що велика зв'язність системи, тобто середня кількість класів, з якими взаємодіє кожний клас, помітно ускладнює розвиток і підтримку такої системи. Використовуючи пакети, набагато простіше організувати ефективну взаємодію підсистем один з одним.

Нарешті, кожен пакет має свій простір імен, що дозволяє створювати однойменні класи в різних пакетах. Таким чином, розробникам не доводиться витрачати час на вирішення конфлікту імен.

Елементи пакету

Ще раз повторимо, що елементами пакету є вкладені пакети і типи (класи та інтерфейси). Однойменні елементи заборонені, тобто не може бути однойменних класу і інтерфейсу, або вкладеного пакету і типу. В іншому випадку виникне помилка компіляції.

Наприклад, в JDK 1.0 пакет java містив пакети applet, awt, io, lang, net, util і не містив жодного типу. У пакет java.awt входив вкладений пакет image і 46 класів і інтерфейсів.

Складене ім'я будь-якого елементу пакету - це складене ім'я цього пакету плюс просте ім'я елемента. Наприклад, для класу Object в пакеті java.lang складовим ім'ям буде java.lang.Object, а для пакета image в пакеті java.awt - java.awt.image.

Ієрархічна структура пакетів була введена для зручності організації пов'язаних пакетів, однак вкладені пакети, або сусідні, тобто вкладені в один і той же пакет, не мають ніяких додаткових зв'язків між собою, крім обмеження на розбіжність імен. Наприклад, пакети space.sun, space.sun.ray, space.moon і factory.store абсолютно "рівні" між собою і типи одного з цих пакетів не мають ніякого особливого доступу до типів інших пакетів.

Платформна підтримка пакетів

Найпростішим способом організації пакетів і типів є звичайна файлова структура. Розглянемо виразний приклад, коли всі пакети, вихідний і бінарний код розташовуються в одному каталозі і його підкаталогах.

У цьому кореневому каталозі повинна бути папка java, відповідна основного пакету мови, а в ній, у свою чергу, вкладені папки applet, awt, io, lang, net, util.

Припустимо, розробник працює над моделлю сонячної системи, для чого створив класи Sun, Moon і Test та розташував їх у пакеті space.sunsystem. У такому випадку в кореневому каталозі повинна бути папка space, відповідна однойменним пакету, а в ній - папка sunsystem, в якій зберігаються класи цього розробника.

Як відомо, вихідний код розташовується у файлах з розширенням. Java, а бінарний - з розширенням Class. Таким чином, вміст папки sunsystem може виглядати наступним чином:

Moon.java

Moon.class

Sun.java

Sun.class

Test.java

Test.class

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]