133
Размещено на http://www.allbest.ru/ Вступ Створення мови Java – це дійсно один із самих значних кроків уперед в області розробки середовищ програмування за останні 20 років. Мова програмування Java є засобом для написання вихідного коду. Аплети й додатки, написані на цій мові, при компіляції приводяться до виду, у якому вони будуть запускатися на Java-Платформі. Досвід багатьох професійних програмістів показує, що мова програмування Java – проста, гнучка і потужна. Вона об’єктно-орієнтована, забороняє множинне спадкування, має строгу систему типів, реалізує багатопотоковість, динамічно зв'язана і містить автоматичний «збирач сміття». Її синтаксис заснований на C і C++, тому програмісти на C можуть без труднощів освоїти його. Зменшена «надмірність» мови, що означає те, що розробники зможуть значно швидше зрозуміти код, написаний іншим програмістом. Приміром, у мові програмування Java неможливе визначене користувачем перевантаження оператора, що можливо в C. Мова Java, дає програмістам можливість користуватися трьома різними способами програмування, використовуючи при цьому тільки одну мову. Подібно

388175

Embed Size (px)

DESCRIPTION

Java

Citation preview

Page 1: 388175

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

Вступ

Створення мови Java – це дійсно один із самих значних кроків уперед в

області розробки середовищ програмування за останні 20 років. Мова

програмування Java є засобом для написання вихідного коду. Аплети й

додатки, написані на цій мові, при компіляції приводяться до виду, у якому

вони будуть запускатися на Java-Платформі.

Досвід багатьох професійних програмістів показує, що мова

програмування Java – проста, гнучка і потужна. Вона об’єктно-орієнтована,

забороняє множинне спадкування, має строгу систему типів, реалізує

багатопотоковість, динамічно зв'язана і містить автоматичний «збирач

сміття».

Її синтаксис заснований на C і C++, тому програмісти на C можуть без

труднощів освоїти його. Зменшена «надмірність» мови, що означає те, що

розробники зможуть значно швидше зрозуміти код, написаний іншим

програмістом. Приміром, у мові програмування Java неможливе визначене

користувачем перевантаження оператора, що можливо в C.

Мова Java, дає програмістам можливість користуватися трьома різними

способами програмування, використовуючи при цьому тільки одну мову.

Подібно символічній мові програмування Smalltalk, мова Java об'єктно-

орієнтована, має здатність динамічного зв'язування й реалізує ієрархічну

структуру класів з одинарним спадкуванням.

Для числових операцій, мова Java має незалежні від платформи типи

даних, перевірку границь масиву, і чітко – певну ІІЕРА (Інститут інженерів

по електротехніці й радіоелектроніці) арифметику. Ці здатності становлять

гарну основу для запису стійких числових алгоритмів, що дають повторювані

результати. Відносно системного програмування, виражень, інструкцій, і

операторів мова Java у більшості випадків нічим не відрізняється від мови C.

Мова Java сприяє «перехопленню» дефектів програми на стадії розробки,

Page 2: 388175

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

поки програмний продукт ще не випущений на ринок. Це здійснюється

шляхом строгої типізації даних, автоматичного збору сміття й перевірки

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

відсутністю посилальних типів (покажчиків). Всі перераховані факти

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

на розробку, що дуже важливо в епоху Інтернету, коли часу на реалізацію й

випуск працездатного програмного забезпечення дуже мало.

Мова Java має вбудовану підтримку багатопотоковості, зі строгим

визначенням способів синхронізації для критичних ділянок коду з різних

потоків, що дозволяє запобігти появі ряду проблем: при розрахунку часу,

конкуренції між потоками й ін. В умовах росту потреб у багатопотоковості

при обробці даних і в зменшенні витрат ресурсів процесора, мова Java була

створена з урахуванням цих вимог сучасності, де ми маємо справу з новим

поколінням «конкуруючих» між собою при паралельній роботі додатків і

сервісів.

Механізми обробки виняткових ситуацій і потоків інтегровані з мовою

і її системою типів (тобто передбачені на рівні мови). Крім того, мова

реалізує динамічне зв'язування підкласів з методами, що скасовують або

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

подібні можливості були «заховані» і ускладнювали системні сервіси.

Замість таких властивостей у мові, ми одержуємо простоту й безліч переваг,

у числі яких можливість зробити мову платформонезалежною.

Page 3: 388175

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

1. Огляд літературних джерел

1.1 Java-платформа

На теперішній час комп'ютерному світу відомо багато різних

платформ, серед яких такі як: Microsoft Windows, Macintosh, OS/2, UNIX ® і

система Netware ®. Для встановлення на кожну з них програмного

забезпечення, воно повинне бути відкомпільоване окремо. Двійковий файл

додатка, що виконується на одній платформі, не може бути запущений на

іншій, тому як двійковий файл – специфічний, залежно від платформи.

Платформа Java – нова програмна платформа для транспортування й

виконання високо інтерактивних, динамічних і безпечних аплетів і додатків

на системах мережевих комп'ютерів. Основною якістю Java-Платформи, що

виділяє її серед інших, є те, що вона розташовується на самому верхньому

рівні в інших платформах, що дозволяє їй робити компіляцію в байт-коди, не

прив'язані до кожної з фізичних машин і представляють собою машинні

інструкції для віртуальної машини (virtual machine). Програма, написана

мовою Java, компілюється у файл байт-коду, що може працювати скрізь, де

присутня Java-Платформа, на кожній з основних операційних систем. Інакше

кажучи, той самий файл буде виконуватися на будь-якій операційній системі,

на якій присутня Java-Платформа. Подібна мобільність стає можливою

завдяки тому, що в основі Java-Платформи лежить віртуальна Java-Машина.

У той час як кожна платформа має у своєму розпорядженні свою

власну реалізацію віртуальної Java-Машини, всі віртуальні машини

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

може реалізовувати єдиний стандарт – універсальний програмний інтерфейс

для аплетів і додатків на будь-яких апаратних засобах. Тому Платформа Java

є ідеальною для Інтернету, де та сама програма повинна бути здатна до

виконання на будь-якому комп'ютері у світі.

Page 4: 388175

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

Розробники використовують мову Java при написанні вихідного коду

для Java-додатків. Вони компілюють свій код один раз і позбуваються тим

самим від необхідності компілювати його для кожної системи окремо.

Вихідний текст мови Java компілюється в проміжну, переносну форму байт-

коду, що запуститься скрізь, де є присутнім Java-Платформа.

Розробники можуть писати объектно-оріентовані, багатопоточні,

динамічно зв'язані додатки, використовуючи мову Java. Платформа має

вбудовані системи захисту, обробки виняткових ситуацій, і автоматичного

«збору сміття». Крім того, існує можливість використовувати JIT (just-in-

time) компілятори (компілятори «на льоту») і прискорити виконання програм

за допомогою перетворення байт – кодів Java у машинну мову. Також,

розробники можуть записувати й викликати так звані нативні методи –

методи C, C++ або інших мов, відкомпільовані для певної операційної

системи – для підвищення швидкості виконання або для застосування

спеціальних функціональних можливостей.

Програми, написані мовою Java і потім відкомпільовані, будуть

запускатися на Java-Платформі. Платформа Java має дві основних частини:

- Java Virtual Machine (віртуальна Java-Машина);

- Java API (прикладний програмний інтерфейс Java).

У сукупності, ці частини забезпечують оперативні засоби керування

роботою програми для кінцевого користувача при установці інтернет-

додатків.

The Java Base Platform – «мінімальна» Java платформа, створена для

запуску Java-Аплетів і додатків, що розробники можуть без проблем

встановити й використовувати. Дана платформа призначається для

мережевих, настільних комп'ютерів і робочих станцій. Платформа містить у

собі ту ж віртуальну машину, що описувалася вище й при цьому має

мінімальний комплект API, необхідним для запуску основних аплетів і

додатків. Згаданий мінімальний комплект відомий, як Java Applet API або

Page 5: 388175

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

Java Base API. Розробники, які пишуть для цього комплекту можуть бути

впевнені в тім, що програма запуститься скрізь без необхідності в

підключенні додаткових бібліотек класів.

Деякі ліцензіати платформи Java уклали контракти про включення

приватних реалізацій Java Base API в Java – платформі. В міру розробки

бібліотек класів, Java Base Platform розростаються й нові класи регулярно

мігрують у встановлену на кожну ліцензійну операційну систему Java Base

Platform.

Інший набір API, що називається Standard Extension API, визначений

JavaSoft у партнерстві з провідними промисловими компаніями створений

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

планується мігрувати деяку підмножину Standard Extension API в Java Base

Platform.

Embedded Java Platform була розроблена для споживача, що

використовує прилади з малими ресурсами й з більш спеціалізованою

функціональністю, ніж мережевий комп'ютер. Наприклад, принтери,

ксерокси, мобільні телефони й ін. Подібна апаратура може мати деякі

специфічні властивості, а саме невеликий обсяг пам'яті, відсутність дисплея

або неможливість зв'язку по мережі.

API, розроблений для такої платформи, називається Java Embedded API.

Java Embedded API – найменший із прикладних програмних інтерфейсів, які

можуть бути впроваджені в описані вище прилади й при цьому ефективно

працювати. Оскільки дана платформа усе ще допрацьовується, Java

Embedded API дотепер не може розглядатися як стандарт. Тому існує деяка

невизначеність, пов'язана із складом API. Приблизно, він буде містити в собі

пакети java.lang і java.util. Java-Додатки, написані для одного окремого

пристрою, зберігають працездатність на широкому діапазоні подібних по

своїй специфіці пристроїв.

Page 6: 388175

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

1.2 Переваги Java-Платформи

Переваги для кінцевого користувача: На сьогоднішній день, Java-

Платформа забезпечує підтримку оперативного, інтерактивного наповнення

World Wide Web, за допомогою «just-in-time» доступу до програмних

ресурсів. Додатки легко доступні на всіх операційних системах одночасно,

що звільняє користувача від необхідності вибору операційної системи по

факту доступності додатків. Більш маленькі, менш дорогі спеціалізовані

системи будуть, в остаточному підсумку, доступні для спеціалізованих

додатків.

Переваги для розробника: Мова програмування Java – невелика, проста

для вивчення система, оснащена всебічно, що розширюється набором, API.

Розробники можуть «написавши один раз, запускати всюди», що дає мові

Java величезну перевагу перед іншими мовами на ринку. Крім того, програми

на Java на всіх операційних системах при компіляції перетворяться до того

самого двійкового формату. Виграш у порівнянні із ситуацією, коли для

установки програми на декількох платформах потрібно писати й

компілювати код окремо для кожної платформи, очевидний. Програміст

може працювати над додатком під однією платформою, скорочуючи при

цьому час і вартість розробки, і бути впевненим, що його код буде працювати

скрізь. Можливість «написавши один раз, запускати всюди», для багатьох

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

мов як C або С++, на яких працездатність додатків залежить від платформи а,

також, додатки яких «немережеві».

На додаток до цього, можливе створення додатків, що багаторазово

використовують загальнодоступні об'єкти, що ще більше зменшує вартість

розробок і дозволяє розробникам концентрувати свої зусилля тільки на

створенні чогось нового.

Page 7: 388175

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

Переваги при адмініструванні й підтримці: Java-Платформа має

переваги, пов'язані з адмініструванням корпоративних комп'ютерних систем.

Контроль версії й оновлення спрощуються, тому що Java-Додатки можуть

зберігатися в центральному архіві й тут обслуговуватися для кожного окремо

взятого користувача. У багатотипному, багатоплатформенному оточенні

кількість Java-Платформ, яким необхідна технічна підтримка зменшується до

однієї. У сукупності з тенденцією до зниження вартості мережеих

комп'ютерів це приводить до зменшення як основних витрат, так і витрат на

обслуговування. З подібними мережевими комп'ютерами керування даними

може здійснюватися централізовано, у той час як обробка даних

здійснюється локально.

Компанії з великими внутрішніми комп'ютерними мережами, які

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

новітнього програмного забезпечення або останніх операційних систем,

можуть запускати Java-Додатки на всіх комп'ютерах у мережі. Крім того,

впроваджуючи утримування корпоративних даних у форматах

«розпізнаваних» Java додатками, корпорації дає своїм працівникам

можливість доступу до будь-яких даних незалежно від платформи.

Якщо на Java-Платформі запустити клієнт, компанії можуть

скористатися интерактивністю інтернету й перекласти необхідність

відсилання завдань працівникам на клієнтський додаток. Також компанії

можуть зменшити час, що витрачається на облік замовлень за допомогою

впровадження спеціальних клієнтів, що містять бланки замовлень на Web

сторінках. При цьому клієнти можуть бути запущені на будь-яких

платформах.

1.3 Аплети та додатки

Java-Платформа дозволяє розробникам створювати два види програм:

Page 8: 388175

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

Аплети – це програми, для запуску яких необхідно використовувати

броузер. Тег <applet> вставляється в HTML-Код Web – сторінки й містить

ім'я програми, що повинна бути запущена. Коли користувач заходить на

сторінку по корпоративній мережі або по Інтернету, аплет автоматично

завантажується із сервера й запускається на клієнтській машині. Через те, що

аплети є завантажувальними програмами, вони повинні бути маленькими по

розмірах або розбитими на модулі так, щоб на завантаження йшло

якнайменше часу.

Додатки – це програми, що запускаються без броузера, в яких відсутній

вбудований механізм автоматичного завантаження. У момент виклику

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

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

прикладні завдання, починаючи з редагування текстів і закінчуючи обробкою

графіки. Як і для аплета, для запуску додатка потрібна Java-Платформа,

однак платформа може бути доступна, як окрема програма, може бути

впроваджена прямо в операційну систему або може бути убудована в сам

додаток.

Хоча аплети й додатки запускаються різними способами, проте, вони

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

аплет, так і додаток можуть працювати з вилученими серверами баз даних:

«витягати» необхідні дані, обробляти їх локально й зберігати результат у БД.

Однак, для запуску аплета, на відміну від додатка, необхідна мережа.

Крім того, додатки мають більше волі при роботі із системою, а саме –

повний доступ до її сервісів. Простий приклад: додатки можуть нормально

записувати й читати файли, а аплети – ні. З моменту завантаження аплета з

«ненадійної» сторінки, він обмежується в правах доступу до читання й

запису файлів на будь-якій системі, за винятком тієї, з якої він прибув. Для

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

цифрові підписи, завдяки яким кінцевий користувач може бути впевнений у

Page 9: 388175

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

тім, що завантаження завжди відбувається з ресурсу, якому він довіряє.

Зараз, там, де існує необхідність локального зберігання даних у файлах,

потрібні додатки.

1.4 Внутрішня будова Java-Платформи

Java-Платформа складається із двох основних частин, Java Virtual

Machine (віртуальна машина Java) і Java API (див Рис1.2).

Java Virtual Machine – Java Virtual Machine – це «запрограмований»

комп'ютер, що може бути реалізований у програмному забезпеченні або в

апаратних засобах. Це абстрактний пристрій, спроектований так, щоб бути

реалізованим на як можна більшому числі сучасних процесорів. Інтерфейс

переносів і адаптери дають JVM можливість бути перенесеною на нові

операційні системи без необхідності в повнім переписуванні

Java API – Java API визначає стандартний інтерфейс для аплетів і

додатків, не звертаючи уваги на встановлену на комп'ютер операційну

систему. Java API – основа, каркас при розробці додатка. Даний API визначає

набір стандартних інтерфейсів для використання в ключових областях,

кількість котрих збільшується, у яких програмісти звичайно вибудовують

свої Java додатки.

Java Base API (Основний прикладний програмний інтерфейс Java)

забезпечує можливість роботи з різними допоміжними класами, з уведенням /

виведенням, з мережею, з GUI (графічний інтерфейс користувача), і

аплетами. Компанії-Виробники операційних систем, які мають ліцензію Java,

