Пакети та їх імпортування

Вивчення пакетів, які використовуються в Java для створення фізичної та логічної структури класів. Файли та їх імпортування. Тексти процедур опрацювання подій в Java. Запуск програми та перевірка її роботи. Розгляд модулів компіляції як текстових файлів.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 16.04.2017
Размер файла 798,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Національний авіаційний університет

Кафедра телекомунікаційних систем

Курсова робота з дисципліни «Інформатика»

на тему:

«Пакети та їх імпортування»

Зміст

1. Опис предметної області

2. Теоретичні відомості з теми : «Приведення типів між класами»

3. Основна частина

3.1 Розробка 5 тестових запитань у відповідності до теми

3.2 Опис елементів, що використовуються в проекті

3.3 Тексти процедур опрацювання подій

3.4 Запуск програми та перевірка її роботи

Висновки

1. Опис предметної області

В даній курсовій роботі я детальніше розкрию тему: «Пакети та їх імпортування».

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

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

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

2. Теоретичні відомості з теми : «Пакети та їх імпортування»

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

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

Наприклад, в 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

Іншими словами, вихідний код класів

space.sunsystem.Moon

space.sunsystem.Sun

space.sunsystem.Test

зберігається в файлах

space \ sunsystem \ Moon.java

space \ sunsystem \ Sun.java

space \ sunsystem \ Test.java

а бінарний код - у відповідних. class-файлах. Зверніть увагу, що перетворення імен пакетів у файлові шляху зажадало заміни роздільника. (Точки) на символ-роздільник файлів (для Windows це зворотний слеш \). Таке перетворення може виконати як компілятор для пошуку вихідних текстів та бінарного коду, так і віртуальна машина для завантаження класів та інтерфейсів.

Зверніть увагу, що було б помилкою запускати Java прямо з папки space \ sunsystem і намагатися звертатися до класу Test, незважаючи на те, що файл-опис лежить саме в ній. Необхідно піднятися на два рівні каталогів вище, щоб Java, побудувавши шлях з назви пакунка, змогла знайти потрібний файл.

Крім того, важливо, що Java завжди розрізняє регістр ідентифікаторів, а значить, назви файлів і каталогів повинні точно відповідати запрограмованим іменах. Хоча в деяких випадках операційна система може забезпечити доступ, незважаючи на регістр, при зміні обставин розбіжності можуть призвести до збоїв.

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

Які файли доступні для утиліт Java SDK (компілятора, інтерпретатора і т.д.), встановлюється на рівні операційної системи, адже утиліти - це звичайні програми, які виконуються під управлінням ОС і, звичайно, слідують її правилами. Наприклад, якщо пакет містить один тип, але описуючий його файл недоступний активному користувачу ОС для читання, для Java цей тип і цей пакет не будуть існувати.

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

Тому Java використовує спеціальну змінну оточення, яка називається classpath. Аналогічно тому, як мінлива path допомагає системі знаходити і завантажувати динамічні бібліотеки, ця змінна допомагає працювати з Java-класами. Її значення повинно складатися із шляхів до каталогів або архівів, розділених крапкою з комою. З версії 1.1 підтримуються архіви типів ZIP і JAR (Java ARchive) - спеціальний формат, розроблений на основі ZIP для Java.

Наприклад, змінна classpath може мати таке значення:

C: \ java \ classes; d: \ lib \ 3Dengine.zip;

d: \ lib \ fire.jar

У результаті всі зазначені каталоги і вміст всіх архівів "додається" до вихідного кореневого каталогу. Java в пошуках класу буде шукати його за описаним вище правилом у всіх зазначених папках і архівах по порядку. Зверніть увагу, що першим у змінній вказаний поточний каталог (представлений точкою). Це робиться для того, щоб пошук завжди починався з вихідного кореневого каталогу. Звичайно, такий запис не є обов'язковим і робиться на розсуд розробника.

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

