Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЕВ-4791

.pdf
Скачиваний:
22
Добавлен:
07.03.2016
Размер:
2.52 Mб
Скачать

}

s = new Ticker[size];

for (int i = 0; i <s.length; i++) s[i] = new Ticker();

start.addActionLisener(new StartL()); cp.add(start);

}

public static void main(Sting[] args) { Counter4 applet = new Counter4(); applet.isApplet = false;

if(args.length ! = 0)

applet.size = Integer.parseInt(args[0]); Console.run(applet, 200, applet.size*50 );

}

}

Приклад 6. Потоки-демони import java.io.*; class Daemon extends Thread { private static final int SIZE = 10; private Thread[] t = new Thread[SIZE]; public Daemon (true);

setDaemon(true);

start();

public void run() {

for (int i = 0; i <SIZE; i++) t[i] = new DaemonSpawn(i); for (int i = 0; i <SIZE; i++)

System.out.println(“t[” + i + “].isDaemon() = “ + t[i]. isDaemon());

while (true) yield();

}

}

class DaemonSpawn extends Thread { public DaemonSpawn (int i) {

System.out.println(“Потік DaemonSpawn “ + i + “

запущений”); start();

}

public void run() { while (true)

yield();

}

}

public class Daemons {

public static void main(Sting[] args) throws IOExctption { Thread d = new Daemon(); System.out.println(“d.isDaemon() = “ + d.isDaemon()); System.out.println(“Натисні будь-яку клавишу“); System.in.read();

}

}

21.3.Завдання для опрацювання самостійної роботи

1.Успадкувати клас Thread і перевизначити метод run(). У методі run() вивести на екран повідомлення, після чого призупинити виконання потоку методом sleep(). Повторіть такі дії три рази, потім повертайтеся з методу run(). Розмістіть у конструкторі повідомлення про створення об’єкта і перевизначте метод finalize(), щоб вивести в ньому повідомлення про

151

усунення об’єкта. Створіть окремий клас-нащадок, який в своєму методі run() викликає збирання сміття і закінчення за допомогою методів System.gc() і System.runFinalization(), після чого виводить на екран повідомлення про виконану роботу. Створіть декілька об’єктівпотоків обох класів та запустіть їх на виконання.

2.Модифікувати програму Sharing2.java так, щоб в методі run() класу TwoCounter використовувався блок синхронізації, а директиву synchronized з методу run() усунути.

3.Створити два підкласи потоку Thread, один з методом run(), який запускається, отримує посилання на другий об’єкт-потік, а потім викликає метод wait(). Другий об’єкт-потік повинен посилати першому потоку повідомлення notifyAll(), який через деякий час після отримання повідомлення надрукує його.

4.У програмі Counter5.java класу Ticker2 прибрати виклик методу yield() і пояснити — що відбувається. Замінити виклик методу yield() викликом метода sleep() і пояснити результат.

5.У програмі ThreadGroup1.java замінити команду sys.suspend() викликом методу wait() для всієї групи потоків так, щоб вона призупинила виконання на дві секунди. Для цього необхідно отримати блок об’єкта sys в блоці синхронізації.

6.Для програми Event.java існує клас Event, який слідкує за часом. Треба змінити клас Event так, щоб він став потоком Thread. Поміняти структуру залишків коду для роботи з новими подіями Event, які базуються на потоках.

7.Змінити вправу 6 так, щоб в програмі використовувався клас для виміру часу java.util.Timer, який постачається у складі JDK.

Рекомендована література [14, 15].

152

Тема 22. ТЕСТУВАННЯ ТА НАЛАГОДЖЕННЯ JAVA-ДОДАТКІВ

Вивчивши матеріал теми, студенти знатимуть:

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

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

етапи проведення аналізу проекту;

кроки перевірки тексту програми;

загальний перегляд програми;

механізм опису виключень;

правила структурного тестування.

Вивчення матеріалу теми допоможе студентам:

аналізувати використання даних в методах;

визначати та інтерпретувати повідомлення компілятора;

формувати переведення програми до налагодження;

залучати методи чистки програм;

використовувати правила еквівалентного розбиття;

закріпляти дії, які усувають дефекти.

22.1.Навчальні завдання для виконання практичної роботи

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

План

1.Недоліки традиційних методів налагодження програм.

2.Характеристика способів тестування методів і класів.

3.Підвищення якості програми шляхом обробки можливих помилок.

4.Технологія налагодження програм.

5.Інтеграція компонентів додатка або аплета: поетапне збирання додатка, тестування стійкості програми, тестування завантаження серверних додатків.

6.Шляхи підвищення якості програмного продукту.

7.Використання SCM для підвищення якості розробок.