підписали контракти, що зобов'язують їх включати Java Base API у будь-яку

Java-Платформу, що вони встановлюють.

Java Standard Extension API (Стандартний розширений прикладний

програмний інтерфейс Java). Є розширенням описаного вище Java Base API.

Передбачається, що деякі розширення будуть згодом мігровані в Java Base

Page 10: 388175

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

API. Інші нестандартні API будуть підтримуватися в додатках, аплетах і

основних операційних системах. При публікації специфікації будь-якого

розширювального API до його остаточного виходу, в обов'язковому порядку

публікуються промислові огляди з можливістю зворотного зв'язка з

розроблювачами.

На представленому малюнку, Java Base Platform представлена

частинами, зафарбованими чорним, включаючи блоки, підписані «Адаптер».

Java API включає як Java Base API так і Java Standard Extension API. Класи є

реалізаціями API. Java Virtual Machine лежить в основі платформи. Інтерфейс

переносу розташовується між Java Virtual Machine і операційною системою

(ОС) або броузером. Інтерфейс переносу складається із платформонезалежної

частини (зафарбована чорним) і залежної від платформи частини з написом

«Адаптер». ОС і JavaOS забезпечують роботу з віконним інтерфейсом,

зберіганням даних і взаємодією по мережі. Як показано, різні машини

можуть приєднуватися по мережі.

Основна частина Java API відкрита й розширювана. Специфікації для

кожного інтерфейсу розвиваються всегалузевими фахівцями у всіх областях.

Підготовлювані специфікації видаються й відкриваються для рецензування

різними галузями промисловості. Реалізації специфікацій API надходять від

JavaSoft і інших підприємств. У сучасному середовищі постійних інновацій,

структура Java API дозволяє будь-якому нововведенню легко існувати у

вигляді розширення до Платформи Java.

API розбивається по групами, або наборам. Кожний набір API може

бути реалізований у вигляді одного або декількох пакетів (просторів імен).

Кожний пакет поєднує в собі набір класів і інтерфейсів, які визначають набір

полів, конструкторів і методів.

Page 11: 388175

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

1.5 Java Virtual Machine (Віртуальна машина Java)

Java Virtual Machine є ключем до незалежності від основної операційної

системи й апаратних засобів. Це платформа, що приховує основну

операційну систему від Java аплетів і додатків. Крім того, перенос Java

Virtual Machine на броузер або іншу операційну систему не становить ніяких

труднощів.

Віртуальна Машина визначає машинно-незалежний формат для

двійкових файлів, що зберігаються з розширенням class. Цей формат включає

команди для віртуального комп'ютера у формі байт-кодів. Подання байт-коду

будь-якої програми, написаної мовою Java, символічне, у тому розумінні, що

зсуви й індекси усередині методів не є константами, а представляються

символічно, як строкові імена. При першому виклику методу, він

відшукується у файлі class по імені, і в цей момент визначається числове

значення його зсуву для більш швидкого доступу при наступних викликах.

Тому, будь-який новий метод або метод, що перевантажує старий, може бути

визначений у будь-якому місці в структурі класу. Він буде переданий у

символічній формі, і програма належним чином виконається без порушень

при виконанні коду.

Байт-Коди – високорівневі подання програми, які проходять

оптимізацію й машинну генерацію об'єктного коду за допомогою just-in-time

компілятора, після чого можуть бути виконані. Крім того, всередині Virtual

Machine може запуститися «збір сміття», під час якої змінні втримуються в

стеках в адресному просторі Java-Платформи.

додаток програмування інтерфейс java

Page 12: 388175

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

1.6 Java Base API (Основний прикладний програмний інтерфейс

Java)

Вибираючи Java Base API в Java-Платформі, розробники можуть бути

впевнені в тім, що їхні додатки будуть працювати всюди.

У цей час, Java Base API визначений так само, як і Java Applet API, що

буде описаний далі. У міру розвитку платформи, основний API буде

розширюватися за рахунок міграцій Standard Extension API в Java Base API.

Java Base API відомий також за назвою Java Core API.

Java Applet API (Прикладний програмний інтерфейс Java для

аплетів)

Java Applet API, відомий також, як Java Base API визначає основні

конструкторські блоки для створення повноцінно функціонуючих Java

аплетів і додатків. Він включає всі класи пакетів java.lang, java.util, java.io,

java.net, java.awt і java.applet. (Зверніть увагу на те, що Java Applet є повним

набором API, доступним в Java Development Kit версії 1.0.2 від JavaSoft)

Java Standard Extension API (Стандартний розширений прикладний

програмний інтерфейс Java)

Даний розділ описує Java Standard Extension API (Стандартні розширені

прикладні програмні інтерфейси Java). Подібні розширення називають

«стандартними», виходячи з того, що вони створюють опубліковані,

однакові, відкриті API, які можуть бути реалізовані ким завгодно. Один раз

визначені, вони можуть бути довизначені, але, для збереження сумісності,

описувані API не повинні змінюватися, тому що при зміні, можлива ситуація,

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

нові й нові розширення. Крім того, деякі із цих розширень будуть мігровані в

Java Base API.

Поточний план для описаних вище міграцій показаний у

нижченаведеній таблиці 1.1.

Page 13: 388175

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

Таблиця 1.1. Міграції в Java Base API

Міграція в Java Base API Перебуває в Java Standard Extension

Java 2D Java 3D

Audio Video MIDI

Java Media Framework Java Share

Java Animation Java Telephony

Java Enterprise Java Server

Java Commerce Java Management

Java Security

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

вона запускається. Наприклад, настільна операційна система, що має доступ

до спікера, буде відтворювати аудіо, однак, на універсальній або мережній

операційній системі, що не має спікера, повинне бути реалізоване деяке

«порожнє» виконання команди відтворення звуку або визначене деяке інше

чітке поводження (наприклад: генерація виключення).

Java Security API (Прикладний програмний інтерфейс безпеки

Java)

Java-Сервер – розширювана структура, що дає можливість розробки

широкого спектра Інтернет і інтранет серверів, одночасно спрощуючи її. API

структура включає серверні бібліотеки класів для адміністрування серверів,

керування доступом і динамічною обробкою ресурсів. Дана структура також

включає Servlet API (Прикладний програмний інтерфейс для написання

сервлетів Java).

Сервлети – платформо-незалежні Java об'єкти, подоби аплетів, але,

вони виконуються на стороні сервера. Сервлети можуть розташовуватися

