
- •Програмне забезпечння мережних технологій
- •Лабораторна робота №1
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •Завдання до лабораторної роботи
- •6 Контрольні питання
- •Лабораторна робота №2
- •Побудова аплетів
- •1.1. Найпростіші аплети
- •2. Опрацювання подій в аплетах
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •Завдання до лабораторної роботи
- •6. Контрольні питання
- •Лабораторна робота №3
- •1. Потоки в java
- •2. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •5. Контрольні питання
- •Лабораторна робота №4
- •1.Завантаження драйверів баз даних
- •1.2. Підключення до бази даних
- •2. Послідовність виконання роботи
- •3. Завдання до лабораторної роботи
- •4. Контрольні питання
- •Лабораторна робота №5
- •1. Класи клієнтів
- •2. Класи серверів
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •5.Завдання до лабораторної роботи
- •1.2. Контейнери
- •2. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •4. Контрольні питання
- •Лабораторна робота №7
- •1. Опис класів
- •3. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •4. Контрольні питання
- •Література
3. Вказівки до виконання роботи
Скласти структуру аплета. Вказати методи для перевантаженння. Побудувати структури даних та вибрати типи даних. Вибрати клси та пакети , необхідні для програмуванння конкретного аплету.
4. Послідовність виконання роботи
Розробити механізм аплету;
Спроектувати методи аплету;
Формалізувати алгоритм;
Створити візуальні структури та елементи опрацювання подій.
Завдання до лабораторної роботи
Створити JAVA аплет: декілька кульок, що рухаються по принципу більярдних кульок.
Створити JAVA аплет: формування та знищення ліній. Розробити аплет, який виводить біжучий текст (зверху-вниз, справа наліво та навпаки)?
Створити аплет, що малює круг певного кольору, а після подійного кліку мишкою колір змінюється.
Створити аплет, у вікні якого після подвійного кліку виникає геометрична фігура і рухається в межах прямокутника. Кожен наступний подвійний клік збільшує кількість фігур на одиницю. Клавіша “delete” знищує всі фігури.
Створити аплет, у вікні якого після подвійного кліку виникає безперевно рухається текст. Наступний подвійний клік змінює текст. Клавіша “delete” очищає вікно.
Створити аплет, що малює круг певного кольору, а після подвійного кліку мишкою колір змінюється
6. Контрольні питання
1. Що є аплет ?
2. Як оновлюється малюнок аплету?
3. Які є методи аплету?
4. Які механізми опрацюванння подій ?
Лабораторна робота №3
Тема: побудова програм потоків за допомогою стандартних бібліотек Java.
Мета: освоїти елементи програмування мовою JAVA, а також засвоїти класи і методи графічної бібліотеки awt (swing), sql, awt.event.
Вступ
Сучасні операційні системи підтримують багатопотоковий режим, в якому програміст в межах кожного процесу може створювати декілька підпроцесів або потоків. Потоки відрізняються від процесів. В системі з малою кількістю потоків є самостійні процеси і зв’язані процеси, які спільно використовують програми опрацювання відкритих файлів. В багатопотоковій системі кожен процес складається з одного чи більше (до n) потоків, і всі вони спільно використовують як глобальні змінні, так і програми опрацювання відкритих файлів. Таке розділення глобальних змінних спрощує для потоків спільне використання ресурсів при одночасному виконанні поставлених їм задач.
1. Потоки в java
Java є багатопотоковою мовою, що підтверджується типом методів класу Object – базового для усіх класів Java. Шість загальнодоступних методів класу Object призначені для управлінням потоками і міжпотоковим обміном інформацією. Java інкапсулює поняття потоку в класі Thread, який має два типи конструкторів. Вони відповідають двом способам формування об’єкту для виконання у власному потоці.
Простий потік. Найпростішим є потік основної програми. Потік основної програми – це пострічкова послідовність виконання команд. Кожна програма має щонайменше один потік, як наприклад наступна програма
public class Hello {
public static void main(string args[]) {
system.out.println(“HelloWorld ”);
}
}
або декілька потоків.
При стартуванні наведеної програми метод main з однією стрічкою коду створює потік. Потік досягає кінця методу і пропадає. Програма здійснює вихід. Без використання потоків і наявності багатьох стрічок коду виконується тільки одна стрічка.
Стани потоку. Розглянемо, як програма методом main встановлює інші потоки, запускає їх та передає їм управління.
Створення потоку здійснюється аналогічно до створення об’єкту будь–якого класу Java. Створений потік, але ще не запущений, знаходиться в стані “новий потік”. Після запуску потоку він знаходиться в стані “виконання”. При завершення методу потоку run він переходить в “завершений” стан.
Методи потоків start і run. Об’єкт класу Thread формується конструктором і завершується поверненням з деструктора. Конструктор Thread і метод start виконуються в потоці, у якому вони викликаються. Метод run виконується в новому потоці і будь–який інший, викликаний з run, також буде виконуватись в ньому. Метод run є ядром об’єкту класу Thread. Він створює команди тіла потоку. Цей метод призначений для реалізації поведінки потоку. Метод run, як правило, містить цикл, часом нескінченний, наприклад,
public void run () {
…
while (true) {
…
}
…
}
Методи start() і stop() використовуються для створення і знищення базового потоку. Для запуску потоку необхідноі викликати start, але stop не обов’язковий для його знищення. Більшість аплетів розраховані на те, що повернення з методу run зруйнує потік. Потік призупиняється (перевід в режим “очікування”) за допомогою методу suspend (рис.1.4), який зупиняючи виконання потоку залишає його в пам’яті. Метод resume поновлює виконання з того місця, де потік був призупинений. Метод join() є також важливим механізмом управління потоком, який використовується для запуску потоків.
Атрибути потоку. Кожен потік має три атрибути, які можна встановити і визначити: ім’я, пріоритет і демон – статус. Ім’я потоку є простим ідентифікатором, яке використовується для відлагоджування та системного моніторингу. Виконання потоків планується автоматично на основі пріоритетів. Потоки з вищим пріоритетом мають більший доступ до ресурсів комп’ютера, вони плануються для більш частого використання порівняно з потоками з нижчим пріоритетом. Пріоритет змінюється в процесі за допомогою методу Thread.setPriority. Різні операційні системи використовують різні діапазони для значень пріоритетів. В Java встановлення пріоритету потоку базується на трьох константах: MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY.
Статус демона визначається методом Thread.setDaemon, який необхідно викликати перед звертанням до методу start (тобто до початку реального виконання базового потоку операційної системи).
Невидимі та інші потоки. В програмі Java існують невидимі потоки. Бездіяльний потік, збирач сміття та фіналізатор працюють разом. Бездіяльний потік має дуже низький пріоритет і підтримує прапорець сигналу виконання потоку. Пріоритет бездіяльного потоку вибирається таким, щоб він ніколи не виконувався, за винятком моменту, коли всі інші потоки заблоковані.
Є два способи побудови і запуску потоків. Найпростіший полягає у наслідування стандартного класу потоку Thread. Нижче наведено приклад програми як сукупності трьох потоків:
public class MyThread ехtends Thread{ //планується виконання у потоці
public void run () { // метод викликається при запуску потоку
…
while (true) {
…
}
…
}
}
public static void main(String args[]) {
Thread MyThread1=new MyThread.start();// створення і старт
Thread MyThread2=new MyThread.start();
Thread MyThread3=new MyThread.start();
}
}
Другий спосіб використовується, якщо програміст створює декілька потоків з доступом до спільного об’єкту. Він полягає у створенні класу з методом run() і наслідуванням інтерфейсу Runnable (для вказання компілятору, що клас буде виконуватись як потік). Запуск потоку можливий з допомогою методу join:
public class Server implements Runnable { // клас у потоці
public static void main(String args[]) {
new Thread(new Server()).start();
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
}
}
}
або без нього
class MyThread implements Runnable {
public void run() {
// основний метод класу
}
}
Runnable runnable = new MyThread(); // створення об’єкту
Thread thread = new Thread(runnable); // створення об’єкту
thread.start(); // стартування потоку і методу run в runnable
Програмування з потоками вимагає від програміста навичок та досвіду. Тоді використання апарату потоків принесе бажаний ефект збільшення продуктивності програмних засобів.