Тому до даної змінної середовища оточення необхідно ставитися з особливою увагою. Корисно пам'ятати, що необов'язково встановлювати її значення відразу для всієї операційної системи. Його можна явно вказувати при кожному запуску компілятора або віртуальної машини як опцію, що, по-перше, ніколи не вплине на інші Java-програми, а по-друге, помітно спрощує пошук помилок, пов'язаних з некоректним значенням classpath.

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

Модуль компіляції

Модуль компіляції (compilation unit) зберігається в текстовому .java-файлі і є одиничною порцією вхідних даних для компілятора. Він складається з трьох частин:

· оголошення пакету;

· import-вирази;

· оголошення верхнього рівня.

Оголошення пакету одночасно вказує, якому пакету будуть належати всі декларовані нижче типи. Якщо даний вираз відсутній, значить, ці класи розташовуються в безіменному пакеті (інша назва - пакет за замовчуванням).

Import-вирази дозволяють звертатися до типів з інших пакетів по їх простим іменам, "імпортувати" їх. Ці висловлювання також необов'язкові.

Нарешті, оголошення верхнього рівня містять оголошення одного або декількох типів. Назва "верхнього рівня" протиставляє ці класи та інтерфейси, що розташовуються в пакетах, внутрішнім типам, які є елементами і розташовуються всередині інших типів. Як не дивно, ця частина також є необов'язковою, в тому сенсі, що в разі її відсутності компілятор не видасть помилки. Однак ніяких .сlass-файлів згенеровано теж не буде.

Доступність модулів компіляції визначається підтримкою платформи, тому що утиліти Java є звичайними програмами, які виконуються операційною системою за загальними правилами.

Розглянемо всі три частини більш докладно.

Оголошення пакету

Перший вираз в модулі компіляції - оголошення пакету. Воно записується за допомогою ключового слова package, після якого вказується повна назва пакету.

Наприклад, першим рядком (після коментарів) у файлі java / lang / Object.java йде: package java.lang;

Це одночасно слугує оголошенням пакету lang, вкладеного в пакет java, і вказівкою, що оголошений нижче клас Object знаходиться в даному пакеті. Так складається повне ім'я класу java.lang.Object.

Якщо цей вислів відсутній, то такий модуль компіляції належить безіменному пакету. Цей пакет за замовчуванням обов'язково повинен підтримуватися реалізацією Java-платформи. Зверніть увагу, що він не може мати вкладених пакетів, так як складене ім'я пакету має обов'язково починатися з імені пакета верхнього рівня.

Таким чином, найпростіша програма може виглядати наступним чином:

class Simple {

public static void main (String s [])

{ System.out.println ("Hello!"); }

}

Цей модуль компіляції буде належати безіменному пакету.

Пакет за замовчуванням був введений в Java для полегшення написання дуже невеликих або тимчасових програм, для експериментів. Якщо ж програма буде поширюватися для користувачів, то рекомендується розташувати її в пакеті, який, у свою чергу, повинен бути правильно названо. Угоди по іменування розглядаються нижче.

Доступність пакета визначається за доступністю модулів компіляції, у яких він оголошується. Точніше, пакет доступний тоді і тільки тоді, коли виконується будь-яке з наступних двох умов:

· доступний модуль компіляції з оголошенням цього пакета;

· доступний один із вкладених пакетів цього пакета.

Таким чином, для наступного коду:

package space.star;

class Sun {}

якщо файл, який зберігає цей модуль компіляції, доступний Java-платформі, то пакети space і вкладений у нього star (повна назва space.star) також стають доступні для Java.

Якщо пакет доступний, то область видимості його оголошення - всі доступні модулі компіляції. Простіше кажучи, всі існуючі пакети доступні для всіх класів, ніяких обмежень на доступ до пакетів в Java немає.

