Модель легковесных процессов в Java 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модель легковесных процессов в Java



Исполняющая система Java в многом зависит от использования подпроцессов, и все ее классовые библиотеки написаны с учетом особенностей программирования в условиях параллельного выполнения подпроцессов. Java использует подпроцессы для того, чтобы сделать среду программирования асинхронной. После того, как подпроцесс запущен, его выполнение можно временно приостановить (suspend). Если подпроцесс остановлен (stop), возобновить его выполнение невозможно.

Приоритеты подпроцессов

Приоритеты подпроцессов - это просто целые числа в диапазоне от 1 до 10 и имеет смысл только соотношения приоритетов различных подпроцессов. Приоритеты же используются для того, чтобы решить, когда нужно остановить один подпроцесс и начать выполнение другого. Это называется переключением контекста. Правила просты. Подпроцесс может добровольно отдать управление - с помощью явного системного вызова или при блокировании на операциях ввода-вывода, либо он может быть приостановлен принудительно. В первом случае проверяются все остальные подпроцессы, и управление передается тому из них, который готов к выполнению и имеет самый высокий приоритет. Во втором случае, низкоприоритетный подпроцесс, независимо от того, чем он занят, приостанавливается принудительно для того, чтобы начал выполняться подпроцесс с более высоким приоритетом.

Синхронизация

Поскольку подпроцессы вносят в ваши программы асинхронное поведение, должен существовать способ их синхронизации. Для этой цели в Java реализовано элегантное развитие старой модели синхронизации процессов с помощью монитора.

Сообщения

Коль скоро вы разделили свою программу на логические части - подпроцессы, вам нужно аккуратно определить, как эти части будут общаться друг с другом. Java предоставляет для этого удобное средство - два подпроцесса могут "общаться" друг с другом, используя методы wait и notify. Работать с параллельными подпроцессами в Java несложно. Язык предоставляет явный, тонко настраиваемый механизм управления созданием подпроцессов, переключения контекстов, приоритетов, синхронизации и обмена сообщениями между подпроцессами.

 

44. Організація введення - виведення засобами мови програмування Ява.

Поняття про вхідних і вихідних потоках.

Розглянемо пакет класу виводу Java.io. В ньому є наступні класи:

InputStream — абстрактный класс, задающий используемую в Java модель входных потоков. Все методы этого класса при возникновении ошибки возбуждают исключение IOException. Ниже приведен краткий обзор методов класса InputStream.

· read() - возвращает представление очередного доступного символа во входном потоке в виде целого.

· read(byte b[]) - пытается прочесть максимум b.length байтов из входного потока в массив b. Возвращает количество байтов, в действительности прочитанных из потока.

· read(byte b[], int off, int len) - пытается прочесть максимум len байтов, расположив их в массиве Ь, начиная с элемента off. Возвращает количество реально прочитанных байтов.

· skip(long n) - пытается пропустить во входном потоке n байтов. Возвращает количество пропущенных байтов.

· available() - возвращает количество байтов, доступных для чтения в настоящий момент.

· close() - закрывает источник ввода. Последующие попытки чтения из этого потока приводят к возбуждению IOException.

Как и InputStream, OutputStream — абстрактный класс. Он задает модель выходных потоков Java. Все методы этого класса имеют тип void и возбуждают исключение IOException в случае ошибки. Ниже приведен список методов этого класса:

· write(int b) записывает один байт в выходной поток. Обратите внимание, что аргумент этого метода имеет тип int, что позволяет вызывать write, передавая ему выражение, при этом не нужно выполнять приведение его типа к byte.

· write(byte b[]) записывает в выходной поток весь указанный массив байтов.

· write(byte b[], int off, int len) записывает в поток часть массива — len байтов, начиная с элемента b[off].

· flush() очищает любые выходные буферы, завершая операцию вывода.

· close() закрывает выходной поток. Последующие попытки записи в этот поток будут возбуждать IOException.

 

Приклад використання даного класу:

byte[] sym = new byte[20];

System.out.println(“ Input here your string ”);

