
- •1. Історія створення Java.
- •2. Історія розвитку Java
- •3.Опишіть поняття “об’єкт”
- •4. Опишіть поняття “клас”
- •5. Опишіть типи відношень між класами
- •6. Переваги і недоліки об’єкто-зорієнтованого програмування
- •7. Опишіть правила побудови ідентифікаторів мови Java, наведіть приклади
- •8. Поняття літералів. Приклади
- •9. Оператори та операції в мові Java
- •11. Типи даних у мові Java
- •12. Клас Object
- •13. Клас String
- •14. Клас Class
- •15. Імена в Java
- •16. Пакети в Java
- •17. Область видимості імен
- •18.Об’ява класів у Java
- •19.Приведення типів у Java
- •21.Приведення посилальних типів даних.
- •22.Приведення до рядка.
- •23.Заборонені приведення.
- •24.Застосування приведення типів.
- •25.Статичні елементи.
- •26. Ключові слова this і super.
- •27. Ключове слово abstract.
- •28. Поняття інтерфейсів.
- •29. Поліморфізм.
- •30. Масиви в Java.
- •31. Приведення типів для масивів.
- •32. Клонування масивів.
- •33. Керування ходом виконання програми.
- •34. Нормальне і перерване виконання операторів.
- •35. Блоки і локальні змінні.
- •36. Порожній оператор.
- •38. Синтаксис оператора if.
- •39. Синтаксис оператора switch.
- •40. Керування циклами.
- •41.Синтаксис оператора while
- •42.Ситаксис оператора do
- •43.Синтаксис оператора for
- •44.Оператори break I continue
- •45.Іменовані блоки
- •46. Оператор return
- •47. Оператор synchronized
- •48. Помилки при роботі програми. Виняткові ситуації
- •48. Помилки при роботі програми. Виняткові ситуації
- •49.Причини виникнення помилок
- •50.Обробки виняткових ситуацій
- •51.Конструкція try-catch-finally
- •52.Використання оператора throw
- •53.Виняткові ситуації, які перевіряються і які не перевіряються
- •54.Створення класів користувача обробки виняткових ситуацій
- •55.Поняття потокв в Java
- •56.Базові класи для роботи з потоками
- •57.Класс Thread
- •58. Інтерфейс Runnable
- •60. Потоки-демони
- •61.Синхронізація роботи потоків.
- •62.Класи обгортки для примітивних типів.
- •63.Клас Math.
- •66.Клас Calendar.
- •67.Клас TimeZone.
- •68. Колекції java
- •69.Інтерфейс Collection.
- •70.Інтерфейс Set.
- •71.Інтерфейс List.
- •72.Інтерфейс Map.
- •73.Інтерфейс SortedSet.
- •74.Інтерфейс SortedMap.
- •75.Інтерфейс Iterator.
- •76.Конкретні класи колекцій.
- •77.Клас Properties.
- •78. Інтерфейс Comparator.
- •79.Клас BitSet.
- •80.Клас Random.
- •81.Система введення/виведення. Потоки даних.
- •82.Класи реалізації потоків даних.
- •84. Робота із файловою системою.
- •59. Робота із пріоритетами потоків
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