Потрібно, щоб пакети java.lang і java.io, а значить, і java, завжди були доступні для Java-платформи, оскільки вони містять класи, необхідні для роботи будь-якої програми.

Також існують рівні доступу до пакету. За умовчанням рівень доступу до членів класу у Scala є загальнодоступним (Public).

1. Public - члени класу доступні з усіх пакетів.

2. Protected- члени класу доступні всім підкласам і неподклассам з того ж пакета.

3. Без модифікатора - члени класу доступні тільки в цьому пакеті.

4. Private - члени класу доступні тільки в тому ж класі.

Імпорт-вирази

Як буде розглянуто нижче, область видимості оголошення типу - пакет, в якому він розташовується. Це означає, що всередині даного пакету допускається звернення до типу за його простим ім'ям. З усіх інших пакетів необхідно звертатися за складеним іменем, тобто повне ім'я пакету плюс просте ім'я типу, розділені крапкою. Оскільки пакети можуть мати досить довгі імена (наприклад, додатковий пакет у складі JDK1.2 називається com.sun.image.codec.jpeg), а тип може багаторазово використовуватися в модулі компіляції, таке обмеження може призвести до ускладнення вихідного коду і труднощам в розробці.

Для вирішення цієї проблеми вводяться import-вирази, які дозволяють імпортувати типи в модуль компіляції і далі звертатися до них за простими іменами. Існує два види таких виразів:

· імпорт одного типу;

· імпорт пакета.

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

Імпортери вирази мають ефект тільки всередині модуля компіляції, в якому вони оголошені. Всі оголошення типів вищого рівня, що знаходяться в цьому ж модулі, можуть однаково користуватися імпортованими типами. До імпортованим типам можливий і звичайний доступ по повному імені.

Вираз, що імпортує один тип, записується за допомогою ключового слова import і повного імені типу. Наприклад: import java.net.URL;

Такий вираз означає, що надалі в цьому модулі компіляції просте ім'я URL буде позначати однойменний клас з пакету java.net. Спроба імпортувати тип, недоступний на момент компіляції, викличе помилку. Якщо один і той же тип імпортується кілька разів, то це не створює помилки, а дубльовані вираження ігноруються. Якщо ж імпортуються типи з однаковими іменами простими з різних пакетів, то така ситуація породить помилку компіляції.

Вираз, що імпортує пакет, включає в себе повне ім'я пакету наступним чином. import java.awt .*;

Цей вираз робить доступними всі типи, що знаходяться в пакеті java.awt, за їх простому імені. Спроба імпортувати пакет, недоступний на момент компіляції, викличе помилку. Імпорт одного пакету багаторазово не створює помилки, дубльовані вираження ігноруються. Зверніть увагу, що імпортувати вкладений пакет не можна.

Наприклад:

// Приклад викличе помилку компіляції

import java.awt.image;

Створюється враження, що тепер ми можемо звертатися до типів пакету java.awt.image за спрощеним імені, наприклад, image.ImageFilter. Насправді приклад викличе помилку компіляції, так як дане вираження розцінюється як імпорт типу, а в пакеті java.awt відсутній тип image.

Аналогічно, вираз import java.awt .*;

не робить більш доступними класи пакету java.awt.image, їх необхідно імпортувати окремо.

Оскільки пакет java.lang містить типи, без яких неможливо створити жодну програму, він неявним чином імпортується в кожен модуль компіляції. Таким чином, всі типи з цього пакету доступні за їх простим імен без будь-яких додаткових зусиль. Спроба імпортувати даний пакет ще раз буде проігноровано.

Допускається одночасно імпортувати пакет і який-небудь тип з нього:

import java.awt .*;

import java.awt.Point;

Може виникнути питання, як же краще чинити - імпортувати типи окремо або весь пакет відразу? Чи є яка-небудь різниця в цих підходах?

Різниця полягає в алгоритмі роботи компілятора, який призводить кожне просте ім'я до повного. Він складається з трьох кроків:

спочатку проглядаються вираження, які імпортують типи;

потім інші типи, оголошені в поточному пакеті, у тому числі в поточному модулі компіляції;

нарешті, проглядаються вираження, які імпортують пакети.

Таким чином, якщо тип явно імпортований, то неможливо ні оголошення нового типу з таким же ім'ям, ні доступ по простому імені до однойменного типу в поточному пакеті.

Наприклад:

// Приклад викличе помилку компіляції

package my_geom;

import java.awt.Point; class Point {}

Цей модуль викличе помилку компіляції, так як ім'я Point в оголошенні вищого типу буде розглядатися як звернення до імпортованого класу java.awt.Point, а його перевизначати, звичайно, не можна.

Якщо в пакеті оголошений тип:

package my_geom;

class Point {}

то в іншому модулі компіляції:

package my_geom;

import java.awt.Point;

class Line {

void main () {

System.out.println (new Point ());

}

}

складається невизначена ситуація - який з класів, my_geom.Point або java.awt.Point, буде використовуватися при створенні об'єкта? Результатом буде: java.awt.Point [x = 0, y = 0]

Відповідно до правил, ім'я Point було трактовано на основі імпорту типу. До класу поточного пакету все ще можна звертатися по повному імені: my_geom.Point. Якщо б розглядався безіменний пакет, то звернутися до такого "перекритого" типу було б уже неможливо, що є додатковим аргументом до рекомендації розташовувати важливі програми в поіменованих пакетах.

Тепер розглянемо імпорт пакета. Його ще називають "імпорт на вимогу", маючи на увазі, що ніякої "завантаження" всіх типів імпортованого пакету відразу при вказівці імпортуючого вирази не відбувається, їх повні імена підставляються у міру використання простих імен в коді. Можна імпортувати пакет і задіяти тільки один тип (або навіть жодного) з нього.

Змінимо розглянутий вище приклад:

package my_geom;

import java.awt .*;

class Line {

void main () {

System.out.println (new Point ());

System.out.println (new Rectangle ());

}

}

Тепер результатом буде:

my_geom.Point @ 92d342

java.awt.Rectangle [x = 0, y = 0, width = 0, height = 0]

Тип Point знайшовся в поточному пакеті, тому компілятору не довелося виконувати пошук по пакету java.awt. Другий об'єкт породжується від класу Rectangle, якого не існує в поточному пакеті, зате він виявляється в java.awt.

Також коректний тепер приклад:

package my_geom;

import java.awt .*;

class Point {}

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

Унікальність імен пакетів

Оскільки Java створювався як мова, призначений для розповсюдження додатків через Internet, а додатки складаються зі структури пакетів, необхідно докласти деяких зусиль, щоб не стався конфлікт імен. Імена двох використовуваних пакетів можуть збігтися після значного часу після їх створення. Виправити такий стан звичайному програмісту буде вкрай важко.

Тому творці Java пропонують наступний спосіб унікального іменування пакетів. Якщо програма створюється розробником, у якого є Internet-сайт, або ж він працює на організацію, у якої є сайт, і доменне ім'я такого сайту, наприклад, company.com, то імена пакетів повинні починатися з цих же слів, виписаних у зворотному порядку : com.company. Подальші вкладені пакети можуть носити назви підрозділів компанії, пакетів, прізвища розробників, імена комп'ютерів і т.д.

Таким чином, пакет верхнього рівня завжди записується ASCII-літерами в нижньому регістрі і може мати одне з наступних імен:

· трьохбуквені com, edu, gov, mil, net, org, int (цей список розширюється);

· дволітерні, що позначають імена країн, такі як ru, su, de, uk та інші.

Якщо ім'я сайту суперечить вимогам до ідентифікаторів Java, то можна зробити наступні кроки:

· якщо в імені стоїть заборонений символ, наприклад, тире, то його можна замінити знаком підкреслення; якщо ім'я збігається з зарезервованим словом, можна в кінці додати знак підкреслення; якщо ім'я починається з цифри, можна на початку додати знак підкреслення.

Приклади назв пакетів, складених за такими правилами:

com.sun.image.codec.jpeg

org.omg.CORBA.ORBPackage

oracle.jdbc.driver.OracleDriver

Однак, звичайно, ніхто не вимагає, щоб Java-пакети були обов'язково доступні на Internet-сайті, який дав їм ім'я. Швидше була зроблена спроба скористатися існуючою системою імен замість того, щоб створювати нову для іменування бібліотек.

Угоди по іменуванню

Для того, щоб код, написаний на Java, було легко читати і зрозуміти не тільки його автору, але й іншим розробникам, а також для усунення деяких конфліктів імен, пропонуються наступні угоди щодо іменування елементів мови Java. Стандартні бібліотеки і класи Java також слідують їм там, де це можливо.

Угоди регулюють іменування наступних конструкцій:

· пакети;

· типи (класи та інтерфейси);

· методи;

· поля;

· поля-константи;

· локальні змінні і параметри методів та ін

Розглянемо їх послідовно.

Правила побудови імен пакетів вже докладно розглядалися в цьому розділі. Ім'я кожного пакету починається з маленької літери і являє собою, як правило, одне недовге слово. Якщо потрібно скласти назву з декількох слів, можна скористатися знаком підкреслення або починати наступне слово з великої літери. Ім'я пакету верхнього рівня звичайно відповідає доменному імені першого рівня. Назви java і javax (Java eXtension) зарезервовані компанією Sun для стандартних пакетів Java.

При виникненні ситуації «затуляючого» оголошення (obscuring) можна змінити ім'я локальної змінної, що не спричинить за собою глобальних змін у коді. Випадок же конфлікту з ім'ям типу не повинен виникати, згідно з правилами іменування типів.

Імена типів починаються з великої літери і можуть складатися з декількох слів, кожне наступне слово також починається з великої літери. Звичайно, треба прагнути до того, щоб імена були описовими.

Імена класів, як правило, є іменниками:

Human

HighGreenOak

ArrayIndexOutOfBoundsException

(Останній приклад - помилка, що виникає при використанні індексу масиву, який виходить за межі допустимого.)

Аналогічно задаються імена інтерфейсів, хоча вони не обов'язково повинні бути іменниками. Часто використовується англійська суфікс "able":

Runnable

Serializable

Cloneable

Поля можуть бути константами, якщо в їх оголошенні стоїть ключове слово final. Їх імена складаються з послідовності слів, скорочень, абревіатур. Записуються вони тільки великими літерами, слова поділяються знаками підкреслення: PI MIN_VALUE MAX_VALUE

Іноді константи утворюють групу, тоді рекомендується використовувати одне чи кілька однакових слів на початку імен:

COLOR_RED

COLOR_GREEN

COLOR_BLUE

Нарешті, розглянемо імена локальних змінних і параметрів методів, конструкторів і обробників помилок. Вони, як правило, досить короткі, але, тим не менш, повинні бути осмислені. Наприклад, можна використовувати абревіатуру (ім'я cp для посилання на екземпляр класу ColorPoint) або скорочення (buf для buffer).

Поширені Однолітерні скорочення:

byte b;

char c;

int i, j, k;

long l;

float f;

double d;

Object o;

String s;

Exception e; // об'єкт, що представляє помилку в Java

Дво- та трьохбуквені імена не повинні збігатися з прийнятими доменними іменами першого рівня Internet-сайтів.

3. Основна частина

3.1 Розробка п'яти тестових питань зі вказівкою можливих варіантів відповідей і правильних відповідей

Питання 1.

Що таке пакет?

А) Каталоги, у яких розміщуються класи (правильно)

Б) Посилальний тип даних