try {

System.in.read(sym);

 } catch (IOException ex) {

    ex.printStackTrace();

}

System.out.println(“==================”);

System.out.println(newString(sym));

 

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

Об’єкт файл являється єдиним об’єктом в пакеті java.io, який працює безпосередньо з дисковими файлами. В мові Java на використання файлів в аплетах накладені обмеження, але вони залишаються основними ресурсами для постійного збереження та сумісного використання інформації. Клас файл є несиметричним (в даному класі реалізовані методи, які характеризують властивості об’єкта, але відповідні функції, які змінюють дані властивості, відсутні). На практиці часто використовуються наступні методи класу файл:

· getName()

· getPath()

· getAbsolutePath()

· Length()

· isDirectory()

· isFile()

· exists()

· canWrite()

· canRead()

 

Файлові потоки

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

FileInputStream – використовується для введення даних із файлу. Приклад:

 

InputStream f0 = new FileInputStream(“/autoexec.bat”);

File f = new File(“/autoexec.bat”);

InputStream f1 = new FileInputStream(f);

 

Даний приклад ілюструє створення двох об’єктів, які використовують один і той же дисковий файл. Коли створюється об’єкт класу FileInputStream, він одночасно відкривається для читання. Тобто, клас FileInputStream поєднує 6 методів абстрактного класу InputStream.

 

Клас виводу інформації – це FileOutputStream. Порівнюючи з класом FileInputStream, в даному класі теж два конструктора, але на відміну від класу FileInputStream, в класі FileOutputStream можна створювати об’єкти незалежно від того, чи існує файл чи ні, тому що клас FileOutputStream при створенні нового об’єкту перед тим як відкрити файл, спочатку його створює.

 

45. Мережеві засоби Ява. Сокети і дейтаграми.

Java поддерживает протокол TCP/IP, во-первых, расширяя свой интерфейс потоков ввода-вывода, описанного в предыдущей главе, и во вторых, добавляя возможности, необходимые для построения объектов ввода-вывода при работе в сети.

Java поддерживает адреса абонентов, принятые в Internet, с помощью класса InetAddress. Для адресации в Internet используются служебные функции, работающие с обычными, легко запоминающимися символическими именами, эти функции преобразуют символические имена в 32-битные адреса.

В классе InetAddress нет доступных пользователю конструкторов. Для создания объектов этого класса нужно воспользоваться одним из его фабричных методов. Фабричные методы - это обычные статические методы, которые возвращают ссылку на объект класса, которому они принадлежат. В данном случае, у класса InetAddress есть три метода, которые можно использовать для создания представителей. Это методы getLocalHost, getByName и getAllByName.

Дейтаграммы

Дейтаграммы, или пакеты протокола UDP (User Datagram Protocol) - это пакеты информации, пересылаемые в сети по принципу "fire-and-forget" (выстрелил и забыл). Если вам надо добиться оптимальной производительности, и вы в состоянии минимизировать затраты на проверку целостности информации, пакеты UDP могут оказаться весьма полезными.

UDP не предусматривает проверок и подтверждений при передаче информации. При передаче пакета UDP по какому-либо адресу нет никакой гарантии того, что он будет принят, и даже того, что по этому адресу вообще есть кому принимать такие пакеты. Аналогично, когда вы получаете дейтаграмму, у вас нет никаких гарантий, что она не была повреждена в пути или что ее отправитель все еще ждет от вас подтверждения ее получения.

Java реализует дейтаграммы на базе протокола UDP, используя для этого два класса. Объекты класса DatagramPacket представляют собой контейнеры с данными, a DatagramSocket - это механизм, используемый при передаче и получении объектов DatagramPacket.

Сокеты "для клиентов"

TCP/IP-сокеты используются для реализации надежных двунаправленных, ориентированных на работу с потоками соединений точка-точка между узлами Internet. Сокеты можно использовать для соединения системы ввода-вывода Java с программами, которые могут выполняться либо на локальной машине, либо на любом другом узле Internet. В отличие от класса DatagramSocket, объекты класса Socket реализуют высоконадежные устойчивые соединения между клиентом и сервером.