8.Інтеграція компонентів великих програм мовою Java.

22.2.Навчальні завдання і послідовність виконання лабораторної роботи

Лабораторна робота

«Налагодження додатків з командного рядка»

Мета роботи. Поглибити і закріпити знання:

класифікувати етапи збирання додатків;

аналізувати результати тестування стійкості програми;

виявити недоліки і можливості виникнення помилок;

запускати приклади-тести завантаження серверних додатків;

формувати серверні сторінки java.

План заняття

1.Провести десятихвилинне опитування, з’ясувати рівень засвоєння студентами термінів

іпонять цієї теми.

2.Запустити jdb з командного рядка.

3.Виконати дії, які пов’язані з потоками.

4.Проаналізувати дамп стеку і встановити точки останову.

5.Скласти звіт з лабораторної роботи і захистити його.

Інформаційне забезпечення

1. Перелік завдань для виконання лабораторної роботи (індивідуальні завдання Теми 3).

153

2.Програмне середовище JDK.

22.3.Завдання для опрацювання самостійної роботи

Навчальні завдання

1.Зовнішні вимоги замовника програмного продукту.

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

3.Показники ефективності визначення дефектів у програмах для різноманітних методів контролю.

4.Генерація детальної проектної документації програмою javadoc.

5.Характеристика рекомендованого списку елементів, які перевіряються, написаних мовою java.

6.Використання методу читання програми.

7.Процедура переведення програми до режиму налагодження.

8.Залучення спеціалізованого текстового редактора.

9.Пакети контролю версій програмного забезпечення.

10.Шляхи інтеграції компонентів додатка або аплета.

Рекомендована література [14,15].

154

Тема 23. СТВОРЕННЯ КОМПОНЕНТІВ ЗА ДОПОМОГОЮ ТЕХНОЛОГІЇ ENTERPRISE JAVABEANS (EJB)

Вивчивши матеріал теми, студенти знатимуть:

особливості специфікації EJB;

характеристику компонентів EJB;

складові компонента EJB;

категорії компонентів EJBs;

шляхи формування компонентів EJB;

механізм дії EJB;

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

визначати класи та інтерфейси EJB;

формувати розробку компонента EJB;

залучати стандартизацію в програмуванні розподілених об’єктів.

23.1.Навчальні завдання для виконання практичної роботи

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

План

1.Характеристика технології компонентного програмування.

2.Недоліки технології JavaBeans.

3.Властивості EJB. Використання події для управління властивостями.

4.Створення подій запуску і зупинення.

5.Технологія формування простого компоненту.

6.Обробка складних властивостей компонентів.

7.Використання корпоративної моделі EJB.

8.Взаємодія компонентів EJB з користувачем за допомогою системи обміну інформацією.

23.2.Завдання для опрацювання самостійної робота

Навчальні завдання

Завдання 1. Простий інтерфейс для компонента «точного часу». //# Ви повинні встановити пакет J2EE (Enterprise

//# JavaBeans) із сайту і додати файл j2ee в змінну CLASSPACH, //# щоб вірно скомпілювати цей файл

//# Віддалений інтерфейс компонента PerfectTimeBean import java.rmi.*;

import javax.ejb.*;

public interface PerfectTime extends EJBObject { public long getPerfectTime()

throws RemoteException;

}

Завдання 2. Внутрішній інтерфейс для компонента «точного часу». import java.rmi.*;

import javax.ejb.*;

public interface PerfectTimeHome extends EJBHome { public long PerfectTime create()

throws CreateException, RemoteException;

}

155

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

import java.rmi.*; import javax.ejb.*;

public class PerfectTimeBeam implements SessionBean { private SessionContext sessionContext;

//

public long PerfectTime () {

return System.currentTimeMillis();

}

//

public void ejbCreate()

throws CreateException { }

public void ejbRemove()

{ }

public void ejbActivate()

{ }

public void ejbPassivate()

{ }

public void

 

setSessionContext (SessionContext ctx) { sessionContext = ctx;

}

}

Завдання 4. Описувач розгортання — файл формату xml, який повинен зберігатися у файлі з іменем ejb-jar.xml

< ejb-jar >

<description> </description> <display-name></display-name> <small-icon></small-icon> <large-icon></large-icon> <enterprise-beans>

<session> <ejb-name>PerfectTime</ejb-name> <home> PerfectTimeHome</home> <remote> PerfectTime</remote> <ejb-class> PerfectTimeBean</ ejb-class> <session-type> Stateless</ session-type>

<transaction-type> Container</ transaction-type > </session>

</enterprise-beans>

<ejb-client-jar >< /ejb-client-jar >

</ejb-jar >