В) Певна абстрактна сутність, що на програмному рівні представлена змінними (полями даних) та методами, що оперують над цими полями даних

Питання 2

Protected - це рівень доступу до пакету в якому...

А) Члени класу доступні з усіх пакетів

Б) Члени класу доступні всім підкласам и непідкласам з того ж пакету (правильно)

В) Члени класу доступні тільки в цьому пакеті

Г) Члени класу доступні тільки в тому ж класі

Питання 3

Які з цих пакетів дозволяють працювати в мережі?

А) java.text

Б) java.applet (правильно)

В) java.math

Г) java.net (правильно)

Питання 4

Якщо пакет містить один тип,

але описуючий його файл недоступний активному користувачу ОС для читання,

Чи буде для Java цей тип і цей пакет існувати?

Відповідь: НІ

Питання 5

Як записується імпорт, що імпортує один тип?

А) import java.awt .*;

Б) import java.net.URL; (правильно)

В) import java.awt.Point;

3.2 Опис елементів, що використовуються в проекті

Рис. 1 Приклад форми для введення персональних даних студента

1. На панелі «Питання 1» для формулювання текстового запитання було використано елемент Текстове Поле (jTextField), для пояснювального надпису елемент Надпис (jLabel), для переходу на іншу закладку елемент Кнопка ( jButton) та для запису варіантів відповідей налаштував блок радіокнопок (jRadioButton).

Рис. 2 Приклад питання на вибір єдиного правильного варіанта

2. На панелі «Питання 2» створено елементи Текстове Поле (jTextField), Надпис (jLabel), Кнопка (jButton) та Список (jList) для запису варіантів відповідей.

Рис. 3 Приклад питання на вибір зі списку

3. На панелі «Питання 3» аналогічно створено об'єкти Текстове Поле (jTextField), Надпис ( jLabеl), Кнопка (jButton) та елемент jCheckBox (Прапорець) для вибору декількох правильних варіантів відповідей.

Рис. 4 Приклад питання на вибір декількох правильних варіантів

4. На панелі «Питання 4» створено об'єкти Текстове Поле (jTextField), Надпис (jLabel), Кнопка (jButton), а також використано об'єкт jTextField для введення правильної відповіді з клавіатури.

Рис. 5

5. На панелі «Питання 5» створено елементи Текстове Поле (jTextField), Надпис (jLabel), Кнопка (jButton), блок Радіо-кнопок (jRadioButton)

Рис. 6 Приклад питання на вибір єдиного правильного варіанта

6. На панелі «Результат» створено елементи Текстове Поле (jTextField), в яких відбуватиметься аналіз відповідей студента та виводитиметься загальна оцінка та елемент Надпис (jLabel).

Рис. 7 Приклад виведення результатів тестування

3.3 Тексти процедур опрацювання подій

1. Після налаштування об'єктів Кнопка (jButton) для здійснення автоматичного переходу на наступну або попередню панель для покрокового введення відповідної інформації, використовуючи конструкцію jTabbedPane1.setSelectedIndex(); при цьому для зручності змінив імена об'єктів jButton на nextButton та backButton.

Рис. 8 Вікно програмного коду

1. Здійснено налаштування обробки результатів вибору відповідей на завдання, викликавши подію stateChanged (зміна стану) об'єкту Вкладка з панелями (jTabbedPane1) та використовуючи методи getSelectedIndex(), setText(), getText(), isSelected() відповідних об'єктів та конструкцію if(){} else{}. Для підрахунку результатів тесту ввів нову змінну: int sum = 0;

Рис. 9 Код обробки результатів вибору відповідей на завдання.

Запуск програми та перевірка її роботи

Рис 10 Перевірка роботи програми

Висновки