В пакете java.net классы Socket и ServerSocket сильно отличаются друг от друга. Первое отличие в том, что ServerSocket ждет, пока клиент не установит с ним соединение, в то время, как обычный Socket трактует недоступность чего-либо, с чем он хочет соединиться, как ошибку. Одновременно с созданием объекта Socket устанавливается соединение между узлами Internet. Для создания сокетов вы можете использовать два конструктора:

  • Socket(String host, int port) устанавливает соединение между локальной машиной и указанным портом узла Internet, имя которого было передано конструктору. Этот конструктор может возбуждать исключения UnknownHostException и IOException.
  • Socket(InetAddress address, int port) выполняет ту же работу, что и первый конструктор, но узел, с которым требуется установить соединение, задается не строкой, а объектом InetAddress. Этот конструктор может возбуждать только IOException.

Из объекта Socket в любое время можно извлечь информацию об адресе Internet и номере порта, с которым он соединен. Для этого служат следующие методы:

  • getInetAddressQ возвращает объект InetAddress, связанный с данным объектом Socket.
  • getPort() возвращает номер порта на удаленном узле, с которым установлено соединение.
  • getLocalPort() возвращает номер локального порта, к которому присоединен данный объект.

После того, как объект Socket создан, им можно воспользоваться для того, чтобы получить доступ к связанным с ним входному и выходному потокам. Эти потоки используются для приема и передачи данных точно так же, как и обычные потоки ввода-вывода, которые мы видели в предыдущей главе:

  • getInputStream() возвращает InputStream, связанный с данным объектом.
  • getOutputStream() возвращает OutputStream, связанный с данным объектом.
  • close() закрывает входной и выходной потоки объекта Socket.

Приведенный ниже очень простой пример открывает соединение с портом 880 сервера "timehost" и выводит полученные от него данные.

import java.net.*;import java.io.*;class TimeHost { public static void main(String args[]) throws Exception   {     int c; Socket s = new Socket("timehost.starwave.com",880); InputStream in = s.getInputStream(); while ((c = in.read())!= -1)     {       System.out.print((char) c); } s.close(); } }

Сокеты "для серверов"

Как уже упоминалось ранее, Java поддерживает сокеты серверов. Для создания серверов Internet надо использовать объекты класса ServerSocket. Когда вы создаете объект ServerSocket, он регистрирует себя в системе, говоря о том, что он готов обслуживать соединения клиентов. У этого класса есть один дополнительный метод accept(), вызов которого блокирует подпроцесс до тех пор, пока какой-нибудь клиент не установит соединение по соответствующему порту. После того, как соединение установлено, метод accept() возвращает вызвавшему его подпроцессу обычный объект Socket.

Два конструктора класса ServerSocket позволяют задать, по какому порту вы хотите соединяться с клиентами, и (необязательный параметр) как долго вы готовы ждать, пока этот порт не освободится.

  • ServerSocket(int port) создает сокет сервера для заданного порта.
  • ServerSocket(int port, int count) создает сокет сервера для заданного порта. Если этот порт занят, метод будет ждать его освобождения максимум count миллисекунд.

Сетевые классы Java предоставляют ясный и простой в использовании интерфейс для работы в Internet. Фундамент, заложенный в пакете java.net - хорошая база для дальнейшего развития, которая позволит Java эволюционировать вместе с Internet.

 

46. Аплети. Призначення, правила запуску і використання.

