ЯЗЫКИ ПРОГРАММИРОВАНИЯ ДЛЯ РАЗРАБОТКИ СЕТЕВЫХ ПРИЛОЖЕНИЙ: ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
для студентов специальностей
I-27 01 01 «Экономика и организация производства»,
I-26 02 03 «Маркетинг»
дневной формы обучения
В 2-х частях
Часть 2
Минск 2008
УДК 681.3.061(075.8)
ББК 32.973.26-018.1 я 73
Я 41
Р е ц е н з е н т:
зав. кафедрой интеллектуальных информационных технологий
Белорусского государственного университета информатики и
радиоэлектроники, д-р техн. наук, проф. В. В. Голенков
А в т о р ы:
Т.М. Унучек, Д. А. Сторожев, Е.Н. Унучек,
В.Н. Комличенко, Д.С. Марудов, А.А. Тарасевич
Языки программирования для разработки сетевых приложений:
Я 41 язык программирования JAVA: лаб. практикум для студ. спец. I - 27 01 01 «Экономика и организация производства», I - 26 02 03 «Маркетинг». В 2 ч. Ч. 2 / Т. М. Унучек [и др.]. – Минск: БГУИР, 2008. – 62 с.
ISBN 978-985-444-910-4 (ч. 2)
В лабораторном практикуме излагаются основы платформно-независимого объектно-ориентированного языка программирования Java 2, приведено описание основных его библиотек и классов.
|
|
Вторая часть практикума состоит из четырех лабораторных работ, нацеленных на разработку апплетов, организацию работы с потоками, создание графического пользовательского интерфейса, работу с базами данных. Каждая лабораторная работа содержит основной теоретический материал по тематике работы, сопровождается большим числом примеров и законченных программ.
Часть 1 вышла в БГУИР в 2007 г.
УДК 681.3.061(075.8)
ББК 32.973.26-018.1 я 73
ISBN 978-985-444-910-4 (ч. 2) © УО «Белорусский государственный университет ISBN 978-985-488-081-5 информатики и радиоэлектроники», 2008
СОДЕРЖАНИЕ
Введение ……………………………………………………………………... | 5 |
Лабораторная работа №1. Разработка апплетов, работа с графикой… | 6 |
Пакет AWT………………………………………………………………… | 6 |
Класс Applet……………..…………………….…………………………….. | 7 |
Инициализация и завершение апплета…………………………………….. | 8 |
Запуск апплетов……………………………………………………………… | 9 |
Рисование линий в апплете ………………………………………………… | 10 |
Рисование прямоугольников в апплете………………………………….. | 10 |
Рисование эллипсов и кругов в апплете…………………………………. | 10 |
Рисование дуг в апплете…………………………………………………….. | 11 |
Работа с цветом……………………………………………………………… | 11 |
Задания для самостоятельного выполнения……………………………….. | 15 |
Лабораторная работа №2. Разработка апплетов с использованием потоков и их синхронизации……………………………………………….. | 16 |
Многопоточное программирование……………………….……………… | 17 |
Приоритеты потоков………………………………………………………… | 17 |
Класс Thread. Интерфейс Runnable………………………………………. | 17 |
Создание потоков. Жизненный цикл потока………………………………. | 18 |
Синхронизация потоков…………………………………………………... | 19 |
Задания для самостоятельного выполнения……………………………...... | 30 |
Лабораторная работа №3. Разработка пользовательского интерфейса с использованием фреймов, элементов управления……………………. | 32 |
События………………………………………………………………………. | 32 |
Классы событий…………………………………………………………… | 32 |
Класс ActionEvent ………………………………………………………… | 33 |
FocusEvent ………………….……………………………………………… | 34 |
ItemEvent …………………………………………………………………...... | 34 |
KeyEvent……………………………………………………………………… | 34 |
MouseEvent……………..…………………………………………………… | 35 |
TextEvent…………………………………………………………………… | 35 |
WindowEvent…………………………………………………………………. | 36 |
Элементы-источники событий…………………………………………… | 36 |
Интерфейсы прослушивания событий……………………………………... | 37 |
Классы пакета AWT: Component, Window, Frame……………………..... | 38 |
Элементы управления Label, Button, Checkbox, Choice, List, Scrollbar…. | 40 |
Элементы управления TextField и TextArea………………………………. | 44 |
Диалоговые окна…………………………………………………………….. | 47 |
Задания для самостоятельного выполнения……………………………….. | 50 |
Лабораторная работа №4. Разработка пользовательского интерфейса для работы с базой данных………………………………………………… | 53 |
Интерфейс JDBC…………………………………………………………….. | 53 |
Типы драйверов в JDBC…………………………………………………….. | 56 |
Последовательность работы с БД…………………………………………... | 56 |
Задания для самостоятельного выполнения……………………………….. | 62 |
Список использованных источников ……………………………………. | 64 |
|
|
ВВЕДЕНИЕ
Лабораторный практикум является второй частью лабораторного цикла работ по курсу «Языки программирования для разработки сетевых приложний: язык программирования JAVA». В первой части лабораторного практикума рассматривались особенности разработки консольных приложений, в частности консольный ввод/вывод, работа с файлами, сетевая организация взаимодействий приложений (консольный тип приложения с использованием протоколв взаимодействия TCP и UDP). Во второй части лабораторного практикума рассматриваются особенности графических возможностей Java, разработки апплетов, создания графического пользовательского интерфейса (GUI) с использованием фреймов и элементов управления. Особое внимаение уделено особенностям создания, организации работы и синхронизации потоков. Раскрыты основные принципы работы с базами данных.
Основной акцент в лабораторном практикуме сделан на разработку приложений на основе оконного интерфейса. Существуют фундаментальные различия между консольными программами, которые создавались в первой части лабораторного практикума, и программами Java с оконным интерфейсом. В консольной программе после запуска код программы определяет последовательность событий. Обычно все предопределено. Данные вводятся, когда потребуется, программа выводит данные, когда это необходимо. Как правило, в любое время известно, какой конкретный код программы будет выполняться дальше.
Приложения с оконным интерфейсом или апплеты действуют иначе. Пользователь через графический интерфейс управляет работой программы. Выбор пунктов меню или кнопок с помощью мыши или клавиатуры вызывает определенные действия в программе. В любой заданный момент времени имеется целый диапазон возможных взаимодействий, каждое из которых будет приводить к различным программным действиям. Выполнение работ данного лабораторного практикума имеет своей целью усвоение студентами основных особенностей и ньюансов разработки приложений с оконным интерфейсом.
|
|
Первая лабораторная работа посвящена разработке апплетов. Следующая (вторая) работа раскрывает особенности создания потоков. В третьей представлены основы разработки пользовательского интерфейса с использованием фреймов и элементов управления. Последняя (четвертая) лабораторная посвящена работе с базами данных, используя консольный интерефейс пользователя. В конце каждой лабораторной работы содержатся задания для самостоятельного выполнения студентами.
ЛАБОРАТОРНАЯ РАБОТА №1
РАЗРАБОТКА АППЛЕТОВ, РАБОТА С ГРАФИКОЙ
Цель: Научиться создавать приложения с использованием апплетов.
Как известно на Java можно создавать два типа приложений: приложения и апплеты. В предшествующих лабораторных работах №№1-4 показывался пример листинга кода Java -приложений. Другой тип программ представлен апплетом. Апплеты – это небольшие приложения, которые доступны на Internet -сервере, транспортируются по Internet, автоматически устанавливаются и выполняются как часть Web -документа. После того как апплет прибывает к клиенту, он имеет ограниченный доступ к ресурсам системы, которые использует для создания произвольного мультимедийного интерфейса пользователя и выполнения комплексных вычислений без риска заражения вирусами или нарушения целостности данных. Работа с апплетами поддерживается пакетом AWT. Этот пакет достаточно большой, что позволяет работать не только с апплетами. Пакет AWT содержит многочисленные классы и методы, которые позволяют создавать окна и управлять ими.
Рассмотрим более подробно указанный пакет AWT.
Пакет AWT
AWT – Abstract Window Toolkit – абстрактный оконный интерфейс. Основное назначение пакета AWT: поддержка окон апплета и создание обычных
GUI -приложений. Классы пакета AWT определяют интерфейсные окна и работу с визуальными компонентами окон и содержатся в пакете java.awt.
|
|
На рис. 1.1 представлен фрагмент иерархии классов AWT. Практически все классы пакета AWT являются потомками абстрактного класса Component.
Рис. 1.1. Фрагмент иерархии классов AWT
Рассмотрим особенности программирования апплетов. В последних лабораторных работах рассмотрим более подробно другие классы пакета AWT.
Класс Applet
Для работы с апплетами предназначен класс Applet, который определяет методы, представленные в табл. 1.1. Applet обеспечивает всю необходимую поддержку для выполнения апплетов, такую как запуск и остановка. Он также реализует методы, которые загружают и показывают изображения, и методы, которые загружают и проигрывают аудио-клипы.
Таблица 1.1
Методы, определенные в классе Applet
Метод 1 | Описание 2 |
void destroy() | Освобождает все ресурсы, занятые апплетом. Вызывается браузером непосредственно перед тем, как апплет завершается. Метод destroy() вызывается, когда среда решает, что апплет должен быть полностью удален из памяти. В этот момент следует освободить любые ресурсы, которые апплет может использовать. |
String getParameter(String paramName) | Возвращает параметр, указанный в paramName. Если указанный параметр не найден, возвращается null (пустой указатель) |
Окончание табл. 1.1
1 | 2 |
void init() | Вызывается, когда апплет начинает выполнение. Это первый метод, который вызывается для любого апплета. В нем необходимо инициализировать переменные. Вызывается этот метод один раз в течение времени выполнения апплета. |
boolean isActive() | Возвращает true, если апплет был запущен. Возвращает false, если апплет был остановлен |
void resize(Dimension dim ) | Изменяет размеры апплета согласно измерениям, указанным в dim |
void start() | Вызывается, чтобы перезапустить апплет после его остановки. В то время как init() вызывается один раз (когда апплет загружается), start() запускается каждый раз, когда HTML -документ апплета отображается на экране. Так, если пользователь покидает Web -страницу и возвращается обратно, апплет возобновляет выполнение в start(). |
void stop() | Метод stop() вызывается, если Web -браузер покидает HTML -документ, содержащий апплет, при переходе к другой странице. Когда вызывается stop(), апплет, вероятно, продолжает выполняться. Следует использовать stop() для приостановки потоков, не требующих выполнения, если апплет невидим. Их можно перезапустить вызывом start(), когда пользователь возвращается к странице. Метод stop() всегда вызывается перед destroy(). |