В ході виконання курсової роботи було розглянуто тему «Пакети та їх імпортування», в результаті, я поглибив свої знання пов'язані з пакетами та типами пакетів в мові Java. Оскільки компілятор суворо відстежує тип кожної змінної і кожного виразу, в разі зміни цього типу необхідно я зрозумів, які дії припустимі, а які ні, з точки зору компілятора і віртуальної машини. java пакет імпортування компіляція

Були розглянуті пакети, які використовуються в Java для створення фізичної та логічної структури класів, а також для більш точного розмежування області видимості. Пакет містить вкладені пакети і типи (класи та інтерфейси). Питання про платформну підтримку пакетів привело до розгляду модулів компіляції як текстових файлів, оскільки саме у вигляді файлів і каталогів, як правило, зберігаються і поширюються Java-додатки. Тоді ж вперше було розглянуто питання розмежування доступу, так як доступ до модулів компіляції визначається саме платформної підтримкою, а точніше - операційною системою. Для використання та засвоєння поданої інформації було розроблено проект що дає можливість перевірити рівень знань із теми «Пакети та їх імпортування» як окремого студента, так і групи в цілому, а також декілька разів повторити даний тест.

Размещено на Аllbеst.ru


Подобные документы

  • Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування. Порівняльна характеристика середовищ розробки прикладних програм на мові JAVA. Ознайомлення з принципами і особливостями роботи певних класів, компонентів.

    курсовая работа [2,0 M], добавлен 31.01.2014

  • Поняття про аплет – пакет класу Java, який виконується різними прикладними програмами. Методи init, run та paint, клас showgif (виводить анімаційні файли) для вставки у web–сторінку з урахуванням браузерних платформ. Код аплета та його структура.

    лабораторная работа [11,9 K], добавлен 09.06.2012

  • Розробка та тестування додатків, які базуються на елементах мови програмування Java, принципи програмування в її середовищі. Вивчення переваг Java-платформи, прикладний програмний інтерфейс та особливості сучасних засобів створення Java-додатків.

    дипломная работа [2,8 M], добавлен 22.06.2011

  • Общее понятие о пакете "java.net". Логическая структура соединений через сокеты. Создание объекта Socket, соединение между узлами Internet. Способы создания потока. Алгоритм работы системы клиент-сервер. Листинг ServerForm.java, запуск подпроцесса.

    лабораторная работа [174,6 K], добавлен 27.11.2013

  • Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.

    курсовая работа [208,6 K], добавлен 03.12.2013

  • Створення програми для перегляду потрібної інформації, яка може бути використана будь яким користувачем ЕОМ. Користування та розуміння переглядачів текстових файлів. Використання читання тексту порціями для реалізації прокрутки екрану вверх та вниз.

    курсовая работа [16,7 K], добавлен 12.08.2009

  • Створення програми, що видає результати голосування та підсумки виборів. Алгоритм розробки програми. Опис структури даних та вимоги до них, стандартних процедур та функцій, файлів та їх призначення. Приклад тестування та результати роботи програми.

    курсовая работа [1,0 M], добавлен 28.06.2012

  • Основи розробки додатків Windows. Параметри функції WinMain. Запуск процесу, використання для цього вибраних на диску файлів. Відслідковування кожного з процесів (його статус, назву, час життя), діяльності користувача. Опис алгоритму роботи програми.

    курсовая работа [202,6 K], добавлен 14.05.2015

  • Створення баз даних за допомогою стандартних бібліотек Java та клієнт-серверних програм. Основні стандартні класи і методи бібліотек SQL та swing, бібліотек, що дозволяють опрацьовувати дані СУБД та навчитись концепціям програмування мовою Java.

    лабораторная работа [215,3 K], добавлен 04.10.2011

  • Розробка логічної гри "Тетріс" у складі набору об’єктно-орієнтованих моделей, програмного коду з використанням об’єктно-орієнтованної мови Java. Проектування архітектури гри, аналіз вимог до неї, опис реалізації, кодування та тестування програми.

    курсовая работа [2,2 M], добавлен 24.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.