До другої групи відносяться аплети, що представляють собою різновид додатків Java, котрі інтерпретуються віртуальною Java машиною, що вбудована в браузери. Додатки, які відносяться до першої групи – це звичайні автономні програми. Так як вони не містять машинного коду і працюють під керуванням спеціальної програми (інтерпретатора), їх продуктивність значно менша чим програми, які написані на мові програмування С++. Програми, які відносяться до другої групи вбудовані в HTML документи, що зберігаються на веб-сервері. За допомогою аплетів створюються динамічні веб-сторінки та інтерактивні. Аплети дозволяють виконувати складну локальну обробку даних, які отримані від сервера або даних, які ввів користувач. Треба відмітити, що в зв’язку з безпекою аплети не мають доступу до файлової системи комп’ютера, всі дані для обробки вони отримують від сервера. Для збільшення продуктивності додатків Java в сучасних браузерах виконується компіляція Just in time compilation. Сутність даної технології полягає в тому, що при першому завантаженні аплета, його код транслюється в звичайну виконуючу програму, яка зберігається на комп’ютері і запускається, використовуючи можливості даного комп’ютера. В результаті, загальна швидкість виконання аплета збільшується в декілька раз. Мова Java є об’єктна-орієнтована, яка включає достатньо об`ємний набір бібліотек класів. Бібліотеки класів значно спрощують розробку додатків.

 

47. Аплети. Огляд класів і методів роботи з графічними об'єктами.

 

Графічний інтерфейс користувача – основний спосіб взаємодії користувача з Java додатком. Для розробки прикладного програмного забезпечення на мові Java використовуються графічні пакети Swing та AWT.

AWT містить набір класів, що дозволяє виконувати графічні операції та створювати віконні елементи керування, що подібні додаткам, що створюються в програмах Delphi та C++ Builder. Для доступу до пакету AWT використовується пакет Java.awt.

Swing містить нові класи, які аналогічні класам в пакеті AWT, але більш досконалі і сучасні. Для підключення використовують пакет Java.swing. Треба відмітити, що на даний момент для візуального додатка використовують пакет Swing. А із пакету AWT використовують класи для обробки повідомлення.

Приклад найпростішого графічного елемента:

public final class HelloWorld implements Runnable { public static void main(String[] args) { SwingUtilities.invokeLater (new HelloWorld());} public void run() {JFrame f = new JFrame ("Hello, World!");f.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);f.add(new JLabel("Hello World")); f.pack();f.setVisible(true);}}

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

1. Клавіатура (Swing надає спосіб перехвату вводу даних з клавіатури).

2. Колір (технологія Swing надає спосіб змінювати кольори на екрані монітора).

3. Текстове поле введення даних (Swing надає текстові компоненти для обробки всіх задач).

Класи пакету Swing

1. JComponent – даний клас є базовим класом всієї бібліотеки візуальних компонентів пакету Swing, він являється супер-класом для всіх інших візуальних компонентів. Він являється абстрактним класом, тобто програміст не може створювати даний клас, але він містить інші функції, які кожен компонент Swing може використовувати як результат ієрархії класів. Клас JComponent забезпечує інфраструктуру для всіх компонентів. Цей клас містить метод Add, який дозволяє додавати інші об’єкти класу JComponent (можна добавити будь-який Swing компонент до іншого Swing компонента).

2. JLabel – даний клас є простим та одночасно основним візуальним компонентом в пакеті Swing. До методів даного класу відноситься демонстрація тексту, зображення, можливість вирівнювання). Мітки, які існують в JLabel:

· get/setText() – получить/установить текст в метке;

· get/setIcon() – получить/установить изображение в метке;

· get/setHorizontalAlignment – получить/установить горизонтальную позицию текста;

· get/setVerticalAlignment() – получить/установить вертикальную позицию текста;

· get/setDisplayedMnemonic() – получить/установить мнемонику (подчеркнутый символ) для метки;

· get/setLabelFor() – получить/установить компонент, к которому присоединена данная метка; когда пользователь нажимает комбинацию клавиш Alt + мнемоника, фокус перемещается на указанный компонент.

3. JButton являється основним активним класом в пакеті Swing. В даному класі використовують методи для змінення властивостей JButtonів. Методи в JButton аналогічні методам JLabel. Вони також керують зображенням та орієнтацією. Ме тоди в JButton:

· get/setText() – получить/установить текст в кнопке;  

· get/setIcon() – получить/установить изображение в кнопке;

· get/setHorizontalAlignment – получить/установить горизонтальную позицию текста;

· get/setVerticalAlignment() – получить/установить вертикальную позицию текста;

· get/setDisplayedMnemonic() – получить/установить мнемонику (подчеркнутый символ), которая в комбинации с кнопкой Alt вызывает нажатие кнопки.

4. JFrame – даний клас являє собою контейнер, що дозволяє додавати до себе інші компоненти для їх організації та представлення користувачу. JFrame виступає в якості моста між незалежними від конкретної операційної системи Swing частинами. JFrame реєструється як вікно і таким чином отримує властивості вікна операційної системи. Методи JFrame:

· get/setTitle() – получить/установить заголовок фрейма;

· get/setState() – получить/установить состояние фрейма (минимизировать, максимизировать и т.д.);

· is/setVisible() – получить/установить видимость фрейма, другими словами, отображение на экране;

· get/setLocation() – получить/установить месторасположение в окне, где фрейм должен появиться;

· get/setSize() – получить/установить размер фрейма;

· add() – добавить компоненты к фрейму.

 

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

1. Схеми – пакет Swing містить велику кількість схем, які представляють собою класи, що керують розміщенням компонентів в додатку, а також як повинні змінюватися дані компоненти в залежності від зміни вікна додатка.

2. Події – програма повинна реагувати на натискання клавіш, на рух маніпулятора і т.д.

3. Моделі – для таких компонентів, як списки, дерева, таблиці – це самий простий спосіб роботи з даними.

 

Створення будь-якої візуальної програми без використання Swing пакету практично неможливо. Swing бібліотека налічує такі важливі елементи як:

1. JInternalFrame (вікно, яке існує всередині іншого вікна верхнього рівня, наприклад JFrame).

2. JProgresBar – рядок, який відображає процес будь-якої події.

3. JSlider – повзунок, який дозволяє користувачу вибирати межі відображення величин.

4. JTable – компонент, який представляє дані у вигляді таблиці.

5. JTree – компонент, який представляє дані у вигляді ієрархічного дерева.

Другою перевагою технології Swing є зовнішній вигляд, який можна налаштувати за допомогою функції Look and Feel. Це означає, що зовнішній вигляд може динамічно змінюватися в залежності від інтерфейсу вікон операційних систем (Wondows, Linux). Для того, щоб змінити зовнішній вигляд програми необхідно прописати такий код:

public static void main(String [] args) {

// установка Java Look And Feel (по умолчанию)

try {

                   UIManager.setLookAndFeel(

                   UIManager.getCrossPlatformLookAndFeelClassName());

}

catch (Exception e) {}

}

 

Перелік аргументів, які можуть передаватися методу setLookAndFeel():

1. UIManager.getSystemLookAndFeelClassName() – внешний вид программы, сходной с программой той платформы, на которой приложение запускается.

2. "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" – внешний вид Win32 look and feel (только для Windows).

3. "com.sun.java.swing.plaf.motif.MotifLookAndFeel" – вид Motif (Unix).

4. "javax.swing.plaf.mac.MacLookAndFeel" -- вид Macintosh look and feel (только для Mac).

Більшість Swing побудована по принципу модель-вигляд-контроллер. Внаслідок цього ми одержуєм розділення між даними компонента та способами, якими користувач взаємодіє з ними.

48. Аплети. Принципи обробки подій.

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

В Java запропонована, так звана, модель делегування подій (event delegation model). Джерело події (event source) породжує подію, після чого вона передається в обробник подій (event listener – дослівно слухач події). При цьому будь-який об’єкт може бути призначеним як обробник деякої події. Така модель доволі гнучка, оскільки кожен програміст може вибрати зручний для нього спосіб обробки події (де саме її обробляти), проте інколи текст програми може бути дещо заплутаним для тих хто не звик до такої моделі.

Інформація про подію інкапсулюється у об’єкті події (event object). Всі події описуються підкласами java.util.EventObject. Як приклади, можна навести підкласи ActionEvent та WindowEvent. Перші об’єкти породжують кнопки, а другі вікна.

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

При розробці графічного інтерфейсу розробнику необхідного здійснити наступне:

1. Створити клас, який оброблятиме подію чи ряд подій і, який реалізовуватиме відповідний інтерфейс

2. Створити джерела подій (вікно, кнопки, смугу прокрутки тощо)

3. Зв’язати джерела подій з обробниками подій

Сказане демонструє наступний фрагмент програми:

ActionListener listener =...; // створити обробник подій JButton button = new JButton("Ok"); // створюємо кнопку button.addActionListener(listener); // зв ' язуємо кнопку з обробником подій

Клас, який реалізовуватиме інтерфейс ActionListener повинен мати метод actionPerformed() який в якості параметру отримуватиме об’єкт ActionEvent.

class MyListener implements ActionListener{... public void actionPerformed(ActionEvent event){ // тут відбувається реакція на натиснення кнопки...}}

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

Результат виконання EventTest.java

import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.event.*; import javax.swing.JOptionPane; public class EventTest {      public static void main(String[] args) {      SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class SimpleFrame extends JFrame{ public SimpleFrame() {      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // задаємо розміри фрейму JPanel panel = new JPanel(); // створюємо панель this. add(panel);          // додаємо панель у фрейм JButton button = new JButton("OK!"); // створюємо кнопку ОК! panel.add(button);        // додаємо кнопку на панель EventListener buttonAction = new EventListener(); // створюємо екземпляр обробника подій button.addActionListener(buttonAction);      // зв ' язуємо обробника подій з кнопкою " ОК!" } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200;} class EventListener implements ActionListener{ @Override // не обов ' язково; вказуємо, що ми перевизначаємо метод actionPerformed     public void actionPerformed(ActionEvent event) {  // Виводимо повідомлення у діалоговому вікні         // зверніть увагу, що для цього ми створюємо новий фрейм   JOptionPane.showMessageDialog(new JFrame(), "Ви натиснули кнопку <<OK!>>");     } }

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

Результат виконання EventTest2java

import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.event.*; import javax.swing.JOptionPane; public class EventTest2 {      public static void main(String[] args) {      SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class SimpleFrame extends JFrame{ public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200;   public SimpleFrame() {      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // задаємо розміри фрейму JPanel panel = new JPanel();        // створюємо панель this. add(panel);                   // додаємо панель у фрейм      JButton button1 = new JButton("Кнопка 1"); // створюємо кнопку 1 panel.add(button1);        // додаємо кнопку на панель EventListener button1Action = new EventListener(1); // створюємо екземпляр обробника подій button1.addActionListener(button1Action);      // зв ' язуємо обробника подій з кнопкою 1      JButton button2 = new JButton("Кнопка 2"); // створюємо кнопку 2 panel.add(button2);        // додаємо кнопку на панель EventListener button2Action = new EventListener(2); // створюємо екземпляр обробника подій button2.addActionListener(button2Action);      // зв ' язуємо обробника подій з кнопкою 2 }  } class EventListener implements ActionListener{ private int buttonNumber; public EventListener (int number){  buttonNumber=number;    } @Override // не обов ' язково, вказуємо, що ми перевизначаємо метод actionPerformed     public void actionPerformed(ActionEvent event) {  // Виводимо повідомлення у діалоговому вікні, яку кнопку натиснуто   if (buttonNumber==1) JOptionPane.showMessageDialog(new JFrame(), "Ви натиснули кнопку 1");     else JOptionPane.showMessageDialog(new JFrame(), "Ви натиснули кнопку 2");     }  }

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

 

49. Огляд програм пакета JDK. Призначення програм java, javac,

appletviwer, jar.

 

DK це набір бібліотек класів, утиліт та документації для програмування на Java. Він складається з кількох компонентів. Ось основні із них:

1. компілятор javac. Транслює текст програми на Java в байт-коди віртуальної машини.

2. інтерпретатор java. З його допомогою запускаються програми відкомпільовані в байт-код. Містить в собі JVM (Віртуальну машину Java).

3. утиліта appletviewer. З її допомогою можна запускати аплети - графічні програми, які виконуються в інтернет браузері. Фактично вона являє собою браузер, який може запускати тільки аплети.

4. утиліта javadoc — призначена для створення документації.

Викачати JDK можна тут.

Якщо ви хочете лише запускати програми написані на java, наприклад аплети в браузері, то достатньо просто завантажити JRE (Java Runtime Environment) - це мінімальний набір, який дозволяє виконувати програми написані на Java. У ньому відсутні складові, що необхідні для розробки програмного забезпечення.

Для того, щоб було зручно використовувати JDK потрібно задати змінні середовища і оголосити змінну classpath.

В Windows XP для встановлення відповідних змінних оточення клацніть правою кнопкою миші на робочому столі на іконці Мій комп'ютер. У контекстному меню виберіть Властивості(Properties) і перейдіть на вкладку Додатково(Advanced). В Windows Vista після вибору Властивості потрібно вибрати Додаткові параметри системи, а тоді уже вкладку Додатково. У самому низу цієї вкладки натисніть на кнопку Змінні середовища (Environment Variables). У діалоговому вікні Environment Variables, що з'явилося, натисніть на кнопку New для додавання нових змінних оточення. Для додавання змінної classpath заповніть поля Variable name (classpath) і Variable value (C:\Program Files\Java\jdk1.6.0_21\lib). Змінна path переважно уже існує у списку змінних, тож просто додайте наступний рядок у значення змінної: C:\Program Files\Java\jdk1.6.0_21\bin. При використанні інтегрованого середовища розробки (IDE), вищевказані дії можна не робити. Відповідні шляхи вказуються у налаштуваннях IDE.

 

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

програмування Ява. Генератор документації javadoc - призначення та

принцип використання.

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

В мові програмування Java розрізняють 2 типи коментарів:

1. Рядковий – має вигляд // і символи, які записані після подвійного слеша до кінця рядка не враховуються компілятором.

2. Багаторядкові коментарі – має вигляд /* */. Кількість рядків необмежена.

Javadoc — генератор документації в HTML-форматі з коментарів вихідного коду на Java від Sun Microsystems. Цей формат був обраний для забезпечення можливості зв'язати воєдино пов'язані документи за допомогою посилань. Коментарі javadoc стали «де факто» стандартом для документування створених Java-класів. Більшість середовищ розробки, таких як Eclipse та Netbeans автоматично генерують документацію за допомогою javadoc.

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

мові програмування Java існує три типи коментарів, лише один з яких може бути використаний для створення javadoc — це так званий коментар документації. В коді він виділяється такою конструкцією:

/** * Так можна коментувати змінні класу. */

Ці коментарі дають можливість додавати в програму інформацію про неї, яка пізніше може бути використана утилітою javadoc (входить в склад Java Development Kit) для створення HTML-файлів. Коментарі документації можна використовувати при коментуванні:

· полів (змінних);

· методів;

· конструкторів:

· класів;

· інтерфейсів;

· пакетів.

Варто відмітити, що в будь-якому разі коментарі повинні знаходитися перед документованим об'єктом.

В коментарях також можна використовувати і стандартні HTML теги, наприклад <strong>. Проте на використання деяких з них накладається заборона, наприклад заголовки порушують зовнішній вигляд HTML-файлу, сформованого за допомогою утиліти javadoc.

 

Коментарі використовуються для наочності написання програми. Вони перетворюють лістинг в документ, який описує його дії. Програму з коментарями називають самодокументованою програмою. В мові програмування Java введений третій тип коментарів. Для даного типу в складі JDK існує програма Java Doc, яка вилучає коментарі в окремий HTML файл. Даний HTML має вигляд гіпертексту. При натисканні на гіпертекстовий коментар користувач переходить на основний лістинг програми, де прописаний даний коментар. В документі, де знаходяться гіпертекстові посилання коментарів обов’язково повинен бути присутній символ //* */, текст, який символами і буде гіпертекстовим документом. Також в гіпертекстовому документі використовується спеціальний символ @. Після даного символу записуються вказівки до даної програми. Іншими словами, це коментар в документі коментарів.

 



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 165; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.40.207 (0.151 с.)