локально на сервері або можуть закачуватися на сервер з мережі (відповідно

до обмежень, пов'язаним з безпекою). Область застосування сервлетів досить

широка, починаючи від простих HTTP сервлетів (ефективна заміна cgi-

скриптів) і закінчуючи більш складними сервлетами, що використовують

JDBC/ODBC для забезпечення зв'язку із БД.

Page 14: 388175

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

1.7 Середовище виконання Java

Середовище розробки мови Java включає і середовище компіляції, і

середовище виконання, як показано на мал. 3. Java-Платформа представлена

середовищем виконання. Розроблювач пише мовою програмування Java

вихідний код (файли з розширенням java) і компілює їх у байт-коди (файли з

розширенням class). Байт-Коди є інструкціями для Java Virtual Machine. При

створенні аплета розроблювач, крім того, розміщає файл із байт-кодом на

HTTP сервері й додає до HTML-Коду Web-сторінки тег <applet

code=filename>, що вказує на точку входу для файлу з байт-кодом.

Байт-Коди можуть, на вибір, інтерпретуватися інтерпретатором або

звертатися в машинний код just-in-time (JIT) генератором коду, частіше

іменованим JIT Compiler (Компілятор «на льоту»). Інтерпретатор і JIT

компілятор працюють в оточенні системи виконання (потоки, пам'ять, інші

системні ресурси). Будь-які класи динамічно довантажуються в момент, коли

це потрібно аплету.

1.8 Особливості сучасних засобів створення Java-Додатків

Серед особливостей засобів створення Java-Додатків, цікавих у плані

створення корпоративних рішень, варто назвати засоби підвищення

продуктивності праці розроблювачів, засобу підтримки колективної роботи,

підтримку різних етапів життєвого циклу додатків, які передують створенню

коду додатків (таких як керування вимогами, моделювання даних і додатків),

так і наступних за ним (тестування, впровадження й супровід), можливості,

пов'язані з повторним використанням моделей і коду, підтримку засобів і

стандартів створення розподілених додатків і їхньої інтеграції (включаючи

підтримку стандарту J2EE і Web-Сервісів XML), а також можливість

створення мобільних рішень, у тому числі підтримку стандарту J2ME.

Page 15: 388175

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

Сучасні інструменти розробки Java-Додатків, як правило, мають різні

засоби підвищення продуктивності праці програмістів. Тут ми не будемо

зупинятися на таких уже звичних речах, що стали, як колірне виділення

синтаксичних конструкцій, візуальні редактори користувальницьких

інтерфейсів, підтримка створення додатків з базами даних (у випадку Java –

за допомогою універсального механізму доступу до даних JDBC, Java

DataBase Connectivity) або наявність засобів звичайного й віддаленого

налагодження, – зараз без них жоден інструмент для розробки додатків не

має шансів зайняти скільки-небудь значимої позиції на ринку.

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

засоби рефакторинга – автоматичного внесення супровідних змін у код при

перейменуванні класів (наприклад, зміна коду, що містить посилання на

перейменований клас) і зміні параметрів методів, автоматичного додавання

конструкцій try…catch навколо блоку коду з урахуванням можливих

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

цьому блоці, а також інших дій, пов'язаних з автоматичним внесенням змін у

код, що конче потрібно при колективній роботі над більшими проектами й

при повторному використанні коду. Крім цього, до корисних особливостей

Java-Інструментів можна віднести засоби створення тестових класів, засоби

конвертації файлів SQLJ1 в Java-Код, різні засоби, що спрощують генерацію

тестів і поставку додатків, а також наявність майстрів створення Web-

Додатків, Web-сервісів, генерації коду на підставі WSDL2 – описів.

Говорячи про підтримку проектування додатків, варто підкреслити, що

створення Java-Додатків масштабу підприємства зараз практично немислимо

без застосування засобів UML-Моделювання. Такі засоби можуть бути

включені безпосередньо до складу продукту або підтримуватися на рівні

інтерфейсів до них; при цьому найбільш кращим є наявність засобів UML-

Моделювання у вигляді модулів, убудованих у середовище розробки й

підтримуючу синхронну зміну моделей і коду.

Page 16: 388175

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

Особливо варто зупинитися на тім, що в даний момент у всіх

продуктах, що лідирують на ринку засобів розробки Java-Додатків (іноді

тільки в найбільш дорогих редакціях цих продуктів), реалізована можливість

створення EJB (Enterprise Java Beans) – об'єктів, що виконуються під

керуванням серверів додатків, що підтримують специфікацію J2EE. Ця

можливість найбільш важлива з погляду застосовності подібного засобу при

створенні корпоративних рішень, зокрема розподілених додатків, що

реалізують наступні схеми: «підприємство – споживач» (B2C, business-to-

consumer), такі як онлайновий продаж товарів, бронювання квитків і місць у

готелях; «підприємство – підприємство» (B2B, business-to-business), такі як

віртуальні торговельні площадки й онлайнові аукціони; «підприємство –

співробітник» (B2E, business-to-employee), такі як корпоративні портали.

Найчастіше в корпоративних рішеннях застосовуються конфігурації, що

містять кілька серверів додатків або різні кластерні конфігурації. Нерідко

виробники Java-Інструментів роблять власні сервери додатків, але багато хто

з них підтримує створення об'єктів EJB і для серверів додатків інших

виробників.

Говорячи про корпоративні рішення, не можна не відзначити, що й на

Заході, і в Україні, що переживає сьогодні наслідки так званої острівкової

автоматизації, досить актуальна проблема інтеграції різних додатків,

використовуваних як усередині одного підприємства, так і на різних

підприємствах. Одним з досить універсальних і простих способів рішення

цієї проблеми є реалізація функцій додатків, до яких варто надати доступ

ззовні у вигляді Web-Сервісів XML, що дозволяє звертатися до них інших

додатків, що підтримують Web-Сервіси, незалежно від того, на яких

платформах вони експлуатуються й за допомогою яких засобів розробки

створені. У цей час популярність цієї технології інтеграції швидко росте й

більшість виробників серверів додатків і засобів розробки вже так чи інакше

реалізували підтримку Web-Сервісів і пов'язаних з ними технологій.

Page 17: 388175

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

Відзначимо, однак, що сьогодні є й альтернативні засоби інтеграції, відмінні

від Web-Сервісів, наприклад засоби підтримки синхронного доступу до EJB з

Windows – або.NET-Додатків, таких як Borland Janeva3.

Як правило, сучасні засоби створення Java-Додатків підтримують

розробку додатків для декількох різних платформ, а найчастіше й самі

існують у версіях для різних платформ. Звичайно в їхнє число входять

Windows, Linux, Solaris, а іноді й інші операційні системи.

Нерідко сам засіб розробки Java-Додатків може поставлятися як

окремо, так і в складі комплекту інструментів, що включають звичайно

засоби UML-Моделювання, версію сервера додатків, призначену для

розробки й налагодження EJB, а також, можливо, інші інструменти

(наприклад, засоби створення користувальницьких інтерфейсів Web-Додатків

або засоби оптимізації продуктивності додатків).

Borland JBuilder 9 і Borland Enterprise Studio 6 for Java

У цей час компанія Borland є лідером ринку засобів розробки Java-

Додатків – її продукти JBuilder і Enterprise Studio for Java стали одними із

самих популярних засобів розробки й компанія приділяє їхньому розвитку

максимум уваги.

JBuilder 9, випущений у травні цього року, поставляється як окремо,

так і в складі пакета Borland Enterprise Studio 6 for Java. Цей продукт

підтримує всі стандарти Java 2 (J2SE, J2EE, J2ME), має різноманітні засоби

підвищення продуктивності праці розроблювачів і скорочення витрат на

створення додатків, включаючи різноманітні засоби рефакторинга,

інструменти конвертації файлів SQLJ в Java-Код, засоби, що спрощують

поставку й розгортання додатків, у тому числі J2 EE-Додатків, майстри

створення Web-Додатків і Web-сервісів, засоби генерації клієнтських класів

на підставі WSDL-Описів. Крім того, цей продукт легко інтегрується з J2 EE-

Сумісним сервером додатків Borland Enterprise Server, із засобами підтримки

різних етапів життєвого циклу розробки додатків і засобами керування

Page 18: 388175

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

колективною розробкою додатків, придбаними корпорацією Borland

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

розробкою Borland StarTeam, засобом UML-Моделювання Borland Together

Edition for JBuilder, а також із засобом оптимізації Borland Optimizeit Suite,

що дозволяє оптимізувати код JSP (JavaServer Pages), сервлетів, EJB. З

рис. 1.4 видно, наприклад, що й консоль Borland Enterprise Server, і

репозитарий StarTeam доступні безпосередньо із середовища розробки.

Рис. 1.4. Середовище розробки Borland JBuilder 9

До складу даного продукту також входять інтерфейси до найбільш

популярних засобів контролю версій вихідних текстів додатків, конфігуруємі

інтелектуальні шаблони вихідних текстів програм (Smart Code templates) для

автоматизації написання коду, а також майстри для створення Web-Сервісів.

Для розроблювачів крос-платформних додатків реалізована підтримка

Apache Ant – платформенно-незалежного інструмента з відкритими

вихідними текстами для об’єктно-орієнтованого керування процесом

складання додатка за допомогою конфігураційних файлів, написаних мовою

XML. До складу пакета JBuilder 9 включені засоби розробки додатків

JBuilder MobileSet для мобільних платформ, зокрема стільникових телефонів

Page 19: 388175

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

Nokia і Siemens. До безсумнівних переваг даного продукту варто віднести

підтримку серверів додатків різних виробників, у тому числі IBM і BEA.

Поряд з декількома різними редакціями JBuilder компанія Borland

поставляє інтегрований пакет для розроблювачів Borland Enterprise Studio 6

for Java, призначений для підтримки всього життєвого циклу додатків і

утримуючий, крім Borland JBuilder 9, засіб керування вимогами Borland

CaliberRM, Borland Together Edition for JBuilder 6.1, Borland Optimizeit Suite

5.5, Borland Enterprise Server 5.2, Borland JDataStore 6 і Borland StarTeam.

IBM WebSphere Studio 5

IBM WebSphere Studio 5 являє собою інтегрований набір засобів

розробки Java-Додатків, заснований на WebSphere Studio WorkBench –

реалізації IBM платформи Eclipse, призначеної для інтеграції різних

інструментів розробки в єдине середовище (рис. 1.5). Даний пакет є першою

в галузі єдиним корпоративним середовищем розробки Web-Сервісів для

різних платформ, включаючи успадковані платформи, у цьому продукті

вперше пропонується можливість розробки Web-Сервісів на базі

успадкованих додатків, написаних на мовах COBOL і PL1.

Рис. 1.5. Середовище розробки IBM WebSphere Studio 5

Page 20: 388175

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

Існує кілька редакцій цього продукту, призначених для створення Web-

Сайтів, корпоративних додатків, мобільних рішень. До складу всіх редакцій

WebSphere Studio входять сервер додатків WebSphere Application Server

Developer Edition, інструменти для поставки Web-Додатків, а також

інтегровані в продукт засоби тестування й налагодження компонентів

додатка, таких як EJB, JSP, HTML-Код.

WebSphere Studio має розвинені засоби підтримки Web-Сервісів XML.

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

Web-Сервісів – для цієї мети існують відповідні майстри, які генерують

WSDL-Код, дані UDDI і клієнтський додаток для тестування. За допомогою

WebSphere Studio можна також створювати клієнтські додатки до вже

існуючих Web-Сервісів.

До складу WebSphere Studio 5 не включені засоби UML-Моделювання,

однак розроблювачі можуть вибрати яке-небудь із існуючих подібних

засобів, що належать тій же компанії IBM (наприклад, Rational XDE), і

інтегрувати їх в WebSphere Studio WorkBench. Для підтримки колективної

розробки передбачені модулі розширення для Concurrent Versions System

(CVS) – засоби контролю версій, що ставиться до категорії Open Source. Є

також модулі розширення для інших засобів контролю версій, створені

незалежними виробниками.

WebSphere Studio можна використовувати на платформах Microsoft

Windows 98/Mе/NT/2000, RedHat Linux, SuSE Linux. Однак створені за

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

платформах при наявності J2 EE-Сумісного сервера додатків і відповідних

засобів поставки додатків, створених незалежними виробниками.

JetBrains Intelli IDEA 3.0

Засіб розробки Java-Додатків Intelli IDEA чеської компанії JetBrains

останнім часом залучає до себе все більше уваги завдяки високій якості

Page 21: 388175

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

продукту й зручності його застосування (гасло авторів цього продукту:

«Develop with Pleasure!» – «Розробляйте із задоволенням!»).

Intelli IDEA 3.0 містить надзвичайно розвинені засоби автоматичного

завершення коду, застосування шаблонів, пошуку, оптимізації, налагодження

й рефакторинга коду й навіть запису зненацька сгенерованих ідей з метою

їхньої наступної реалізації; дозволяє розширювати середовище розробки

продуктами незалежних компаній, надаючи для цього відповідний

прикладний програмний інтерфейс – Open API; містить розвинені засоби

створення, перетворення й редагування XML-Документів і пошуку помилок

у них, засоби інтеграції з інструментами контролю версій, засіб тестування

JUnit, інструмент складання додатків Jakarta Ant, компілятор Jikes

(високопродуктивний компілятор Java-Коду в байт-код, написаний мовою C+

+), засобу інтеграції з Microsoft Visual SourceSafe (рис. 1.6).

Рис. 1.6. Середовище розробки JetBrains Intelli

Intelli IDEA підтримує створення J2SE-, JSP- і J2 EE-Додатків,

створення й застосування Web-Сервісів.

Page 22: 388175

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

Eclipse

Eclipse (від англ. затьмарення[1]) – вільне інтегроване середовище

розробки модульних кроссплатформенних додатків. Розвивається й

підтримується Eclipse Foundation.

Найбільш відомі додатки на основі Eclipse Platform – різні «Eclipse

IDE» для розробки ПО на безлічі мов (наприклад, найбільш популярний

«JavaIDE», підтримуваний початково, не покладається на які-небудь закриті

розширення, використовує стандартний відкритий API для доступу до Eclipse

Platform).

Історія: спочатку Eclipse розроблялася фірмою IBM як спадкоємець

середовища розробки IBM VisualAge, як корпоративний стандарт IDE для

розробки на різних мовах під платформи IBM. По відомостях IBM,

проектування й розробка коштували 40 мільйонів долларів. Исходный код

був повністю відкритий і зроблений доступним після того, як Eclipse був

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

В Eclipse 3.0 (2003 год) були обрані специфікації сервісної платформи

OSGi, як архітектура часу виконання. З версії 3.0 Eclipse перестав бути

монолітною IDE, що підтримує розширення, а сам став набором розширень.

В основі лежать фреймворк OSGi і SWT/JFace, на основі яких розроблений

наступний рівень – RCP (Rich Client Platform, платформа для розробки

повноцінних клієнтських додатків). RCP є основою не тільки для Eclipse, але

й для інших RCP-Додатків, наприклад Azureus і File Arranger. Наступний

рівень – сам Eclipse, що представляє собою набір розширень RCP –

редактори, панелі, перспективи, модуль CVS і модуль Java Development Tools

(JDT).

Остання стабільна версія програми – 3.5 (Galileo). Вона, як і попередня

їй версія 3.4 (Ganymede), підтримує нові можливості, що з'явилися в Java 6.0,

і містить відновлення ключової OSGi-OSGi-моделі компонентів Equinox.

Page 23: 388175

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

Переваги: Eclipse – у першу чергу повноцінна Java IDE, націлена на

групову розробку: підтримка CVS входить у поставку Eclipse, активно

розвиваються кілька варіантів SVN-модулів, існує підтримка VSS і інших. У

силу безкоштовності й високої якості, Eclipse у багатьох організаціях є

корпоративним стандартом для розробки додатків.

Друге призначення Eclipse – служити платформою для розробки нових

розширень, чим він і завоював популярність: будь-який розроблювач може

розширити Eclipse своїми модулями. Уже існують C/C++ Development Tools

(CDT), які розробляються інженерами QNX разом з IBM, і засобу для мов

COBOL, FORTRAN, PHP та ін. від різних розробників. Безліч розширень

доповнює середовище Eclipse менеджерами для роботи з базами даних,

серверами додатків і ін.

Eclipse написана на Java, тому є платформо-незалежним продуктом, за

винятком бібліотеки SWT, що розробляється для всіх розповсюджених

платформ (див. нижче). Бібліотека SWT використовується замість

стандартної для Java бібліотеки Swing. Вона повністю опирається на

платформу нижче (операційну систему), що забезпечує швидкість і

натуральний зовнішній вигляд користувальницького інтерфейсу, але іноді

викликає на різних платформах проблеми сумісності й стійкості додатків.

Архітектура: основою Eclipse є платформа розширеного клієнта (RCP-

від англ. rich client platform). Її складають наступні компоненти:

- Ядро платформи (завантаження Eclipse, запуск модулів);

- OSGi (стандартне середовище поставки комплектів

(англ.bundles));

– SWT (портуємий інструментарій віджетів);

– JFace (файлові буфери, робота з текстом, текстові редактори);

Робітниче середовище Eclipse (панелі, редактори, проекції, майстри).

GUI в Eclipse написаний з використанням інструментарію SWT.

Останній, на відміну від Swing (який самостійно емулює графічні елементи

Page 24: 388175

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

керування), використовує графічні компоненти даної операційної системи.

Користувальницький інтерфейс Eclipse також залежить від проміжного рівня

GUI, називаного JFace, що спрощує побудовукористувальницького

інтерфейсу, що базується на SWT.

Гнучкість Eclipse забезпечується за рахунок підключаємих модулів,

завдяки чому можлива розробка не тільки на Java, але й на інших мовах,

таких як C/C++, Perl, Groovy, Ruby, Python, PHP, Erlangта інші.

NetBeans

NetBeans IDE – вільне інтегроване середовище розробки додатків (IDE)

на мовах прогрмування Java, JavaFX, Ruby, Python, PHP, JavaScript, C++ і

ряді інших.

Середовище IDE NetBeans являє собою стандартне модульне

інтегроване середовище розробки (Integrated Development Environment; IDE),

написане мовою програмування Java. Проект NetBeans складається з

інтегрованого середовища розробки з відкритим вихідним кодом, написаного

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

загальна платформа для створення додатків будь-якого типу.

Середовище NetBeans – це інтегроване середовище для розроблювачів,

засіб для програмістів, що допомагає писати, компілювати й налагоджувати

програми. Вона написана мовою програмування Java, однак може

підтримувати розробку на будь-якій мові. Існує також велика кількість

модулів, що розширюють її функціональність. IDE NetBeans – це

безкоштовний продукт без обмежень на область його застосування.

Доступна також Платформа NetBeans – модульна й розширювана

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

настільних додатків. Незалежні постачальники – партнери Sun, надають різні

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

використані для розробки їхніх засобів і рішень.

Page 25: 388175

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

Для розробки програм у середовищі NetBeans і для успішної інсталяції

й роботи самого середовища NetBeans повинен бути попередньо

встановлений Sun JDK або J2EE SDK відповідної версії. Середовище

розробки NetBeans за замовчуванням підтримувала розробку для платформ

J2SE і J2EE. Починаючи з версії 6.0 Netbeans підтримує розробку для

мобільних платформ J2ME, C++ (тільки g++), PHP і Ruby без установки

додаткових компонентів.

Проект NetBeans IDE підтримується й спонсуєтся компанією Oracle,

однак розробка NetBeans ведеться незалежно співтовариством

розроблювачів-ентузіастів (NetBeans Community) і компанією NetBeans Org.

По якості й можливостям останні версії NetBeans IDE не уступають

кращим комерційним (платним) інтегрованим середовищам розробки для

мови Java, таким, як IntelliJ IDEA, підтримуючи рефакторинг, профілювання,

виділення синтаксичних конструкцій кольором, автододавання конструкцій,

що набираються, на льоту, безліч визначених шаблонів коду й ін.

У версії NetBeans IDE 6.1[1]декларується підтримка UML, SOA, мови

програмування Ruby (включаючи підтримку Ruby on Rails), а також засобу

для створення додатків на J2ME для мобільних телефонів. У версії 6.5 додана

підтримка мови PHP. Також для тестування викладено модуль підтримки

Python[2].

NetBeans IDE підтримує плагіни, дозволяючи розроблювачам

розширювати можливості середовища. Одним із найпопулярніших плагінів є

потужний дизайнер звітів iReport[3] (заснований на бібліотеці JasperReports).

На ідеях, технологіях і в значній частині на вихідному коді NetBeans

IDE базуються пропоновані фірмою Sun комерційні інтегровані середовища

розробки для Java – Sun Java Studio Creator, Sun Java Studio Enterprise і Sun

Studio (для ведення розробки на C, C++ або Фортран). Порівняно недавно

Sun стала пропонувати ці середовища розробки безкоштовно для

зареєстрованих в Sun Developer Network (SDN) розроблювачів, сама ж

Page 26: 388175

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

реєстрація на сайті безкоштовна й не вимагає ніяких попередніх умов, крім

згоди з ліцензією CDDL.

NetBeans IDE доступна у вигляді готових дистрибутивів

(перекомпільованих бінарних файлів) для платформ Microsoft Windows,

GNU/Linux, FreeBSD, Mac OS X, OpenSolaris і Solaris (як для SPARC, так і

для x86 – Intel і AMD). Для всіх інших платформ доступна можливість

скомпілювати NetBeans самостійно з вихідних текстів.

У релізі NetBeans IDE 6.7 була додана інтеграція з Project Kenai[4],

підтримка мови Groovy і веб-фреймворка Grails. У версії 6.8 – підтримка

PHP-Фреймворка Symfony.

NetBeans IDE 6.0, створена на основі попередньої версії 5.5.1, надає

гнучку підтримку створення модулів для IDE і інтернет-додатків, заснованих

на платформі NetBeans, новий дизайнер користувальницьких інтерфейсів

(відомий за назвою «Проект Matisse»), нову й перероблену підтримку

системи керування версіями CVS, підтримку Weblogic 9 і JBoss 4, і безліч

поліпшень у редакторі. NetBeans 6.0 поставляється в складі дистрибутивів

Ubuntu 8.04 і Debian Linux distributions.[8]

NetBeans IDE 6.5, випущена в листопаді 2008 року, розширює

можливості Java EE (включаючи підтримку Java Persistence, EJB 3 і JAX-WS).

Додатково, NetBeans Enterprise Pack підтримує розробку додатків Java EE 5

Enterprise, включаючи візуальні засоби SOA, засоби для роботи з XML

schema, роботу з веб-сервісами (для BPEL), і моделювання мовою UML.

Складання NetBeans IDE Bundle for C/C++ підтримує проекти на мовах C/C+

+.

Поточна версія середовища – NetBeans IDE 6.8

Page 27: 388175

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

2. Основні принципи програмування в середовищі JAVA

2.1 Загальні уявлення про мову Java

Java став першою універсальною C-Образною мовою прикладного

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

кількості програмістів, знайомих з C і C++. А наявність засобів строгої

перевірки типів, орієнтація на роботу з комп'ютерними мережами,

переносимість на рівні коду, що виконується, і підтримка

платформонезалежного графічного інтерфейсу, а також заборона прямого

звертання до апаратури забезпечили виконання більшості вимог, що

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

швидкодія й обсяг пам'яті комп'ютерів, тим більша потреба в поділі

прикладного й системного програмного забезпечення. Відповідно, для

прикладних програм зникає необхідність прямо звертатися до пам'яті й

інших апаратних пристроїв комп'ютера. Тому серед прикладних програм з

кожним роком росте частка програмного забезпечення, написаного на Java і

мовах. Net. Але як по числу програмістів, так і по числу пристроїв, що

використовують відповідні платформи, Java у цей час лідирує з більшим

відривом.

2.2 Ідентифікатори. Змінні й типи. Примітивні й посилальні типи

Ідентифікатори – це імена змінних, підпрограм-функцій і інших

елементів мови програмування. В ідентифікаторах можна застосовувати

тільки букви й цифри, причому першою завжди повинна бути буква (у тому

числі символи підкреслення й долара), а далі може йти довільна комбінація

букв і цифр. Деякі символи національних алфавітів розглядаються як букви, і

Page 28: 388175

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

їх можна застосовувати в ідентифікаторах. Але деякі використовуються як

символи-роздільників, і в ідентифікаторах їх використовувати не можна.

Мова Java регістро-чутлива. Це значить, що ідентифікатори чутливі до

того, у якому регістрі (верхньому або нижньому) набираються символи.

Наприклад, імена i1 і I1 відповідають різним ідентифікаторам. Це правило

звично для тих, хто вивчав мови C/C++, але може спочатку викликати

складності в тих, хто вивчав мову PASCAL, що є регістро-нечутливим.

Довжина ідентифікатора в Java будь яка, принаймні, у межах

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

компілятор NetBeans правильно працює.

Змінна – це іменована комірка пам'яті, уміст якої може змінюватися.

Перед тим, як використовувати яку-небудь змінну, вона повинна бути задана

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

оголошенні змінної спочатку вказується тип змінної, а потім ідентифікатор

задаваємої змінної. Вказівка типу дозволяє компіляторові задавати розмір

осередку (обсяг пам'яті, виділюваної під змінну або значення даного типу), а

також припустимого правила дій зі змінними й значеннями цього типу. В

Java існує ряд визначених типів: int – ціле число, float – речовинне число,

boolean – логічне значення, Object – найпростіший об'єктний тип (клас) Java, і

т.д. Також є можливість задавати власні об'єктні типи (класи).

Оголошення змінних a1 і b1, що мають якийсь тип MyType1,

здійснюється так:

MyType1 a1, b1;

При цьому MyType1 – ім'я типу цих змінних.

Інший приклад – оголошення змінної j типу int:

int j;

Типи бувають визначені й користувальницькі. Наприклад, int –

визначений тип, а MyType1 – користувальницький. Для оголошення змінної

Page 29: 388175

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

не потрібно ніякого зарезервованого слова, а ім'я типу пишеться перед

іменами задаваємих змінних.

Оголошення змінних може супроводжуватися їхньою ініціалізацією –

присвоюванням початкових значень. Приведемо приклад такого оголошення

цілочисельних змінних i1 і i2:

int i1=5;

int i2=-78;

або

int i1=5, i2=-78;

Присвоювання виду int i1=i2=5;, характерні для C/C++, заборонені.

Для починаючих програмістів відзначимо, що символ «=»

використовується в Java і багатьох інших мовах як символ присвоювання, а

не символу рівності, як це прийнято в математиці. Він означає, що значення,

що знаходиться із правої сторони від цього символу, копіюється в змінну,

що стоїть в лівій частині. Тобто, наприклад, присвоювання b=a означає, що в

змінну (осередок) з ім'ям b треба скопіювати значення зі змінної (осередку) з

ім'ям a. Тому неправильне з погляду математики вираження

x=x+1

у програмуванні цілком коректно. Воно означає, що треба взяти

значення, що зберігається в осередку з ім'ям x, додати до нього 1 (це буде

відбуватися десь поза осередком x), після чого результат, що вийшов,

записати в осередок x, замінивши їм колишнє значення.

Після оголошення змінних вони можуть бути використані у

вираженнях і присвоюваннях:

змінна=значення;

змінна=вираження;

змінна1= змінна2;

і так далі. Наприклад,

i1=i2+5*i1;

Page 30: 388175

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

Примітивними типами називаються такі, для яких дані втримуються в

одній комірці пам'яті, і цей осередок не має підосередків.

Посилальними типами називаються такі, для яких у комірці пам'яті

(посилальної змінної) утримуються не самі дані, а тільки адреси цих даних,

тобто посилання на дані. При присвоюванні в посилальну змінну заноситься

нова адреса, а не самі дані. Але безпосереднього доступу до адреси, що

зберігається в посилальних змінних, немає. Це зроблено для забезпечення

безпеки роботи з даними – як з погляду усунення ненавмисних помилок,

характерних для роботи з даними по їхніх адресах у мовах C/C++/PASCAL,

так і для усунення можливості навмисного злому інформації.

Якщо посилальної змінної не привласнено посилання, у ній

зберігається нульова адреса, якому дане символічне ім'я null. Посилання

можна привласнювати один одному, якщо вони сумісні по типах, а також

привласнювати значення null. При цьому з однієї посилальної змінної в іншу

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

числі на рівність null. При цьому рівняються не дані, а їхньої адреси, що

зберігаються в посилальні змінні.

В Java всі типи діляться на примітивні й посилальні. До примітивних

типів ставляться наступні визначені типи: цілочисельні типи byte, short, int,

long, char, типи даних у форматі із плаваючою крапкою float, double, а також

булевий (логічний) тип boolean і типи-перерахування, що повідомляються за

допомогою зарезервованого слова enum (скорочення від enumeration –

«перерахування»). Всі інші типи Java є посилальними.

В Java діють наступні угоди про регістр букв в ідентифікаторах:

Імена примітивних типів варто писати в нижньому регістрі

(малими літерами). Наприклад, int, float, boolean і т.д.

Імена посилальних типів варто починати із заголовної (великий)

букви, а далі для імен, що складаються з одного слова, писати всі інші букви

в нижньому регістрі. Наприклад, Object, Float, Boolean, Collection, Runnable.

Page 31: 388175

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

Але якщо ім'я складене, нову частина імені починають із заголовної букви.

Наприклад, JButton, JTextField, JFormattedTextField, MyType і т.д. Зверніть

увагу, що типи float і Float, boolean і Boolean різні – мова Java чутлива до

регістра букв!

Для змінних і методів імена, що складаються з одного слова,

варто писати в нижньому регістрі. Наприклад, i, j, object1. Якщо ім'я

складене, нову частину імені починають із заголовної букви: myVariable,

jButton2, jTextField2.getText() і т.д.

Імена констант варто писати у верхньому регістрі (більшими

буквами), розділяючи вхідні в ім'я складові частини символом підкреслення

«_». Наприклад, Double.MIN_VALUE, Double.MAX_VALUE,

JOptionPane.INFORMATION_MESSAGE, MY_CHARS_COUNT і т. п.

Символ підкреслення «_» рекомендується використовувати для

поділу складових частин імені тільки в іменах констант і пакетів.

Змінна примітивного типу може бути ототожнена з осередком, у якій

зберігаються дані. У неї завжди є ім'я. Присвоювання змінної примітивного

типу змінює значення даних. Для посилальних змінних дії виконуються з

адресами осередків, у яких зберігаються дані, а не із самими даними.

Для чого потрібні такі ускладнення? Адже людині набагато

природніше працювати з комірками пам'яті, у яких зберігаються дані, а не

адреси цих даних. Відповідь полягає в тім, що в програмах часто потрібні

динамічно створювані й знищувані дані. Для них не можна заздалегідь

створити необхідне число змінних, тому що це число невідомо на етапі

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

поміщати в динамічно створювані й знищувані осередки. А із цими

осередками вдається працювати тільки за допомогою посилальних змінних.

Посилальні типи Java використовуються в об'єктному програмуванні.

Зокрема, для роботи з рядками, файлами, елементами користувальницького

Page 32: 388175

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

інтерфейсу. Всі користувальницькі типи (задаються програмістом), крім

типів-перерахувань, є посилальними. У тому числі – строкові типи.

2.3 Зарезервовані слова мови Java

Це слова, зарезервовані для синтаксичних конструкцій мови, причому

їхнє призначення не можна перевизначати усередині програми (див. табл.

2,1).

Таблиця 2.1. Зарезервовані слова мови Java

abstract boolean break byte case

catch char class const continue

default do double else enum

extends false final finally float

for goto if implements import

instanceof int interface long native

new null package private protected

public return short static super

switch synchronized this throw throws

transient true try void volatile

while

Їх не можна використовувати як ідентифікатори (імен змінних,

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

2.4 Керуючі послідовності

Керуючі послідовності – символи формування тексту

Іноді в тексті програми в строкових константах потрібно

використовувати символи, які звичайним образом у текст програми ввести не

можна. Наприклад, символи лапок (їх треба використовувати усередині

Page 33: 388175

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

лапок, що важко), символ питання (зарезервований для тернарного умовного

оператора), а також різні спеціальні символи. У цьому випадку

використовують керуючу послідовність – символ зворотної косої риси, після

якої слідує один керуючий символ. У таблиці 2.2 наведені керуючі

послідовності, що застосовуються в мові Java.

Таблиця 2.2. Символи формування тексту

Символ Що означає

\a дзвінок

\b повернення на один символ назад

\f перехід на нову сторінку

\n перехід на новий рядок

\r повернення до початку рядка

\t горизонтальна табуляція

\v вертикальна табуляція

\’ лапки

\» подвійні лапки

\\ зворотна коса риса

\? знак питання

\u початок кодування символу Unicode

Керуючі послідовності – символи Unicode

Керуюча послідовність може містити кілька символів. Наприклад,

символи національних алфавітів можуть кодуватися послідовністю «\u»,

після якої йде код символу в щістнадцятиричному кодуванню для кодових

таблиць UTF-16 або UTF-8. Наприклад:

\u0030 – \u0039 – цифри ISO-LATIN від 0 до 9

\u0024 – знак долара $

\u0041 – \u005a – букви від A до Z

\u0061 – \u007a – букви від a до z

Прості спеціальні символи

Page 34: 388175

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

В мові програмування Java використовуються прості спеціальні

символи наведені в таблиці 2.3

Таблиця 2.3. Прості спеціальні символи

+ Оператор додавання . Крапка – десятковий роздільник у

числовому літерному вираженні;

роздільник у складеному імені для

доступу до елемента пакета, класу,

об'єкта, інтерфейсу

– Оператор вирахування (

Продовження таблиці 2,3

Ліва кругла дужка – використовується

для відкриття списку параметрів в

операторах і для відкриття групуємої

частини у вираженнях

* Оператор множення ) Права кругла дужка – використовується

для закриття списку параметрів в

операторах і для закриття групуємої

частини у вираженнях

/ Оператор розподілу [ Ліва квадратна дужка – відкриття індексу

масиву

% Оператор залишку від

цілочисельного розподілу

] Права квадратна дужка – закриття

індексу масиву

= Оператор присвоювання ; Крапка з комою – закінчення оператора

~ Оператор побітового

доповнення (побітове «не»)

' Апостроф (одиночні лапки) – відкриття й

закриття символу

? Знак питання – частина

тернарного (щоскладається із

трьох частин) умовного

оператора «?:»

»

Продовження таблиці 2,3

Подвійні лапки – відкриття й закриття

рядка символів

: Двокрапка – частина умовного

оператора «?:». Також

використовується для завдання

мітки – ставиться після імені

мітки.

\ зворотна коса риса (backslash) –

використовується для завдання керуючих

послідовностей символів

^ Оператор «щовиключає або»

(XOR)

знак пробілу (невидимий)

Page 35: 388175

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

& Оператор «побітове й» (AND) знак табуляції (невидимий)

| Оператор «побітове або» (OR) @ Комерційне a («ет») – знак початку

метаданих

! Оператор «НЕ» # – не має спеціального призначення

> Більше ¤ – не має спеціального призначення

< Менше « – не має спеціального призначення

{ Ліва фігурна дужка – відкриття

блоку коду

» – не має спеціального призначення

} Права фігурна дужка –

закриття блоку коду

Продовження таблиці 2,3

– не має спеціального призначення

, Кома – роздільник у списку

параметрів оператора;

роздільник у складеному

операторі

§ – не має спеціального призначення

Складені спеціальні символи

В мові програмування Java використовуються складені спеціальні

символи наведені в таблиці 2.4

Таблиця 2.4. Складені спеціальні символи

Символ Що означає

++ Оператор інкремента (збільшення на 1); x++ еквівалентно x=x+1

– Оператор декремента (зменшення на 1); x-x – еквівалентно x= x-1

&& Оператор «логічне І» (AND)

|| Оператор «логічне АБО» (OR)

<< Оператор лівого побітового зрушення

>>> Оператор беззнакового правого побітового зрушення

>> Оператор правого побітового зрушення зі збереженням знака негативного числа

== Дорівнює

! = не дорівнює

+= y+=x еквівалентно y=y+x

-= y-y-=x еквівалентно y= y-x

*= y*=x еквівалентно y=y*x

/= y/=x еквівалентно y=y/x

Page 36: 388175

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

%= y%=x еквівалентно y=y % x

|= y|=x еквівалентно y=y|x

^= y^=x еквівалентно y=y^x

>>= y>>=x еквівалентно y= y>>x

>>>= y>>>=x еквівалентно y= y>>>x

<<= y<<=x еквівалентно y= y<<x

/* Початок багатострокового коментарю.

/** Початок багатострокового коментарю, призначеного для автоматичного створення

документації по класі.

*/ Кінець багатострокового коментарю (що відкривається як /* або /**).

// Однорядковий коментар.

2.5 Складений оператор

Відповідно до синтаксису мови Java у багатьох конструкціях може

стояти тільки один оператор, але часто зустрічається ситуація, коли треба

використовувати послідовність із декількох операторів.

Складений оператор – блок коду між фігурними дужками {}:

Є два загальноприйнятих способи форматування тексту з

використанням фігурних дужок.

У першому з них дужки пишуть друг під другом, а текст, що перебуває

між ними, зрушують на 1–2 символу вправо (зрідка – більше). Приклад:

оператор

{

послідовність простих або складених операторів

}

У другому, більше розповсюдженому, відкриваючу фігурну дужку

пишуть на тім же рядку, де повинен починатися складений оператор, без

переносу його на наступний рядок. А закриваючу дужку пишуть під першим

словом. Приклад:

оператор {

Page 37: 388175

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

послідовність простих або складених операторів

}

Саме такий спосіб установлений за замовчуванням у середовищі

NetBeans, і саме він використовується у фрагментах програмного коду, що

приводяться в, даній книзі. Проте, автор віддає перевагу першому способу

форматування програмного коду, тому що він більше читаємий. Для

установки такого способу форматування вихідного коду варто перейти в

меню Tools/Options, вибрати Editor/Indentation, після чого в діалоговій формі,

що з'явилася, відзначити галочкою пункт AddNewLineBeforeBrace.

Після фігурних дужок за правилами Java, як і в /C++, ставити

символ»;» не треба.

2.6 Умовний оператор if

В умовного оператора if є дві форми: if і if – else.

По-англійському if означає «якщо», else – «у противному випадку».

Таким чином, ці оператори можуть бути переведені як «якщо…те…» і

«якщо…те…у противному випадку…».

Перша форма:

if(умова)

оператор1;

Якщо умова дорівнює true, виконується оператор1. Якщо ж

умова==false, в операторі не виконується ніяких дій.

Друга форма:

if(умова)

оператор1;

else

оператор2;

Page 38: 388175

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

У цьому варіанті оператора if якщо умова==false, то виконується

оператор2.

Потрібно звернути особливу увагу на форматування тексту. Не можна

розташовувати всі частини оператора if на одному рядку – це характерно для

новачків!

Приклад:

if (a<b)

a=a+1;

elseif (a==b)

a=a+1;

else {

a=a+1;

b=b+1;

};

Із цього правила є виключення: якщо підряд іде велика кількість

операторів if, що вміщаються в один рядок, для підвищення читаності

програм буває доцільно не переносити інші частини операторів на окремі

рядки.

2.7 Оператор вибору switch

Є аналогом if для декількох умов вибору. Синтаксис оператора

наступний:

switch(вираження) {

case значення1: оператори1;

……………………………

caseзначение: оператори N;

default: оператори;

}

Page 39: 388175

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

Правда, украй незручно, що не можна не вказувати діапазон значень, не

перераховувати через кому значення, яким відповідають однакові оператори.

Тип вираження повинен бути яким-небудь із цілих типів. Зокрема,

неприпустимі речовинні типи.

Працює оператор у такий спосіб: спочатку обчислюється вираження.

Потім обчислене значення рівняється зі значеннями варіантів, які повинні

бути визначені ще на етапі компіляції програми. Якщо знайдено варіант,

якому задовольняє значення вираження, виконується відповідному цьому

варіанту послідовність операторів, після чого НЕ ВІДБУВАЄТЬСЯ виходу з

оператора case, що було б природно. – Для такого виходу треба поставити

оператор break. Ця неприємна особливість Java успадкована від мови C.

Частина з default є необов'язковою й виконується, якщо жоден варіант

не знайдений.

Приклад:

switch (i/j) {

case 1:

i=0;

break;

case 2:

i=2;

break;

case 10:

i=3;

j=j/10;

break;

default:

i=4;

};

В оператора switch є дві особливості:

Page 40: 388175

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

Можна писати довільне число операторів для кожного варіанта case,

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

Вихід з виконання послідовності операторів здійснюється за

допомогою оператора break. Якщо він відсутній, відбувається

«провалювання» у блок операторів, що відповідають наступному варіанту за

тим, з яким збіглося значення вираження. При цьому ніякої перевірки

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

не зустрінеться оператор break або не скінчаться всі оператори у варіантах

вибору. Такі правила перевірки породжують типову помилку, називану

«забутий break».

2.8 Умовне вираження…?…:…

Ця не дуже вдала по синтаксису функція успадкована з мови C. Її

синтаксис такий:

умова? значення1:значення2

У випадку, коли умова має значення true, функція повертає значення1,

у противному випадку вертається значення2.

Наприклад, ми хочемо привласнити змінної j значення, рівне i+1 при

i<5, і i+2 в інших випадках. Це можна зробити в такий спосіб:

j=i<5? i+1:i+2

Іноді при обчисленні громіздких виражень цей оператор доводиться

використовувати: без нього програма виявляється ще менш прозорою, чим з

ним. Пріоритет роздільників»?» і»:» дуже низький – нижче тільки пріоритет

оператора присвоювання (у будь-яких його формах). Тому можна писати

вираження без використання дужок. Але краще все-таки використовувати

дужки:

j=(i<5)? (i+1): (i+2)

Page 41: 388175

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

2.9 Оператори інкремента ++ і декремента –і

Оператор «++» називається інкрементным («збільшуючим»), а «-і»

декрементним («зменшуючим»). У цих операторів є дві форми, постфіксна

(найпоширеніша, коли оператор ставиться після операнда) і префіксна

(використовується дуже рідко, у ній оператор ставиться перед операндом).

Для будь-якої числової величини x вираження x++ або ++x означає

збільшення x на 1, а вираження x – або -іx означає зменшення x на 1.

Розходження двох форм пов'язане з тим, коли відбувається зміна

величини – після обчислення вираження, у якому використовується оператор,

для постфіксної форми, або до цього обчислення – для префіксної.

Наприклад, присвоювання j=i++ і j=++i дадуть різні результати. Якщо

спочатку i=0, то перше присвоювання дасть 0, тому що i збільшиться на 1

після виконання присвоювання. А друге дасть 1, тому що спочатку

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

виконуватися присвоювання. При цьому в обох випадках після виконання

присвоювання i стане дорівнювати 1.

2.10 Оператор циклу for

for (блок ініціалізації; умова виконання тіла циклу;

блок зміни лічильників)

оператор;

У блоці ініціалізації через кому перераховуються оператори завдання

локальних змінних, область існування яких обмежується оператором for.

Також можуть бути привласнені значення змінним, заданим поза циклом.

Але ініціалізація може відбуватися тільки для змінних одного типу.

У блоці умови продовження циклу перевіряється виконання умови, і

якщо воно виконується, іде виконання тіла циклу, у якості якого виступає

Page 42: 388175

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

оператор. Якщо ж не виконується – цикл припиняється, і йде перехід до

оператора програми, що випливає за оператором for.

Після кожного виконання тіла циклу (чергового кроку циклу)

виконуються оператори блоку зміни лічильників. Вони повинні розділятися

комами.

Приклад:

for (int i=1, j=5; i+j<100; i++, j=i+2*j) {

};

Кожний із блоків оператора for є необов'язковим, але при цьому

розділові»;» потрібно писати.

Найбільш уживане використання оператора for – для перебору значень

деякої змінної, що збільшуються або зменшуються на 1, і виконання

послідовності операторів, що використовують ці значення. Змінна

називається лічильником циклу, а послідовності операторів – тілом циклу.

Приклад1: обчислення суми послідовно, що йдуть чисел.

Напишемо цикл, у якому виконується підсумовування всіх чисел від 1

до 100. Результат будемо зберігати в змінної result.

int result=0;

for (int i=1; i<=100; i++) {

result=result+i;

};

Цикл (повторне виконання тих самих дій) виконується в такий спосіб:

До початку циклу створюється змінна result, у якій ми будемо зберігати

результат. Одночасно виконується ініціалізація – привласнюється початкове

значення 0.

Починається цикл. Спочатку виконується блок ініціалізації –

лічильнику циклу i привласнюється значення 1. Блок ініціалізації

виконується тільки один раз на самому початку циклу.

Page 43: 388175

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

Починається перший крок циклу. Перевіряється умова виконання

циклу. Значення i порівнюється з 100.

Оскільки порівняння 1<=100 повертає true, виконується тіло циклу. У

змінної result зберігається 0, а значення i дорівнює 1, тому присвоювання

result=result+i еквівалентно result=1. Таким чином, після першого кроку

циклу в змінної result буде зберігатися значення 1.

Після виконання тіла циклу виконується секція зміни лічильника

циклу, тобто оператор i++, що збільшує i на 1. Значення i стає рівним 2.

Починається другий крок циклу. Перевіряється умова виконання тіла

циклу. Оскільки порівняння 2<=100 повертає true, іде чергове виконання тіла

циклу, а потім – збільшення лічильника циклу.

Кроки циклу тривають доти, поки лічильник циклу не стане рівним

101. У цьому випадку умова виконання тіла циклу 101<=100 повертає false, і

відбувається вихід із циклу. Останнє присвоювання result=result+i, проведене

в циклі, це result=result+100.

Якби нам треба було підсумувати числа від 55 до 1234, у блоці

ініціалізації i треба привласнити 55, а в умові перевірки поставити 1234

замість 100.

Приклад 2: обчислення факторіала.

double x=1;

for (i=1; i<=n; i++) {

x=x*i;

};

Помітимо, що в наведених прикладах можна зробити деякі

вдосконалення – оператори присвоювання записати в такий спосіб:

result+=i; замість result=result+i;

для першого приклада й

x*=i; замість x=x*i;

Page 44: 388175

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

для другого. На початкових стадіях навчання так краще не робити,

оскільки текст програми повинен бути зрозумілий програмістові – всі

алгоритми повинні бути «прозорі» для розуміння.

2.11 Оператор циклу while – цикл із передумовою

while(умова)

оператор;

Поки умова зберігає значення true – у циклі виконується оператор,

інакше – дія циклу припиняється. Якщо умова із самого початку false, цикл

відразу припиняється, і тіло циклу не виконається жодного разу.

Цикл while звичайно застосовують замість циклу for у тому випадку,

якщо умови продовження досить складні. На відміну від циклу for у цьому

випадку немає формально заданого лічильника циклу, і не відбувається його

автоматичної зміни. За це відповідає програміст. Хоча цілком можливе

використання як циклу for замість while, так і навпаки. Багато програмістів

воліють користуватися тільки циклом for як найбільш універсальним.

Приклад:

i=1;

x=0;

while (i<=n) {

x+=i; // еквівалентно x=x+i;

i*=2; // еквівалентно i=2*i;

};

2.12 Оператор циклу do…while – цикл із постумовою

do

оператор;

Page 45: 388175

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

while(умова);

Якщо умова приймає значення false, цикл припиняється. Тіло циклу

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

раз.

Приклад:

int i=0;

double x=1;

do {

i++; // i=i+1;

x*=i; // x=x*i;

}

while (i<n);

Якщо за допомогою оператора do…whileорганізується цикл із

речовинним лічильником або іншою перевіркою на рівність або нерівність

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

описані для циклів for і while.

При необхідності організувати нескінченний цикл (з виходом

зсередини тіла циклу за допомогою оператора переривання) часто

використовують наступний варіант:

do{

}

while(false);

2.13 Оператори переривання continue, break, return, System.exit

Досить часто потрібно при виконанні якої-небудь умови перервати

цикл або підпрограму й перейти до виконання іншого алгоритму або чергової

Page 46: 388175

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

ітерації циклу. При неструктурному програмуванні для цих цілей служив

оператор goto. В Java є більш гнучкі й структурні засоби для рішення цих

проблем – оператори continue, break, return, System.exit:

continue; – переривання виконання тіла циклу й перехід до наступної

ітерації (перевірці умови) поточного циклу;

continue ім'я мітки; – переривання виконання тіла циклу й перехід до

наступної ітерації (перевірці умови) циклу, позначеного міткою (label);

break; – вихід з поточного циклу;

break ім'я мітки; – вихід із циклу, позначеного міткою;

return; – вихід з поточної підпрограми (у тому числі з тіла циклу) без

вороття значення;

return значення; – вихід з поточної підпрограми (у тому числі з тіла

циклу) з поверненням значення;

System.exit(n) – вихід з додатка з кодом завершення n. Ціле число n

довільно задається програмістом. Якщо n=0, вихід уважається нормальним, в

інших випадках – аварійним. Додаток перед завершенням повідомляє число n

операційній системі для того, щоб програміст міг установити, з якої причини

відбувся аварійний вихід.

Оператори continue і break використовуються у двох варіантах – без

міток для виходу з поточного (самого внутрішнього по вкладеності) циклу, і

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

якого стоїть двокрапка. Мітку можна ставити безпосередньо перед ключовим

словом, що починає завдання циклу (for, while, do).

Приклад використання continue без мітки:

for (int i=1; i<=10; i++) {

if (i==(i/2)*2) {

continue;

};

System.out.println («i="+i);

Page 47: 388175

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

};

У даному циклі не будуть друкуватися всі значення i, для яких

i==(i/2)*2. Тобто виводитися у вікно консолі будуть тільки непарні значення

i.

Приклад використання break без мітки:

for (int i=1; i<=10; i++) {

if (i+6== i*i) {

break;

};

System.out.println («i="+i);

};

Даний цикл зупиниться при виконанні умови i+6== i*i. Тобто вивід у

вікно консолі буде тільки для значень i, рівних 1 і 2.

Ще один приклад використання break без мітки:

for (int i=1; i<=20; i++) {

for (int j=1; j<=20; j++) {

if (i*j==(i*j/2)*2) {

break;

};

System.out.println («i="+i+» j= «+j+» 1.0/(i*j-20)="+ (1.0/(i*j-20)));

};};

У цьому випадку будуть виводитися всі значення i та j доти, поки не

найдеться пара i та j, для яких i*j==(i*j/2)*2. Після чого внутрішній цикл

припиняється – значення i, j та 1.0/(i*j-20) для даного й наступного значень j

при відповідному i не будуть виводитися у вікно консолі. Але зовнішній цикл

(по i) буде тривати, і висновок продовжиться для нових

i та j. Результат буде таким же, як для continue з міткою для

зовнішнього циклу.

Page 48: 388175

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

2.14 Робота з рядками в Java. Рядки як об'єкти. Класи String,

StringBuffer і StringBuilder

Клас Stringінкапсулює дії з рядками. Об'єкт типу String – рядок, що

складається з довільного числа символів, від 0 до 2*109. Літерні константи

типу String являють собою послідовності символів, укладені в подвійні

лапки:

» A», «abcd», «abcd», «Мама миє раму», «».

Це так звані «довгі» рядки. Усередині літерної строкової константи не

дозволяється використовувати ряд символів – замість них застосовуються

керуючі послідовності.

Усередині рядка дозволяється використовувати переноси на новий

рядок. Але літерні константи з такими переносами заборонені, і треба

ставити керуючу послідовність «\n». На жаль, такий перенос рядка не

спрацьовує в компонентах.

Дозволено порожні рядки, що не містять жодного символу.

У мові Java строковий і символьний тип несумісні. Тому «A» – рядок з

одного символу, а 'A' – число з ASCII кодом символу «A». Це помітно

ускладнює роботу з рядками й символами.

Рядки можна складати: якщо s1 і s2 строкові літерні константи або

змінні, то результатом операції s1+s2 буде рядок, що є зчепленням

(конкатенацією) рядків, що зберігаються в s1 і s2. Наприклад, у результаті

операції

Strings=» Це «+» мій рядок»;

у змінної s буде зберігатися строкове значення «Це мій рядок».

Для рядків дозволений оператор «+=». Для строкових операндів s1 і s2

вираження

s1+=s2 еквівалентно вираженню s1=s1+s2.

Page 49: 388175

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

Будь-який рядок (набір символів) є об'єктом – екземпляром класу

String. Змінні типу String є посиланнями на об'єкти, що варто враховувати

при передачі параметрів строкового типу в підпрограми, а також при

багаторазових змінах рядків. При кожній зміні рядка в динамічній області

пам'яті створюється новий об'єкт, а колишній перетворюється в «сміття».

Тому при багаторазових змінах рядків у циклі виникає багато сміття, що

небажано.

Дуже частою помилкою є спроба порівняння рядків за допомогою

оператора «==». Наприклад, результатом виконання наступного фрагмента

String s1= «Рядок типу String»;

String s2= «Рядок»;

s2+=» типи String»;

if (s1==s2)

System.out.println («s1 дорівнює s2»);

else

System.out.println («s1 не дорівнює s2»);

буде вивід у консольне вікно рядка «s1 не дорівнює s2», тому що

об'єкти-рядка мають у пам'яті різні адреси. Порівняння по змісту для рядків

виконує оператор equals. Тому якби замість s1==s2 ми написали s1.equals(s2),

те одержали б відповідь «s1 дорівнює s2».

Дивним може здатися факт, що результатом виконання наступного

фрагмента

String s1= «Рядок»;

String s2= «Рядок»;

if (s1==s2)

System.out.println («s1 дорівнює s2»);

else

System.out.println («s1 не дорівнює s2»);

Page 50: 388175

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

буде вивід у консольне вікно рядка «s1 дорівнює s2». Справа в тому,

що оптимізуючий компілятор Java аналізує наявні в коді програми літерні

константи, і для однакових по змісту констант використовує ті самі об'єкти-

рядки.

В інших випадках те, що строкові змінні посилальні, звичайно ніяк не

впливає на роботу зі строковими змінними, і з ними можна діяти так, ніби

вони містили самі рядки.

У класі String є ряд методів. Перелічимо найважливіші з них. Нехай s1 і

sub мають тип String, charArray – масив символів char[], ch1 – змінна або

значення типу char, а i, index1 і count («рахунок, кількість») – цілочисельні

змінні або значення. Тоді

String.valueOf(параметр) – повертає рядок типу String, що є

результатом перетворення параметра в рядок. Параметр може бути будь-

якого примітивного або об'єктного типу.

String.valueOf (charArray, index1, count) – функція, аналогічна

попередньої для масиву символів, але перетвориться count символів

починаючи із символу, що має індекс index1.

2.15 Робота з масивами

Масив (array) – це впорядкований набір однаково влаштованих

осередків, доступ до яких здійснюється по індексу. Наприклад, якщо в

масиву ім'я a1, то a1 [i] – ім'я осередку цього масиву, що має індекс i.

В Javaмасиви є об'єктами, але особливого роду – їхнє оголошення

відрізняється від оголошення інших видів об'єктів. Змінна типу масив є

посилальної – у ній утримується адреса об'єкта, а не сам об'єкт, як і для всіх

інших об'єктних змінних в Java. Як елементи (осередків) масиву можуть

виступати значення як примітивних типів, так і посилальних типів, у тому

числі – змінні типу масив.

Page 51: 388175

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

Тип осередку масиву називається базовим типом для масиву.

Для завдання масиву, на відміну від об'єктів інших типів, не потрібно

попередньо задавати клас, і мати спеціальне ім'я для даного об'єктного типу.

Замість імені класу при оголошенні змінної використається ім'я базового

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

Наприклад, оголошення

int[] a1;

задає змінну a1 типу масив. При цьому розмір масиву (число осередків

у ньому) заздалегідь не задається й не є частиною типу.

Для того, щоб створити об'єкт типу масив, варто скористатися

зарезервованим словом new, після чого вказати ім'я базового типу, а за ним у

квадратних дужках число осередків у створюваному масиві:

a1=new int[10];

Можна сполучити оголошення типу змінної й створення масиву:

int[] a1=new int[10];

Після створення масиви Java завжди ініціалізовані – в осередках

утримуються нулі. Тому якщо базовий тип масиву примітивний, елементи

масиву будуть нулями відповідного типу. А якщо базовий тип посилальний –

в осередках будуть значення null.

Довжина масиву зберігається в полі length, що доступно тільки по

читанню – змінювати його шляхом присвоювання нового значення не можна.

Приклад роботи з масивом:

int[] a=newint[100];

for (int i=0; i<a.length; i++) {

a[i]=i+1;};

Якщо в нас є змінна типу масив, і їй зіставлений масив заданої

довжини, у будь-який момент цієї змінної можна зіставити новий масив.

Наприклад,

a1=new int[20];

Page 52: 388175

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

При цьому колишній масив, що перебуває в динамічній області пам'яті,

буде загублений і перетвориться в сміття.

Змінні типу масив можна привласнювати один одному. Присвоювання

змінних типу масив приводить до того, що імена змінних стають синонімами

того самого масиву – копіюється адреса масиву. А зовсім не приводить до

копіювання елементів з одного масиву в іншій, як це відбувається в деяких

інших мовах програмування.

Двовимірний масив являє собою масив осередків, кожна з яких має тип

«одномірний масив». Відповідним чином він і задається. Наприклад,

завдання двовимірного масиву цілих чисел буде виглядати так:

int[][] a=newint[10] [20];

Буде заданий осередок типу «двовимірний масив», а також створений і

призначений цієї посилальної змінної масив, що має по першому індексі 10

елементів, а по другому 20. Тобто ми маємо 10 осередків типу «одномірний

масив», кожна з яких посилається на масив з 20 цілих чисел. При цьому

базовим типом для осередків по першому індексі є int[], а для осередків по

другому індексі int.

Розглянемо роботу із двовимірними масивами на прикладі заповнення

двовимірного масиву випадковими числами:

int m=10; // 10 рядків

int n=20; // 20 стовпців

int[][] a=newint[m] [n];

for (int i=0; i<m; i++) { // цикл по рядках

for (int j=0; j<n; j++) { // цикл по стовпцях

a[i] [j]=(int) (100*Math.random());

System.out.print (a[i] [j]+»»);};

System.out.println(); // переклад на новий рядок після виводу рядка

матриці

};

Page 53: 388175

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

Після створення масиву потрібно його ініціалізувати – записати

потрібні значення в осередки. Дотепер ми робили це шляхом завдання

значень у циклі по деякій формулі, однак часто потрібно задати конкретні

значення. Дуже зручний наступний варіант синтаксису:

int[] a=newint[] {2,0,0,6};

З об'єктів-масивів можна викликати метод clone(), що дозволяє

створювати копію (клон) масиву:

a=newint[] {2,0,0,6};

int[] a1=a.clone();

Копіювання масивів можна здійснювати в циклі, але набагато швидше

використати метод System.arraycopy.

int[] b=newint [a.length+10];

System.arraycopy (a, index1a, b, index1b, count);

Швидке заповнення масиву однаковими значеннями може

здійснюватися методом Arrays.fill (масив, значення). Клас Arrays

розташований у пакеті java.util. Заелементне порівняння масиву варто

виконувати за допомогою методу Arrays.equals (a, a1). Сортування

(упорядкування за значеннями) масиву a виконуються методами

Arrays.sort(a) і Arrays.sort (a, index1, index2). Перший з них упорядковує в

порядку зростання весь масив, другий – частина елементів (від індексу index1

до індексу index2).

2.16 Створення Java додатка із графічним інтерфейсом

Оскільки, консольний ввід-вивід уживається досить рідко, тепер

розглянемо створення додатку із графічним інтерфейсом.

Екранною формою називається область, видна на екрані у вигляді вікна

з різними елементами – кнопками, текстом, що випадають списками й т.д. А

самі ці елементи називаються компонентами.

Page 54: 388175

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

Форма – це об'єкт, звичайно прямокутної форми, якому можна

застосовувати для надання інформації користувачеві й для обробки уведення

інформації від користувача.

2.17 Редактор екранних форм

Для створення проекту необхідно натиснути File /NewFile. У діалозі,

що відкрився, у списку категорій треба вибратиSwing GUI Forms. Обираємо

тип файлу JFrameForm. НатискаємоNext>. Після цього введемо назву

створюваного класу й пакет, де він буде зберігатися. І натискаємо Finish. IDE

створює новий клас. І відкриває його у візуальному редакторі форми.

Натиснемо закладкуDesign («дизайн») у лівій верхній частині редактора

вихідного коду. При цьому ми перемкнемося з режиму редагування

вихідного коду (активна закладкаSource – «вихідний код») у режим

редагування екранної форми, як це показано на рисунку 2.1.

Рис. 2.1 Редагування екранної форми

Замість вихідного коду показується зовнішній вигляд екранної форми й

компоненти, що перебувають на ній. Праворуч від вікна, у якому показується

екранна форма в режимі редагування, розташовані вікна Palette («палітра»)

Page 55: 388175

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

палітри компонентів і вікно Properties («властивості») показу й редагування

властивостей поточного компонента.

Властивість – це поле даних, що після зміни значення може проробити

яку-небудь дію. Наприклад, при зміні значення ширини компонента

вималювати на екрані компонентів з новою шириною. «Звичайне» поле

даних на таке не здатне. Таким чином, властивість – це «розумне поле

даних».

Палітра компонентів призначена для вибору типу компонента, що

потрібний програмістові для розміщення на екранній формі. Наприклад,

додамо на нашу форму компонентів типу JButton (скорочення від JavaButton

– «кнопка Java»). Для цього клацнемо мишею по пунктіJButton на палітрі й

пересунемо мишу в потрібне місце екранної форми. При влученні миші в

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

пересувається разом з мишею. Клацання в потрібному місці форми

приводить до того, що кнопка залишається в цьому місці. Навколо

їїпоказуються рамка й маленькі квадратики, що позначають, що наш

компонент є виділеним. Для нього здійснюється показ і редагування

властивостей у вікні Properties. Крім того, від виділеного компонента

виходять лінії, до яких іде прив'язка для завдання положення компонента на

формі.

За замовчуванням напису на компонентах задаються як ім'я типу, після

якого йде номер компонента. Але замість заголовної букви, на відміну від

імені типу, використовується рядкова. Тому перша кнопка буде мати напис

jButton1, друга – jButton2, і так далі. Такі ж імена будуть отримувати

автоматично створювані у вихідному коді змінні, відповідним кнопкам.

Змінити напис на кнопці можна декількома способами. По-перше,

зробивши по ній подвійне клацання, і відредагувавши текст. По-друге,

перейшовши у вікно Properties, змінивши значення властивості Text і

нажавши<Enter> для завершення уведення. По-третє, змінивши аналогічним

Page 56: 388175

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

образом властивість label. Нарешті, можна у вікні Properties відредагувати

текст не в однорядковому полі уведення значень для властивостей Text або

label, а відкривши багатостроковий редактор шляхом натискання на кнопку,

що перебуває праворуч від пункту редагування значення властивості. Однак

багатостроковість редактора не допомагає зробити напис на кнопці

багатостроковим.

Введемо на кнопці напис «OK» – використовуємо цю кнопку для

виходу із програми.

Рис. 2.2 Редагування властивостей компонента

Розмір компонента задається мишею шляхом хапання за рамку й

розширення або звуження по відповідних напрямках. Установка на нове

місце – перетаскуванням компонента мишею.

Деякі властивості виділеного компонента (його розмір, положення,

текст) можна змінювати безпосередньо в області екранної форми. Однак

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

властивостей (рис 2.2). Воно складається із двох стовпців: у лівому

показуються імена властивостей, у правому – їхні значення. Значення, які

знаходяться у правому стовпці, у багатьох випадках можуть бути

відредаговані безпосередньо в осередках таблиці. При цьому

Page 57: 388175

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

уведеннязакінчується натисканням на <Enter> або виходом з

редагуємоїячейки, а скасувати результати незакінченого уведення можна

натисканням <Escape>.

У правій частині кожного осередку є кнопка з написом «…» – у

сучасних операційних системах прийнято додавати трикрапки в назві пунктів

меню й кнопок, після натискання на які відкривається діалогове вікно. У

цьому випадку розкривається вікно спеціалізованого редактора відповідної

властивості, якщо він існує.

Якщо потрібно переглядати й редагувати велику кількість властивостей

компонента, буває зручніше клацнути правою кнопкою миші по потрібному

компоненті й у меню що з’явилось вибрати пункт «Properties». У цьому

випадку відкриється окреме вікно редагування властивостей компонента.

Можна тримати відкритими одночасно довільну кількість таких вікон.

Булеві властивості в колонці значень властивостей показуються у

вигляді кнопок вибору checkbox – квадратиків з можливістю установки

галочки усередині. Якщо галочки нема, значення властивості false, якщо є –

true.

Перелічимо в таблиці 2.5 на прикладі кнопки ряд деяких

найважливіших властивостей, які можна встановлювати для компонентів.

Багато з них відноситься й до інших компонентів.

Таблиця 2.5. Властивості компонента JButton

Назва властивості Що воно задає

background Колір тла

componentPopupMenu Дозволяє призначати спливаюче меню, що з'являється по

натисканню правою кнопкою миші в області компонента.

font Шрифт, яким робиться напис на компоненті.

foreground Колір шрифту, яким робиться напис на компоненті.

icon Картинка, що рисується на компоненті поруч із текстом.

text Текст (напис) на компоненті.

Page 58: 388175

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

toolTipText Спливаюча підказка, що з'являється через якийсь час при

наведенні курсору миші на компонент.

border Тип рамки навколо компонента.

borderPainted Чи рисується рамка навколо компонента.

contentAreaFilled Чи є заповнення кольором внутрішньої області компонента (для

кнопок воно створює ефект тривимірності, без заповнення

кнопка виглядає плоскою).

defaultCapable Чи здатна кнопка бути «кнопкою за замовчуванням»: при

натисканні <Enter> автоматично відбувається натискання

«кнопки за замовчуванням» (така кнопка на екранній формі

повинна бути одна).

enabled Чи доступний компонент. За замовчуванням всі створювані на

формі компоненти доступні. Недоступні компоненти рисуються

більш бляклими фарбами.

Як приклад додамо спливаючу підказку для нашої кнопки: уведемо

текст «Ця кнопка призначена для виходу із програми» у поле, що відповідає

властивості toolTipText. На жаль, підказка може бути тільки однорядковою –

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

якщо вони задані в рядку програмним шляхом.

Нарешті, задамо дію, що буде виконуватися при натисканні на кнопку –

оброблювач події (eventhandler) натискання на кнопку. Для цього спочатку

виділимо кнопку, після чого клацнемо по ній правою кнопкою миші, і в

спливаючому меню що з’явилось (рис 2.3) виберемо пункт

Events/Action/actionPerformed.

Events означає «Події», Action – «Дія», actionPerformed –

«виконанадія».

Після цього відбудеться автоматичний перехід у редактор вихідного

коду, і там з'явиться заготівля оброблювача події:

privatevoid jButton1ActionPerformed (java.awt.event. ActionEventevt) {

 // TODO addyourhandlingcodehere:}

Аналогічний результат можна одержати й більш швидким способом –

після того, як ми виділимо кнопку у вікні редагування форми (Design), у вікні

Page 59: 388175

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

Navigator показується й виділяється ім'я цієї кнопки. Подвійне клацання по

цьому імені у вікні навігатора приводить до створення заготівлі оброблювача

події.

Поруч із оброблювачем jButton1ActionPerformed буде розташований

уже наявний оброблювач події, що спрацьовує при натисканні на пункт меню

«Вихід»:

privatevoidexitMenuItemActionPerformed (java.awt.event. ActionEventevt)

{

System.exit(0);}

Замінимо в нашім оброблювачі події рядок з коментарем на код, що

викликає вихід із програми:

privatevoid jButton1ActionPerformed (java.awt.event. ActionEventevt) {

System.exit(0);}

Тепер після запуску нашого додатка підведення курсору миші до

кнопки приведе до появи спливаючої підказки, а натискання на кнопку – до

виходу із програми.

Випадок, що часто зустрічається – показ повідомлення при настанні

якої-небудь події, наприклад – натисканні на кнопку. В цьому випадку

викликають панель із повідомленням:

javax.swing.JOptionPane.showMessageDialog (null, «Мене натиснули»);

Якщо класи пакета javax.swing імпортовані, префікс javax.swing при

виклику не потрібний.

Page 60: 388175

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

3. Практична частина

Програми, створені мовою програмування Java, підрозділяються по

своєму призначенню на дві групи.

До першої групи відносяться додатки Java, призначені для локальної

роботи під управлінням інтерпретатора (віртуальної машини) Java.

Другу групу програм називають аплетами (aplets). Аплети являють

собою невеликі спеціальні програми, що перебувають на вилученому

комп'ютері в мережі, з яким користувачі з'єднуються за допомогою браузера.

Аплети завантажуються в браузер користувача й інтерпретуються

віртуальною машиною Java, убудованої практично в усі сучасні браузери.

Додатки, що відносяться до першої групи, являють собою звичайні

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

машинного коду те їхня продуктивність помітно нижче, ніж у звичайних

компилируемых програм (З++, Delphi).

Для розробки програм мовою Java нам буде потрібно спеціальне

програмне забезпечення. Самі нові версії системного програмного

забезпечення, необхідного для підтримки, можна завантажити із сайту

компанії Sun (http://java.sun.com/): JRE, JDK. Перший додаток JRE – це

програма для запуску й виконання програм (середовище виконання Java) Java

Runtime Environment (JRE).

Для розробки програм також потрібен комплект розробки програмного

забезпечення – JDK (Java Development Kit). Він містить компілятор,

стандартні бібліотеки й т. п.

У цей час є три Java-Платформи:

Java 2 Platform, Standard Edition (J2SE);

Java 2 Platform, Enterprise Edition (J2EE);

Java 2 Platform, Micro Edition (J2ME).

Page 61: 388175

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

Кожна із цих платформ призначена для розробки певного типу

програм.

Перша платформа J2SE дозволяє розробляти звичайні (desktop)

локальні додатки й аплети.

Друга платформа J2EE призначена для розробки серверних

додатків (сервлетів, jsp-сторінок, компонентів JavaBeans).

Третя платформа (J2ME) застосовується при розробці додатків

для мобільних і невеликих пристроїв (стільникових телефонів, кишенькових

комп'ютерів і ін.), які мають істотно обмежені апаратні ресурси (ємність

оперативної пам'яті, швидкодія процесора й ін.).

3.1 Створення в NetBeans найпростішого додатка Java

Зміст роботи. Розгядається приклад створення найпростішого додатку

в середовищі NetBeans.

Створимо за допомогою середовища NetBeans додаток Java. Для цього

запустимо інтегроване середовище розробки (IDE) NetBeans, і виберемо в

головному меню File/New Project… У діалозі, що відкрився, виберемо

General / Java Application / Next>

Рис. 3.1 Створення нового проекту. Крок 1

Page 62: 388175

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

Після чого можна натискати кнопку Finish – значення за

замовчуванням для початку міняти не потрібно. Це можна буде робити потім.

Рис. 3.2. Створення нового проекту. Крок 2

На наступному малюнку показано, як виглядає редагування вихідного

коду додатка в середовищі NetBeans.

У лівому верхнім вікні «Projects» показується дерево проектів. У нашім

випадку це дерево для проекту JavaApplication1. Це вікно може бути

використане для одночасного показу довільного числа проектів. За

замовчуванням усі дерева згорнуті, і потрібні вузли варто розвертати

клацанням по вузлу з «плюсиком» або подвійним клацанням по відповідній

назві.

У правому вікні «Source» показується вихідний код проекту.

У лівому нижнім вікні «Navigator» показується список імен членів

класу додатка – імена змінних і підпрограм. Подвійне клацання по назві

приводить до того, що у вікні редактора вихідного коду відбувається перехід

на те місце, де задана відповідна змінна або підпрограма.

Page 63: 388175

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

Рис. 3.3. Редагування вихідного коду додатка

Середовище NetBeans створює заготівлю методів – у них є порожнє

тіло. Для здійснення методом якої-небудь діяльності варто дописати свій

власний код. Напишемо традиційний приклад – вивід повідомлення

«Привіт!». Для цього замість коментарю

 // TODO code application logic here

(«описати отут логіку роботи додатка») напишемо рядок висновку

тексту

System.out.println («Привіт!»);

Клас System, «система», має поле out, «назовні». Це об'єкт,

призначений для підтримки виводу. У нього є метод println, призначений для

виводу тексту в режимі консолі.

Консольне уведення-виведення раніше широко застосовувалося в

операційних системах, орієнтованих на роботу в режимі командного рядка.

При цьому основним засобом взаємодії користувачів із програмами служила

Page 64: 388175

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

текстова консоль («пульт керування»). У ній пристроєм уведення служила

клавіатура, а пристроєм виводу – вікно операційної системи, що забезпечує

вивід тексту в режимі друкарської машинки (системним шрифтом з буквами,

що мають однакову ширину). Дуже багато прикладів програм у навчальних

курсах по Java орієнтовані на роботу в такому режимі. У цей час у зв'язку з

тим, що переважна більшість користувачів працюють із програмами в

графічному режимі, роботу в консольному режимі не можна розглядати як

основну форму вводу-виводу. Тим більше, що NetBeans дозволяє без

особливих зусиль створювати графічний користувальницький інтерфейс

(GUI – Graphics User Interface) додатка. А консольний режим варто

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

засіб виводу допоміжної інформації.

3.2 Використання циклів у додатку Java

Зміст роботи. Розглядаються програми, у яких використовуються

оператори циклів For, While для багаторазового виконання певних

операторів.

Програма 1. Обчислення суми й добутку послідовності з 10 випадкових

чисел.

1. public class ForCycle {

2. public static void main (String[] args) {

3. inttmp = 0;

4. long tmp2 = 1;

5. System.out.print («Сума\t\tпроизведение \n»);

6. for (int i=0; i<10; i++) {

7. tmp += (int) Math.round (Math.random()*10);

8. tmp2 = tmp2*tmp;

9. System.out.print (tmp+»\t\t»+tmp2+»\n»);

Page 65: 388175

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

10. }

11. }

12. }

У рядку 02 об’являємо головний метод main().В оголошенні змінної

tmp типу int присвоюємо їй початкове значення (tmp=0,ініціалізація змінної

tmp в рядку 03). У змінній tmp буде зберігатися сума 10 членів послідовності

з випадкових чисел. Далі повідомляємо змінну tmp2 типу long, у якій будемо

зберігати значення добутку членів послідовності (04). У циклі for (06–10)

перебуває сума й добуток елементів послідовності. Генерація випадкового

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

Math.random(), що повертає випадкове число в діапазоні від 0 до 1. Далі

множимо випадкове число на 10 і округляємо Math.round() Вивід результатів

виконується в рядку 09.

Програма 2. Обчислення квадратного кореня числа за допомогою

ітераційної формули Герона.

1. public class Sqrt {

2. static void sqrt (long a) {

3. double b=a;

4. int i=0;

5. while ((b*b>a)&&(i<200)) {

6. b=(b+a/b)/2;

7. i++;

8. }

9. System.out.print(b);

10. }

11. public static void main (String[] args) {

12. sqrt(45);

13. }

Page 66: 388175

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

14. }

Для обчислення квадратного кореня числа використовуємо ітераційну

формулу Герона Для цього використовуємо цикл

While з передумовою((b*b>a)&&(i<200)).

У рядку 02 повідомляємо новий метод sqrt() з одним параметром a

типуlong.В оголошенні змінній b типу double присвоюємо їй початкове

значення (b=a, ініціалізація змінної b в рядку 03). У змінній b будемо

зберігати проміжні значення кореня, що обчислюються в циклі по формулі

Геронаb=(b+a/b)/2. Далі повідомляємо змінну i типу int та ініціюємо її

значенням 0. Дана змінна знадобиться як лічильник циклу.

Далі слідує цикл While (05–08) із передумовою ((b*b>a)&&(i<200)).

Дана умова складається із двох умов: квадрат b повинен бути більше

початкового значення a та значення лічильника не повинне перевищувати

200, тобто всього викнується не більше 200 ітерацій. У даному циклі

викнується обчислення чергового значення Xn, що зберігається в змінній

b(06). Змінна b на кожному кроці циклу змінюється, причому нове значення

даної змінної залежить від попереднього значення. Наприкінці циклу

збільшуємо лічильник i на 1 у рядку 07.

Наприкінці методу виводимо отримане значення b в консольне вікно. У

методі main() викликається метод sqrt(45). Як параметр можна взяти довільне

ціле число (45), що буде привласнене змінній a. (Помнете, виклик яких-

небудь методів прямо з методу, що має модифікатор static, можливий тільки

за умови, що викликуваний метод теж є статичним).

Завдання до роботи

За допомогою циклу обчисліть значення вираження2n.

Складіть програму розрахунку факторіала для довільного

числаn<10.

Page 67: 388175

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

Дано два дійсних числа. Необхідно одержати їхню суму, різницю

й добуток. Результат вивести на консоль.

Визначити час вільного падіння матеріального тіла із заданої

висоти h. Результат вивести в консоль.

Складіть програму для знаходження довжини катета

прямокутного трикутника(b), якщо відомі довжини гіпотенузи(c)і катета(a).

Результат вивести на консоль.

3.3 Використання елементів організації розгалуження в Java

Зміст роботи. Розглядається програма, у якій використовується

оператор розгалудження.

Програма 1. Обчислення числа Пі.

1. public class Pi {

2. static double pi;

3. static void leibnic() {

4. for (double i=1; i<100000000; i+=1) {

5. if (i % 2==0) {

6. pi-=1/(2* i-1);

7. } else {

8. pi+=1/(2* i-1);

9. }

10. }

11. pi*=4;

12. System.out.print («\nчисло Пі, підраховане по методу Лейбница

дорівнює: «+pi);

13. }

14. static void vallis() {

Page 68: 388175

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

15. double pi1=1, pi2=1;

16. for (double i=2; i<100000000; i+=2) {

17. pi1*=i/(i+1);

18. pi2*=i/(i-1);

19. }

20. pi=pi1*pi2*2;

21. System.out.print («\nчисло Пі, підраховане по методу Валлиса

дорівнює: «+pi);

22. }

23. public static void main (String[] args) {

24. leibnic();

25. vallis();

26. }

27. }

У даній програмі описані два методи знаходження числа Пі: метод

Лейбниця (ряд Лейбниця) і метод Валліса (формула Валліса).

У даній програмі в рядках 02 і 03 описуються static змінна класу pi типу

double. Розрахунки методом Лейбниця викликаються в рядку 27 завдяки

використанню імені методу leibnic(). Аналогічно в рядку 28 викликаємо

метод Валліса vallis().

У методі Лейбниця для обчислення числа Пі використовується ряд

Для обчислення даного ряду ми використовували цикл із умовним

оператором, де перевіряється умова на парність i % 2==0, якщо воно вірно, то

дріб має позитивний знак pi+=1/(2* i-1), якщо ні, те ставимо знак мінус.

Наприкінці, для одержання наближеного значення числа Пі, змінна pi

множиться на 4 і виводиться на консоль.

Розрахунок по формулі Валліса

Page 69: 388175

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

відбувається трохи по-іншому. У методі оголошуються дві змінні pi1 і

pi2 типи double у рядку 18, перша зберігає добуток парних дробів, друга –

непарних, потім їхній подвоєний добуток привласнюється змінній pi і

виводиться на консоль.

Програма 2. Знаходження рішення рівняння

1. public class Sol {

2. public static void work() {

3. long x=0;

4. for (int i=1; i<10; i++) {

5. for (int j=0; j<10; j++) {

6. for (int k=0; k<10; k++) {

7. x=i*100+j*10+k;

8. if (x==(Math.pow (i, 3)+Math.pow (j, 3) + Math.pow (k, 3))) {

9. System.out.println (i+ «^3+"+j+ «^3+"+k+ «^3+ "+» = «+x);

10. }

11. }

12. }

13. }

14. }

15. public static void main (String[] args) {

16. work();

17. }

18. }

Дана програма знаходить такі цифри A, B і C, сума кубів яких дорівнює

числу, складеному із цих цифр.

У програмі є три цикли, вкладені друг у друга, кожний цикл

виконується десять разів, у такий спосіб тіло циклу 07–09 виконується одну

тисячу разів (10x10x10). Змінна x, складена з кубів лічильників циклів, де

Page 70: 388175

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

перший лічильник відіграє роль сотень числа, другий десятків, третій

одиниць. Якщо отримане x дорівнює сумі кубів лічильників, то на консоль

виводиться інформація про отримані цифри й число x. Знаходження кубів

чисел здійснюється за допомогою методу pow() класу Math, як перший

параметр виступає саме число, а другим параметром служить показник

ступеня Math.pow (i, 3). Можна використовувати більше знайомий і звичний

запис i*i*i, j*j*j і k*k*k.

3.4 Оператор множинного вибору

Зміст роботи. Розглядається програма, у якій використовується

оператор множинного вибору, що виконує завдання множинного

розгалуження.

Програма 1. Переклад чисел з десяткової системи числення у двійкову

й щістндцяткову.

1. public class Trans {

2. public static String fromdectobin (int x) {

3. Stringres=»»;

4. short q = 0;

5. while (x>0) {

6. q=(short) (x % 2);

7. x/=2;

8. res=q+res;

9. }

10. return res;

11. }

12. public static String fromdectohex (float x) {

13. String res=»»;

14. short q = 0;

Page 71: 388175

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

15. int c = 2;

16. while (c>0) {

17. q=(short) (16*(x/ 16-Math.floor (x/16)));

18. c=(int) Math.floor (x/16);

19. x=c;

20. if (q<10) {

21. res=q+res;

22. } else {

23. switch(q) {

24. case 10:

25. res= «A»+res;

26. break;

27. case 11:

28. res= «B»+res;

29. break;

30. case 12:

31. res= «C»+res;

32. break;

33. case 13:

34. res= «D»+res;

35. break;

36. case 14:

37. res= «E»+res;

38. break;

39. case 15:

40. }

41. res= «F»+res;

42. break;

43. }}

Page 72: 388175

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

44. }

45. return res;

46. }

47. public static void main (String[] args) {

48. System.out.println (fromdectobin(90367));

49. System.out.println (fromdectohex(90367));

50. }

У даній програмі наведені два методи, один переводить десяткове

число у двійкову систему числення, другий – у щістнадцяткову.

Для перекладу десяткового числа у двійкове подання використовується

стандартний метод – розподіл вихідного числа на 2 зі збереженням залишку,

у нашому прикладі залишок додається до рядка resс лівої сторони (08). У

даному методі використовується цикл із передумовою while(), що щораз

одержує залишок від розподілу на 2, потім ділить вихідне число на 2 і

заносить отриманий у першій дії залишок ліворуч у рядок. Наприкінці, після

циклу, метод повертає отриманий рядок.

Спосіб перекладу з десяткового в щістнадцяткове подання

використовує аналогічний прийом, роблячи послідовно ділення на 16, за

одним виключенням – залишок у нашій програмі обчислюється за

допомогою функції floor(), що повертає цілу частину дробового числа. У

результаті одержимо цілочисельний залишок від розподілу. Процес запису

залишків у рядок більш складний, ніж у випадку двійкової системи числення,

тому що в щістнадцятковий для подання числа недостатньо базового набору

цифр від 0 до 9 і необхідно використовувати букви A-F. Для того щоб у

рядок результату додавати букви, у програмі використовується оператор

множинного выбору switch(), у якому виконується перевірка залишку.

Залежно від величини залишку, у рядок результату додається необхідна

буква (рядка 23–42).

Page 73: 388175

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

Методи fromdectobin, fromdectohex повертають значення типу String,

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

виводу на консоль (рядка 48, 49). Як аргументи цих методів беруться числа,

які потрібно перевести в задану систему числення.

Завдання до роботи: Для довільної цифри від 0 до 9 вивести на

консоль її значення прописом. Наприклад, для цифри 9 на консолі повинна

бути надрукована рядок «Дев'ять».

3.5 Використовування масивів в Java

Зміст роботи. Робота з масивами: пошук мінімального елемента й

сортування масиву.

Програма1. Робота з масивами

1. public class Arrays {

2. public static short min() {

3. short x=0;

4. short[] array = new short[10];

5. System.out.print («Вихідний масив:»);

6. for (int i=0; i<10; i++) {

7. array[i]=(short) Math.round (50*Math.random());

8. System.out.print (array[i]+»,»);

9. }

10. x=array[0];

11. for (int i=1; i<10; i++) {

12. if (x>array[i]) {

13. x=array[i];

14. }

15. }

Page 74: 388175

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

16. return x;

17. }

18. public static void sort() {

19. short temp;

20. short[] array = new short[10];

21. System.out.print («\nисходный масив:»);

22. for (int i=0; i<10; i++) {

23. array[i]=(short) Math.round (50*Math.random());

24. System.out.print (array[i]+»,»);

25. }

26. System.out.print («\nмассив відсортований:»);

27. for (int i=0; i<9; i++) {

28. for (int j=9; j>i; j-j–) {

29. if (array [j-1]>array[j]) {

30. temp=array[j];

31. array[j]=array [j-1];

32. array [j-1]=temp;

33. }

34. }

35. System.out.print (array[i]+»,»);

36. }

37. }

38. public static void main (String[] args) {

39. System.out.print («\nминимальныйэлемент: «+min());

40. sort();

41. }

42. }

У даній програмі використовуються два методи – min()і sort(). У

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

Page 75: 388175

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

пам'ять на десять елементів для кожного масиву (04, 20). Потім відбувається

заповнення масивів випадковими числами за допомогою метода

Math.random() (06–09, 22–25). Явним перетворенням(short) приводимо

отримані значення типу double до значення типу short (7,23).

Після того, як масиви готові, можна робити над ними різні дії. Метод

min() шукає мінімальний елемент в отриманому масиві (11–15).

Другий метод робить сортування отриманого масиву (27–34) методом

пухирця. Потім виводить значення його елементів (35).

У методі main() викликаємо min()і sort(). Оскільки метод min() повертає

значення строкового типу, його можна використовувати як аргумент

конструкції System. out.print().

3.6 Найпростіші прийоми роботи з рядками

Зміст роботи. Розглядається програма, у якій використовуються

оператори роботи з рядками.

Програма 1. Робота з рядками

1. publicclassStrings {

2. public static String compare (String s1, String s2) {

3. String s3=»»;

4. if (s1.equals(s2)) {

5. s3= «Рядка \" «+s1+»\» і \» «+s2+»\» рівні»;

6. } else {

7. s3= «Рядка \" «+s1+»\» і \» «+s2+»\» не рівні»;

8. }

9. return s3;

10. }

11. public static String add (String s1, String s2) {

Page 76: 388175

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

12. System.out.print («\nрезультат додавання рядків \"«+s1+»\» і «+»\»

«+s2+»\»:»);

13. s1+=» «+s2;

14. return s1;

15. }

16. public static void main (String[] args) {

17. System.out.println (compare («АБВГ», «АБВ»));

18. System.out.print (compare («АБВ», «АБВ»));

19. System.out.print (add («Hello», «World»));

20. }

21. }

У додатку є два методи, які порівнюють і склеюють два рядки. Перший

метод compare() робить порівняння двох рядків і виводить результат на

консоль. Порівняння виконується за допомогою функції equals() у рядку (04).

Якщо рядки збігаються, дана функція повертає значення true. Якщо рядки

рівні (мають однаковий набір символів), виводиться відповідне повідомлення

(05), інакше повідомлення (07).

У другому методі відбувається просте склеювання рядків за допомогою

операції «+» (13).

3.7 Створення в NetBeans найпростішого додатка Java із графічним

інтерфейсом

Зміст роботи: Вивчення платформи NetBeans і структури програми для

створення додатків із застосуванням мови програмування Java.

Зміст роботи: Створення Java додатка із графічним інтерфейсом.

Оскільки, консольний ввід-вивід уживається досить рідко, тепер

спробуємо створити додаток із графічним інтерфейсом. Розгялнемо приклад

створення найпростішого додатку «HelloWorld»

Page 77: 388175

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

У нашому проекті HelloWorld відкриємо File /NewFile. У діалозі, що

відкрився, у списку категорій виберіть Swing GUI Forms. Виберіть тип файлу

JFrameForm. Натисніть Next>(мал. 3.6.).Після цього введемо назву

створюваного класу й пакет, де він буде зберігатися. І натискаємо Finish.

IDE створює новий клас. І відкриває його у візуальному редакторі

форми. Тепер для додавання елементів на наш JFrame, досить просто

використати простий DragandDrop.

Додамо на форму кнопки JButton і текстове поле JtextField. Логікою

роботи програми буде вивід вітання в текстовому полі при натисканні першої

кнопки, і очищення поля виводу при натисканні іншої кнопки.

Рис. 3.4. Створення проекту із графічним інтерфейсом

Page 78: 388175

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

Рис. 3.5. Додавання елементів на форму

Вище на мал. 3.7. наведений дизайн форми. Всі елементи, що додають

на форму, відображаються в панелі називаної Inspector. У ній легко одержати

доступ до будь-якого елемента на формі. Навіть якщо він прямо не видний на

формі (наприклад, такі елементи як ButtonGroup).

Для текстового поля заберемо текст jTextField1. Для цього на панелі

властивостей поля знайдемо властивість текст і залишимо порожній рядок.

Для кнопки 1 у поле властивості текст наберемо Greeting, а для кнопки 2

наберемо Clear. Ну й для всіх доданих нами елементів, поміняємо назви

змінних на назви, які краще відбивають їхню функціональність. Це робиться

виділенням елемента, і в його контекстному меню вибором пункту

ChangeVariableName… (мал. 3.8)

Page 79: 388175

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

Рис. 3.6. Перейменування змінної

У діалозі, що з'явився, Rename уводимо нове ім'я змінної jbGreet. Точно

так само ім'я змінної для другої кнопки буде jbClear, а для текстового поля

tfGreetMessage.Після цих дій додамо два оброблювачів подій для кожної із

кнопок, які будуть створюватися при натисканні. Це найпростіше зробити

також з контекстного меню елементів (див. мал. 3.9.).

Вибір пункту ActionPerformed означає, що ми хочемо додати

оброблювач цієї події (натискання кнопки) для нашого елемента jbGreet.

Після вибору цього пункту, середовище згенерує й покаже нам функцію, що

буде викликатися при натисканні на кнопку.

privatevoidjbGreetActionPerformed (java.awt.event. ActionEventevt) {

 // TODO addyourhandlingcodehere:

}

Подкорректируем цю функцію:

privatevoidjbGreetActionPerformed (java.awt.event. ActionEventevt) {

 // TODO addyourhandlingcodehere:

tfGreetMessage.setText («Hello»);

}

Page 80: 388175

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

У такий же спосіб створимо оброблювач події для натискання кнопки

jbClear:

privatevoidjbClearActionPerformed (java.awt.event. ActionEventevt) {

 // TODO addyourhandlingcodehere:

tfGreetMessage.setText(«»);

}

3.8 Робота із графічним інтерфейсом користувача. Обробка подій

Зміст роботи: У даній роботі для створення програми графобудівника

нам знадобиться чотири класи, які будуть перебувати в різних файлах.

Спочатку перейменуйте пакет за замовчуванням в «MyGraph». Потім у

даному пакеті створіть чотири нових класи:

«Graphic» – головний клас, у якому буде метод main().

«Sinus» – клас графіка синуса.

«Cosinus» – клас графіка косинуса.

«X2» – клас графіка параболи.

Пам’ятайте, якщо класи описані з кожним з модифікаторів видимості

public, protected або private, то імена класів повинні збігатися з іменами

файлів, у яких зберігаються дані класи.

Після того, як класи будуть створені, уведіть запропонований нижче

код програми.

Програма 1. Побудова графіків елементарних функцій.

Клас Graphic:

1. package MyGraph;

2. import java.awt.*;

3. importjava.awt.event.*;

4. importjavax.swing.*;

5. public class Graphic extends JFrame {

Page 81: 388175

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

6. Graphic (String s) {

7. super(s);

8. setLayout(null);

9. setSize (120,200);

10. setVisible(true);

11. this.setDefaultCloseOperation (EXIT_ON_CLOSE);

12. this.setResizable(false);

13. Button sin = new Button («Sin»);

14. sin.setBounds (5, 20, 100, 25);

15. add(sin);

16. Button cos = new Button («Cos»);

17. cos.setBounds (5, 70, 100, 25);

18. add(cos);

19. Button x2 = new Button («Парабола»);

20. x2.setBounds (5, 120, 100, 25);

21. add(x2);

22. sin.addActionListener (new ActionListener() {

23. public void actionPerformed (ActionEvent event) {

24. new Sinus («Синус»);

25. }

26. });

27. cos.addActionListener (new ActionListener() {

28. public void actionPerformed (ActionEvent event) {

29. new Cosinus («Косинус»);

30. }

31. });

32. x2.addActionListener (new ActionListener() {

33. public void actionPerformed (ActionEvent event) {

34. new X2 («Парабола»);

Page 82: 388175

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

35. }

36. });

37. }

38. public static void main (String[] args) {

39. new Graphic («Графобудівник»);

40. }

41. }

Клас Sinus:

1. package MyGraph;

2. import java.awt. Color;

3. import java.awt. Graphics;

4. import javax.swing.JFrame;

5. public class Sinus extends JFrame {

6. Sinus (String s) {

7. super(s);

8. setLayout(null);

9. setSize (600,300);

10. setVisible(true);

11. this.setDefaultCloseOperation (DISPOSE_ON_CLOSE);

12. this.setResizable(false);

13. this.setLocation (100, 100);

14. }

15. public void paint (Graphics gr) {

16. int y; int j=0; int k=0;

17. gr.setColor (Color.WHITE);

18. gr.fillRect (0, 0, 600, 300);

19. gr.setColor (Color.lightGray);

20. while (j<600) {

21. gr.drawLine (j, 0, j, 300);

Page 83: 388175

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

22. j+=30;

23. }

24. while (k<300) {

25. gr.drawLine (0, k, 600, k);

26. k+=30;

27. }

28. gr.setColor (Color.BLACK);

29. gr.drawLine (300, 0, 300, 300);

30. gr.drawLine (0, 150, 600, 150);

31. gr.drawLine (120, 140, 120, 160);

32. gr.drawLine (480, 140, 480, 160);

33. gr.drawString («0», 305, 165);

34. gr.drawString (» – «+»\u03c0», 125, 140);

35. gr.drawString («\u03c0», 485, 140);

36. gr.setColor (Color.RED);

37. for (double i=0; i<1000; i++) {

38. y=(int) (80*Math.sin (Math.PI*i/180));

39. gr.drawLine((int) i-240, y+150, (int) i-240, y+150);

40. }

41. gr.dispose();

42. }

43. }

КлассCosinus:

1. package MyGraph;

2. import java.awt. Color;

3. import java.awt. Graphics;

4. import javax.swing.JFrame;

5. public class Cosinus extends JFrame {

Page 84: 388175

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

6. Cosinus (String s) {

7. super(s);

8. setLayout(null);

9. setSize (600,300);

10. setVisible(true);

11. this.setDefaultCloseOperation (DISPOSE_ON_CLOSE);

12. this.setResizable(false);

13. this.setLocation (200, 200);

14. }

15. public void paint (Graphics gr) {

16. int y; int j=0; int k=0;

17. gr.setColor (Color.WHITE);

18. gr.fillRect (0, 0, 600, 300);

19. gr.setColor (Color.lightGray);

20. while (j<600) {

21. gr.drawLine (j, 0, j, 300);

22. j+=30;

23. }

24. while (k<300) {

25. gr.drawLine (0, k, 600, k);

26. k+=30;

27. }

28. gr.setColor (Color.BLACK);

29. gr.drawLine (300, 0, 300, 300);

30. gr.drawLine (0, 150, 600, 150);

31. gr.drawLine (120, 140, 120, 160);

32. gr.drawLine (480, 140, 480, 160);

33. gr.drawString («0», 305, 165);

34. gr.drawString (» – «+»\u03c0», 125, 140);

Page 85: 388175

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

35. gr.drawString («\u03c0», 485, 140);

36. gr.setColor (Color.RED);

37. for (double i=0; i<1000; i++) {

38. y=(int) (80*Math.cos (Math.PI*i/180));

39. gr.drawLine((int) i-240, y+150, (int) i-240, y+150);

40. }

41. gr.dispose();

42. }

43. }

Клас X2:

1. package MyGraph;

2. import java.awt. Color;

3. import java.awt. Graphics;

4. import javax.swing.JFrame;

5. public class X2 extends JFrame {

6. X2 (String s) {

7. super(s);

8. setLayout(null);

9. setSize (600,300);

10. setVisible(true);

11. this.setDefaultCloseOperation (DISPOSE_ON_CLOSE);

12. this.setResizable(false);

13. this.setLocation (300, 300);

14. }

15. public void paint (Graphics gr) {

16. int y; int j=0; int k=0;

17. gr.setColor (Color.WHITE);

18. gr.fillRect (0, 0, 600, 300);

19. gr.setColor (Color.lightGray);

Page 86: 388175

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

20. while (j<600) {

21. gr.drawLine (j, 0, j, 300);

22. j+=50;

23. }

24. while (k<300) {

25. gr.drawLine (0, k, 600, k);

26. k+=50;

27. }

28. gr.setColor (Color.BLACK);

29. gr.drawLine (300, 0, 300, 300);

30. gr.drawLine (0, 150, 600, 150);

31. gr.drawString («0», 305, 165);

32. gr.setColor (Color.RED);

33. for (double i=0; i<1000; i++) {

34. y= – (int) (i*i/300)+150;

35. gr.drawLine((int) i+300, y, (int) i+300, y);

36. gr.drawLine(– (int) i+300, y, – (int) i+300, y);

37. }

38. gr.dispose();

39. }

40. }

У класі Graphics описане вікно розміром 120х200, у якому розташовані

три кнопки. Натискання кнопки обслуговується (обробляється) спеціальною

процедурою, що називається процедурою обробки події ActionEvent. При

натисканні кнопки відбувається створення нової форми, у якій буде

побудований відповідний графік елементарної функції (22–26, 27–31, 32–36).

Класи оброблювачів подій описані усередині параметра методу

додавання слухача addActionListener() (22, 27, 32). Цікаво, що параметром

цього методу є новий об'єкт інтерфейсу ActionListener з одним методом

Page 87: 388175

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

actionPerformed(), що і відповідає за поводження програми, у випадку якщо

буде викликана дана подія (натискання на кнопки).

У класах, які роблять побудову графіків, у рядках 20–27 з

використанням двох циклів відбувається побудова координатної сітки ясно-

сірим кольором, потім чорним кольором будуються осі абсцис і ординат.

Найбільший інтерес представляють рядки 37–40 (для синуса й

косинуса) і 33–37 (для параболи) у яких відбувається малювання графіків.

Синус і косинус рисуються за аналогією: спочатку обчислюється значення y і

методом drawString() рисується «лінія» довжиною в один піксель.

Координата y обчислюється шляхом явного перетворення типу double у тип

int, отриманого в результаті виконання вираження 80*Math.cos

(Math.PI*i/180). Парабола будується аналогічним способом, у два етапи. На

першому етапі будується позитивна частина параболи й далі негативна.

Програма 2. Напису на кнопках.

1. importjava.awt.*;

2. importjava.awt.event.*;

3. importjavax.swing.*;

4. public class ExtEventHandler extends JFrame {

5. ExtEventHandler (String s) {

6. super(s);

7. setLayout(null);

8. setSize (100,200);

9. setVisible(true);

10. setResizable(false);

11. setDefaultCloseOperation (EXIT_ON_CLOSE);

12. Button b1 = new Button («Перваякнопка»);

13. b1.setBounds (2, 5, 96, 22);

14. add(b1);

15. Button b2 = new Button («Втораякнопка»);

Page 88: 388175

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

16. b2.setBounds (2, 100, 96, 22);

17. add(b2);

18. b1.addActionListener (new Handler (b1, b2));

19. b2.addActionListener (new Handler (b1, b2));

20. }

21. public static void main (String[] args) {

22. new ExtEventHandler(«»);

23. }

24. }

25. class Handler implements ActionListener {

26. private Button ba;

27. private Button bb;

28. String temp;

29. Handler (Button b1, Button b2) {

30. this.ba=b1;

31. this.bb=b2;

32. }

33. public void actionPerformed (ActionEvent e) {

34. temp = ba.getLabel();

35. ba.setLabel (bb.getLabel());

36. bb.setLabel(temp);

37. }

38. }

У класі ExtEventHandler (04–24) приводиться основний опис

інтерфейсу користувача: форма розміром 100x200 і дві кнопки з написами:

перша кнопка (12–14) і друга кнопка (15–17). У додатку для обробки подій,

які виникають при натисканні на кнопки, описаний окремий клас Handler

(25–38), що використовує інтерфейс ActionListener.

Page 89: 388175

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

Оскільки в описі ActionListener не можна прямо використовувати

компоненти, описані в конструкторі класу ExtEventHandler, то потрібно

створити посилання на об'єкти, які будуть використані. Створення

посилальних об'єктів виконується в рядках 26, 27, а самі посилання

створюються в конструкторі (30, 31). Коли посилання готові, у процесі

додавання слухачів (18, 19), у параметрах указуємо імена реальних

компонентів. Таким чином, при натисканні на кожну із двох кнопок

міняються місцями їхні написи (34–36).

Page 90: 388175

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

Заключна частина

В ході виконання дипломної роботи були розроблені та протестовані

додатки, які демонструють принципи роботи основних елементів мови Java

за допомогою вільного середовища NetBeans.

В першій частині описується будова, функції та основні переваги Java-

платформи. Розглянуто особливості сучасних засобів створення Java –

додатків.

В другій частині дипломної роботи були описані основні елементи та

засоби програмування мови Java.

Результатом виконання дипломної роботи є додатки, які демонструють

використання основних елементів програмування мови Java, а також

результати їх тестування.

Page 91: 388175

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

Список використаної літератури

1. http://ru.wikipedia.org/wiki/NetBeans_IDE

2. Монахов Вадим Мова програмування Java і середовище NetBeans. –

СПб.: «БХВ-Петербург», 2008. – С. 640.

3. ru.sun.com/java/j2ee/book/platform_Java.pdf – Платформа Java ™.

Офіційне видання. Дуглас Крамер (Douglas Kramer)

4. Джамса Кріс. JAVA. Бібліотека програміста / / Попурі. – Мінськ, 1996.

5. Мейнджер Джейсон. JAVA: Основи програмування / Пер. з англ. С. Бойко

під ред. Я. Шмідского. – К.: BNV, 1997.

6. http://www.citforum.ru/internet/javascript/crjp/

7. http://www.simplecoding.org/sredstva-razrabotki-na-java-neobxodimye-i-

prosto-poleznye-programmy.html

8. Девід Фленаган Java в прикладах – довідник

9. Х.м. Дейтел, П.Дж. Дейтел, С.І. Сантрі – Технології програмування на Java

Размещено на Allbest.ru