Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

Задания к лабораторной работе

Задание 1. Проверить и объяснить работу апплетов MultiTask, DoubleTask и Multi, рассматриваемых в данной главе в качестве примеров и отмеченных курсивом.

Задание 2. Создать апплет двойного назначения VertScroller и объяснить его работу.

Задание 3. Дать ответы на контрольные вопросы.

Контрольные вопросы

  1. Что такое процесс (задача) и поток (нить)?

  2. Чем определяется порядок передачи управления потоками?

  3. Какие есть способы реализации многозадачности в Java?

  4. Что необходимо сделать для создания подкласса потоков (подкласса Thread)?

  5. Когда запускается на выполнение метод run() подкласса Thread?

  6. Какими методами класса Thread необходимо запускать поток на выполнение и останавли-

вать его?

  1. Что необходимо сделать для реализации классом интерфейса Runnable?

  2. В каких состояниях может находиться поток?

  3. Какой поток считается новым, выполняемым и завершенным?

  4. В каких ситуациях поток является невыполняемым?

  5. Когда возникают исключительные ситуации при работе с потоками?

  6. Что такое приоритетная система и какой системой является виртуальная машина Java?

  7. Что такое группы потоков и чем они полезны?

  8. Что такое родовая группа потоков и главная группа потоков?

  9. Чем определяется уровень защиты группы потоков?

ЛАБОРАТОРНАЯ РАБОТА № 7

Автономные приложения. Потоки данных. Работа с локальными файлами (2 часа) методические указания к лабораторной работе

Язык Java очень широко используется для создания апплетов, встраиваемых в html-страницы, однако необходимость реализации апплетов на компьютерах пользователей сети WWW накладывает на них некоторые ограничения. Так, например, апплеты не имеют доступа к файлам, расположенным на удаленном компьютере, на котором эти апплеты были запущены, хотя и могут при этом обращаться к файлам, которые находятся в каталоге сервера WWW, откуда эти апплеты были загружены.

Программировать на языке Java можно и за рамками модели апплета, создавая отдельные, независимые приложения. Эти приложения похожи на обычные программы, написанные на других языках программирования, и имеют доступ к локальной файловой системе компьютера, на котором они запущены. Автономные приложения Java могут работать также и с удаленными файлами (через сеть Internet или Intranet).

1. Самостоятельные графические приложения

Рассмотрим, как в самостоятельных приложениях создать графический интерфейс пользователя, работающий без оболочки времени выполнения.

Все, что нужно для создания отдельного приложения Java, - это иметь метод main(), определенный в классе. Когда запускается программа java.exe на обработку этого класса, она вызывает метод main().

Для того, чтобы сделать приложение таким же дружественным и иллюстративным, как апплет, необходимо создать фрейм либо непосредственно в методе main(), либо в одном из методов, им вызываемом. Можно создавать не только объект класса Frame, но и его подклассов, например, как в приложении StandAlone (пример 1). Текст подобного шаблонного файла содержится в Приложении 7 и его можно в дальнейшем использовать в качестве шаблона самостоятельного графического Java-приложения.

/*------------- Пример 1. Файл StandAlone.java -------------*/

import java.awt.*;

// Основной класс для приложения StandAlone

public class StandAlone

{ public static void main(String args[])

{// Создать рамку (фрейм)

MainWndFrame frame = new MainWndFrame("Title");

// Отображение окна фрейма

frame.show();

}

// Сделать: Добавьте сюда код, необходимый для работы

// создаваемого специализированного приложения

}

// Класс главного фрейма для приложения

class MainWndFrame extends Frame

{ public MainWndFrame(String str) // конструктор

{ super (str);

// Сделать: Добавьте сюда код конструктора

resize(320,240); // задание необходимых размеров окна

// здесь можно определить различные параметры фрейма,

// например, форму курсора, меню, добавить компоненты и др.

}

public boolean handleEvent(Event evt) // обработчик событий

{ switch (evt.id)

{ case Event.WINDOW_DESTROY:

// при закрытии окна завершается работа приложения

//-------------------------------------------------

// Сделать: Добавьте сюда код, который должен

// работать при остановке приложения

dispose(); // удаление окна

System.exit(0); // завершение приложение

return true;

default:

// передача сообщения на обработку

// методу базового класса

return super.handleEvent(evt);

}

}

}

В предыдущих главах подробно рассматривался Abstract Windowing Toolkit (AWT). Все элементы управления и контейнеры можно использовать и при создании отдельного графического приложения. Можно также создать подкласс Applet и ввести его во фрейм, тогда отдельное графическое приложения будет использовать все возможности апплетов (включая получение графических и звуковых данных из Internet).

Графические данные из Internet (без создания объекта подкласса Applet) можно получить при помощи класса Toolkit. Класс Toolkit - это абстрактный класс, который служит связкой между AWT и локальной системой управления окнами. Этот класс определяет метод getImage(), который работает аналогично методу с таким же именем класса Applet. Чтобы из самостоятельного приложения получить изображение из Internet, следует внутри любого подкласса Frame сделать следующие действия:

Toolkit T=getToolkit();

Im=T.getImage(U); // U - URL-адрес, объект класса URL

Теперь, за исключением проигрывания звуковых фрагментов, можно сделать с отдельными приложениями все, что можно сделать с апплетами.

Для приложения можно воспользоваться другой версией метода getImage() класса Toolkit для загрузки графических данных прямо из файловой системы (без использования только URL-адреса), как это сделано в следующем классе фрейма:

class MainWndFrame extends Frame

{ Image Im;

public MainWndFrame(String str) // конструктор

{ super (str);

// Сделать: Добавьте сюда код конструктора

Toolkit T=getToolkit();

Im=T.getImage("image.gif"); // файл из текущего каталога

}

public void paint(Graphics g)

{ g.drawImage(Im,10,10,this);

}

// остальной код класса

........................

}

В данном случае метод getImage() ищет файл image.gif в текущем каталоге файловой системы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]