Завдання 5. Програма-клієнт, яка використовує послуги компонента PerfectTimeBean public class PerfectTimeClient {

public static void main (String[] args) throws Exception {

javax.naming.Context context =

new javax.naming.InitialContext(); Object ref = context.lookup(“PerfectTime”);

PerfectTimeHome home = (PerfectTimeHome) javax.rmi.PortableRemoteObject.narrow( ref, PerfectTimeHome.class);

PerfectTime pt = home.create();

System.out.println(“Використовується Компонент EJB, точний час: ” + pt.getPerfectTime() );

}

}

156

23.3. Методичні вказівки до розробки компонента EJB

А) При створенні віддаленого компонента:

1.Інтерфейс повинен бути відкритим (public).

2.Віддалений інтерфейс повинен розширяти інтерфейс javax.ejb.EJBJbject.

3.Кожен метод віддаленого інтерфейсу повинен описувати виключення java.rmi.Remote Exception у своєму опису виключень throws.

4.Будь-який об’єкт, що передається як параметр або повернення значення, повинен бути дійсним типом даних протоколу RMI-IIOP.

Б) При створенні внутрішнього компонента:

1.Внутрішній інтерфейс повинен бути відкритим (public).

2.Внутрішній інтерфейс повинен розширяти інтерфейс javax.ejb.EJBHome.

3.Кожен метод для створення всередині внутрішнього інтерфейсу повинен описувати два виключення: виключення java.rmi.RemoteException та java.ejb.CreateException.

4.Поверненням значення методу для створення повинен бути віддалений інтерфейс.

5.Поверненням значення методу для знаходження повинен бути віддалений інтерфейс або об’єкт java.util.Enumeration чи колекція java.util.Collection.

6.Будь-який об’єкт, що передається які параметр або повертаємого значення, повинен бути дійсним типом даних протоколу RMI-IIOP.

В) При створенні класу з реалізацією вашого компонента EJB:

1.Клас повинен бути відкритим (public).

2.Клас повинен реалізовувати інтерфейс для компонента EJB (або javax.ejb.SessionBean

або javax.ejb.EntityBean).

3.Клас повинен визначати методи, які напряму пов’язані з методами віддаленого інтерфейсу. Слід відмітити, що клас не реалізує віддаленого інтерфейсу; він абсолютно точно відображає ці методи, але не описує в них виключення java.rmi.RemoteException.

4.Необхідно визначити один або кілька методів ejbCreate() для ініціалізації Вашого компонента EJB.

5.Повернення значення і параметри всіх методів повинні бути дійсними типами даних протоколу RMI-IIOP.

Рекомендована література [14,15].

157

Тема 24. РОЗПОДІЛЬНІ ДОДАТКИ JAVA: RMI

Вивчивши матеріал теми, студенти знатимуть:

зовнішні та внутрішні проявлення віддалених інтерфейсів;

визначення основних складових віддалених інтерфейсів;

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

технологію використання віддалених інтерфейсів;

шляхи формування віддаленого виклику методів;

Вивчення матеріалу теми допоможе студентам:

визначати віддалені інтерфейси;

реалізовувати віддалений інтерфейс;

залучати віддалений об’єкт;

використовувати RuntimeExeption для автоматичного пошуку помилок;

закріпляти дії, які завершуються за допомогою пропозиції finally.

24.1.Навчальні завдання для виконання практичної роботи

Мета роботи: закріпити теоретичні погляди на фундаментальні механізми віддаленого виклику методів та визначати їх практичну сутність.

План

1.Сутність розподільних додатків.

2.Характеристика віддаленого виклику методів (RMI).

3.Визначення контракту RMI.

4.Особливості оточення клієнта RMI.

5.Сервер RMI та його характеристики.

6.Технологія використання RMI мережею.

7.Програма: зворотні виклики RMI.

8.Програма RMIWatch.

План заняття

1.Провести десятихвилинне опитування, з’ясувати рівень засвоєння студентами термінів

іпонять цієї теми.

2.Розробити фрагмент програми для конкретної прикладної задачі.

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

4.Скласти звіт з роботи і захистити його.

Інформаційне забезпечення

1.Перелік завдань для виконання практичної роботи.

2.Серверне програмне середовище.

24.2.Завдання для опрацювання самостійної роботи

Навчальні завдання

Написати клієнтську програму, яка використовує службу RMI.

Написати код серверу для клієнта із завдання 1. Сервер повинен мати дві частини: клас реалізації та головного методу.

Розподільна система при використанні RMI мережею. Отримати реєстр RMI для роздачі клієнтських заглушок за вимогою.

Скласти програму, в якій використовується механізм зворотного виклику RMI.

За допомогою програм серії RMIWatch провести творчі експерименти з реєстрацією RMI.

Рекомендована література [14,15].

158

Тема 25. ТЕХНІКА ПРОГРАМУВАННЯ ЕКОНОМІЧНИХ ЗАДАЧ ЗАСОБАМИ .NET FRAMEWORK

Вивчивши матеріал теми, студенти знатимуть:

елементи платформи .NET Framework;

базову платформу Base Framework;

можливості доступу на платформі .NET Framework;

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

шляхи створення додатків;

механізм розгортання додатків;

функціональні мови платформи .NET Framework.

Вивчення матеріалу теми допоможе студентам:

визначати елементи системи типів у середовищі CLR;

формувати типи вигляду посилання;

використовувати інтерфейси для типів значень;

використовувати сумісність типів при присвоюванні;

закріпляти дії, які динамічно визначають типи.

25.1.Навчальні завдання для виконання практичної роботи

Мета роботи: закріпити теоретичні погляди на фундаментальну платформу .NET Framework для її застосування в програмуванні економічних задач.

План

1.Недоліки традиційних підходів програмування.

2.Характеристика типових проблем програмування.

3.Підвищення якості створення програм шляхом залучення платформи .NET Framework.

4.Рішення на основі платформи .NET Framework.

5.Додатки і платформи .NET Framework.

6.Технологія створення різноманітних типів.

7.Система метаданих та їх програмування.

8.Взаємодія метаданих із СОМ-компонентами.

9.Характеристика системи виконання: проміжна мова, запуск програм у середовищі CLR, COR-відладчик, система безпеки.

10.Послідовність дій для створення додатків.

11.Бібліотека класів платформи .NET Framework.

25.2.Завдання для опрацювання питань самостійної роботи

Навчальні завдання

1.Проблеми глобального програмування.

2.Взаємозв’язок між мовами програмування і системами типів.

3.Інструменти для роботи з метаданими.

4.Програмування метаданих.

5.Порівняльний аналіз системи виконання та інших компонентних моделей.

6.Способи розгортання різноманітних версій додатка.

7.Компонування збирання: відкрите і закрите збирання.

8.Домени додатків. Використання доменів додатків.

9.Розгортання додатків.

10.Інтеграція з Web-орієнтованими стандартами і способами роботи.

11.Інсталяція платформи .NET Framework.

Рекомендована література [12-16].

159

Тестові завдання з дисципліни «Об’єктно-орієнтоване програмування»

Варіант І

Завдання 1. Об’єкт являє собою:

1.Елемент даних, що включає власні методи.

2.Предмет, що має ім’я.

3.Економічна категорія складної системи.

4.Виробничі відносини у процесі аналізу елементів систем.

Завдання 2. Атрибут об’єкта — це:

1.Взаємообмін між класами.

2.Реалізація власних діалогів.

3.Значення, що характеризує об’єкт в його класі.

4.Дія опрацювання помилки.

Завдання 3. Операція є поліморфною, якщо:

1.Одну і ту саму операцію можна застосовувати до об’єктів різних класів.

2.Додаються два чи більше об’єктів одного класу.

3.Аргументи функції є покажчиками.

4.Існує значення за замовчуванням.

Завдання 4. Імена полів необхідно вказувати, коли:

1.Кваліфікатори зазначаються на схемах.

2.Існує кілька сторін трипарної залежності.

3.Користувач має свою директорію.

4.Залежність встановлюється між об’єктами одного класу.

Завдання 5. Важливою властивістю відношення агрегації є:

1.Ідентифікація.

2.Інкапсуляція.

3.Транзитивність.

4.Поліморфізм.

Завдання 6. Правил успадкування необхідно дотримуватися тоді, коли:

1.Операції-запити мають успадковуватися всіма підкласами.

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

3.Операції, що змінюють значення обмежених атрибутів або атрибутів певних залежностей, мають блокуватися в усіх їх розширеннях.

4.Успадковані операції можна уточнювати, додавати до них додаткові дії.

Завдання 7. Абстрактний клас не може мати:

1.Операцій.

2.Методів.

3.Об’єктів.

4.Підкласів.

Завдання 8. Делегування — це:

1.Дані, специфічні для потоку.

2.Механізм реалізації пересилання операцій від одного об’єкта до іншого.

3.Механізм отримання індексу опрацювання.

4.Вибір власного батьківського класу.

Завдання 9. Можливим ключем називають:

1.Мінімальний набір атрибутів, які однозначно ідентифікують об’єкт чи зв’язок.

2.Метасимволи пакета регулярних виразів.

3.Методи регулювання взаємодій між об’єктами.

4.Механізм функціонування об’єктів.

160