18083

Программирование апплетов в Java

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

Информатика, кибернетика и программирование

Лабораторная работа 303 Программирование апплетов в Java 1. Цель работы Целью работы является приобретение навыков программирования апплетов Java с использованием средств AWT. 2. Состав рабочего места 2.1. Оборудование: IBMсовместимый персональный компьютер ПК. ...

Русский

2013-07-06

364 KB

25 чел.

Лабораторная работа 3-03

Программирование апплетов в Java

1. Цель работы

Целью работы является приобретение навыков программирования апплетов Java с использованием средств AWT.  

  

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый   персональный компьютер (ПК).

2.2. Программное обеспечение: операционная система Windows, Java 2 SDK версии 6.0 и выше, пакет NetBeans IDE 6.1.

3. Краткие теоретические сведения

3.1. Апплеты

3.1.1. Средства графического интерфейса в Java

В настоящее время практически все прикладные программы используют для взаимодействия с пользователем графический интерфейс GUI (Graphical User Interface – графический интерфейс пользователя).

Одна из основных целей Java – создать независимую от платформы среду разработки GUI с единым интерфейсом прикладных программ – API (Application Program Interface). Фирма Sun назвала этот единый API инструментальными средствами  управления абстрактными окнами – AWT (Abstract Windowing Toolkit).

Средства AWT в Java предоставляют следующие возможности:

  •  рисование линий и геометрических фигур различных цветов;
  •  выбор различных шрифтов и начертаний для вывода текста.
  •  создание обработчиков сообщений для взаимодействия с мышью и клавиатурой;
  •  создание анимации;
  •  загрузка и рисование изображений;
  •  создание и использование компонентов – элементов интерфейса: кнопок, списков, полос прокрутки, меню и т. п.;
  •  создание и использование контейнеров для обеспечения основных функций окон и диалогов;
  •  создание и использование менеджеров компоновки;
  •  работа с изображениями.  

В Java для работы с изображениями используется обычная декартова система координат (x, y), где x – количество экранных точек от левой границы экрана, y – количество точек от верхней границы экрана. Левому верхнему углу соответствуют координаты (0, 0).

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

Каждый компонент AWT использует платформенно-зависимый (native)  код для вывода себя на экран. Когда приложение Java запускается под управлением Windows, используется GUI Windows. Когда приложение запускается под управлением Unix, то используется один из GUI для этой операционной системы (например, Motif).

Начиная с версии JDK 1.1, фирма Sun внесла существенные изменения в компоненты, предназначенные для создания GUI. Наряду с платформенно-зависимым компонентами AWT, названными «тяжелыми» (heavyweight) компонентами, была разработана группа «легких» (lightweight)  компонент, которые являются платформенно-независимыми и используют объекты специального пакета графических элементов – библиотеки Swing.

Возможности работы с AWT реализованы в Java в пакете java.awt.

3.1.2. Структура и выполнение апплетов

Одним из видов графических приложений Java являются апплеты (слово applet переводится как небольшое приложение, программка).

Для выполнения апплетов в Web-браузере должна быть реализована JVM (Java Virtual Machine – виртуальная машина Java). Как уже говорилось, во всех популярных Web-браузерах (Internet Explorer, Firefox, Opera и Netscape Navigator) реализована своя JVM. Кроме этого, при инсталляции Java SE 5 или 6 выполняется поиск имеющихся на компьютере Web-браузеров и установка в эти Web-браузеры (кроме Opera) собственной JVM фирмы Sun в качестве plug-in (встроенного модуля). Web-браузер Opera напрямую использует JVM, установленный на компьютере.

Апплеты отличают от приложений следующие основные особенности:

  •  все апплеты являются расширением класса Applet, описанного в Java SE в пакете java.applet;  
  •  апплет имеет структуру, отличную от структуры обычного приложения Java (без метода main());
  •  по сравнению с приложениями, апплет имеет более ограниченные возможности, особенно по вводу-выводу данных;
  •  запуск апплета осуществляется в Web-странице с помощью элемента applet;
  •  вследствие того, что доступ к апплетам выполняется под управлением Web-браузера, каждый апплет имеет жизненный цикл, состоящий из четырех этапов, причем каждый этап имеет соответствующий метод, который можно переопределить и получить доступ к конкретному этапу жизненного цикла;
  •  вывод апплета в Web-странице осуществляется в прямоугольное поле, выделенное в атрибутах width и height элемента applet, причем весь вывод выполняется в графическом режиме (для вывода можно использовать и метод System.out.println() или метод System.out.print(), однако в этом случае данные будут выводится в специальное окно Web-браузера – Java console, что не всегда удобно для пользователей).

Поскольку апплеты являются расширением класса Applet, объявление первичного класса апплета должно иметь следующий вид:

модификаторы class идентификатор-апплета extends Applet 

{

тело-апплета

}

Так как объявление класса Applet находится в пакете java.applet, который автоматически не подключается, в программе должен быть задан оператор import для этого пакета, т.е. оператор

import java.applet.*;

Кроме того, поскольку апплет является графическим приложением, должны быть импортированы классы пакета java.awt, а также (при необходимости) другие пакеты для работы с графикой.

Жизненный цикл апплета содержит следующие четыре этапа:

  •  этап инициализации (initialization stage).
  •  этап запуска (start stage).
  •  этап останова (stop stage).
  •  этап уничтожения (destroy stage).

На этапе инициализации создается и загружается объект апплета. На этом этапе можно создавать объекты для апплета, а также инициализировать значения, необходимые при работе апплета. Эти операции можно выполнить, задав их в переопределенном методе инициализации init() класса Applet (в классе Applet определен пустой метод init(), т.е. метод, не выполняющий никаких операций). На протяжении жизненного цикла инициализация выполняется только один раз при начальной загрузке апплета.

На этапе запуска система начинает выполнение апплета. Этап запуска может следовать сразу же после этапа инициализации или после повторного запуска апплета. Обычно это происходит тогда, когда пользователь, работая с Web-браузером, возвращается к странице, содержащей апплет, после просмотра какой-либо другой страницы. В отличие от этапа инициализации, этап запуска на протяжении жизненного цикла может выполняться множество раз. Чтобы задать операции, выполняемые при запуске апплета, необходимо задать их в переопределенном методе start()(в классе Applet определен пустой метод start()).

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

Этап уничтожения  по назначению противоположен этапу инициализации и начинается тогда, когда система собирается удалить апплет из памяти. Подобно этапу инициализации, этап уничтожения выполняется только один раз. Если апплет использовал ресурсы, которые перед уничтожением апплета необходимо освободить, то это нужно делать на этапе уничтожения. Действия, выполняемые на этапе уничтожения апплета, задаются  в переопределенном методе  destroy())класса Applet (в классе Applet определен пустой метод destroy()).

Метод класса Applet 

public String getAppletInfo()

дает возможность получить информацию об апплете, а метод

public String[] [] getParameterInfo()

возвращает сведения о параметрах апплета в виде массива строк.  

3.1.3. Вывод графического контекста

При создании компонента графического приложения, в том числе и апплета, автоматически формируется его графический контекст (graphics context). В контексте размещается область рисования и вывода текста и изображений. Все классы, связанные с рисованием находятся в пакете java.awt.

Управляет контекстом класс Graphics или класс Graphics2D. Поскольку графический контекст сильно зависит от конкретной графической платформы, эти классы сделаны абстрактными. Поэтому нельзя непосредственно создать экземпляры класса Graphics или Graphics2D.

Однако каждая виртуальная машина Java реализует методы этих классов, создает их экземпляры для компонента и предоставляет объект класса Graphics с помощью  метода класса Component:

public Graphics getGraphics(),

а также как аргумент методов paint() и update().

Методы рисования класса Component: paint(), update(), а также repaint(), приведенные в табл. 3.1, используются  для отображения компонента на экране.

Таблица 3.1.  Методы рисования класса Component

Метод

Описание

public void paint(Graphics g)

Рисует компонент на экране. В качестве параметра используется графический контекст g – объект класса Graphics.  Этот метод должен переопределяться апплетом или графическим приложением.

public void update(Graphics g)

Производит перерисовку компонента с использованием графического контекста g.

public void repaint()

Указывает, что компонент при первой возможности должен быть перерисован. Это рано или поздно (но не сразу) приведет к вызову метода update().

public void repaint(int x, int y, int width, int height)

Перерисовывает часть компонента, находящуюся в пределах заданного прямоугольника, заданного координатами левого верхнего угла x и y, а также шириной width и высотой height.

public void repaint(long tm)

Требует произвести перерисовку компонента не позже, чем через tm миллисекунд.

public void repaint(long tm, int x, int y,

int width, int height)

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

Методы классы Graphics для работы с линиями и контурными фигурами представлены в табл. 3.2.

Таблица 3.2. Методы классы Graphics для работы с линиями и контурными фигурами

Метод

Описание

void drawLine (int x1, int y1, int x2, int y2)

Выводит  линию от позиции, заданной первыми двумя целыми числами (координаты x1 и y1), до позиции, обозначенной координатами x2 и y2.

void drawRect (int x, int y, int width, int height)

Выводит прямоугольник. Координаты x и y указывают верхний левый угол прямоугольника, width и  height – соответственно ширину и высоту.

void draw3DRect (int x, int y, int width, int height, boolean raised)

Выводит подсвеченный трехмерный прямоугольник. Сам прямоугольник задается как и в методе drawRect, a булевская переменная raised указывает, должен ли прямоугольник быть поднят над фоном (значение true) или опущен по сравнению с фоном  (значение false).

void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight)

Выводит прямоугольник с закругленными углами, вписанный в нормальный прямоугольник, заданный первыми четырьмя параметрами. Параметры arcWidth и arcHeight указывают ширину и высоту дуги для закругленных углов.

void drawOval (int x, int y, int width, int height)

Выводит овал, вписанный в прямоугольник, определенный как и в методе drawRect.

void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle)

Выводит дугу, вписанную в прямоугольник, определенный как в методе drawRect. Параметры startAngle и arcAngle указывают начальные и конечные углы, измеряемые в градусах. Отсчет углов начинается от центра правой стороны графической области. Положительные значения указывают направление вращения против часовой стрелки, а отрицательные – по часовой стрелке.

void drawPolygon (int []xPoints, int []yPoints, int nPoints)

Выводит многоугольник. Целочисленные массивы xPoints и  yPoints содержат координаты x и y для точек, составляющих многоугольник, а параметр pointsNumber указывает общее количество точек.

void drawPolygon

(Polygon p)

Выводит многоугольник. Многоугольник задан объектом класса Polygon.

void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)

Выводит последовательность соединенных между собой линий, концы которых задаются координатами xPoints и yPoints, а параметр nPoints указывает общее количество точек (количество линий на 1 меньше).

3.1.4. Использование цветов

Цвет в графических приложениях Java задается как объект класса Color с использованием различных цветовых моделей, в частности моделей RGB, CMYK и HSB.  

Наряду с компонентами цвета, для объекта класса Color может быть задана прозрачность цвета (компонента alpha) – от полностью непрозрачного до полностью прозрачного (невидимого) цвета. Эта составляющая проявляет себя при наложении одного цвета на другой. Если alpha имеет максимальное значение, то цвет совершенно непрозрачен, предыдущий цвет не просвечивает сквозь него. Если alpha равна своему минимальному значению, то цвет абсолютно прозрачен, для каждого пикселя виден только предыдущий цвет.

Основные конструкторы класса Color приведены в табл. 3.3.

Таблица 3.3. Основные конструкторы класса Color

Конструктор

Описание

public Color(int r, int g, int b, int a)

Создает объект  Color по заданным компонентам красного (r), зеленого (g) и синего (b) цвета и alpha (a) в виде целых чисел в диапазоне от 0 до 255.

public Color(int r, int g, int b)

Создает объект  Color по заданным компонентам красного (r), зеленого (g) и синего (b) цвета в виде целых чисел в диапазоне от 0 до 255 (alpha равна 255).

public Color(float r, float g, float b, float a)

Создает объект  Color по заданным компонентам красного (r), зеленого (g) и синего (b) цвета и alpha (a) в виде вещественных чисел в диапазоне от 0.0f до 1.0f.

public Color(float r, float g, float b)

Создает объект  Color по заданным компонентам красного (r), зеленого (g) и синего (b) цвета в виде вещественных чисел в диапазоне от 0.0f до 1.0f (alpha равна 1.0f).

public Color(int rgba, boolean hasalpha)

Создает объект  Color по заданным компонентам цвета и alpha в виде одного шестнадцатеричного числа. В битах 16-23 записывается красная составляющая, в битах 8-15 — зеленая, в битах 0-7 — синяя составляющая цвета, а в битах 24-31 задается значение alpha.

public Color(int rgb)

Создает объект  Color по заданным компонентам цвета в виде одного шестнадцатеричного числа. В битах 16-23 первого и второго конструктора записывается красная составляющая, в битах 8-15 — зеленая, а в битах 0-7 — синяя составляющая цвета (alpha равна 0xFF).

Color(ColorSpace cspace, float[] components, float alpha)

Создает объект  Color не только в цветовой модели RGB, но и в других моделях, в частности в модели CMYK (используемая модель определяется объектом класса ColorSpace).

Цвета не всегда необходимо создавать, поскольку в классе Color есть набор предопределенных цветов, задаваемых статическими переменными типа Color. Эти переменные приведены в табл. 3.4.

Таблица 3.4. Предопределенные цвета класса Color

Переменная

Цвет

Color.BLUE

Синий цвет.

Color.WHITE

Белый цвет.

Color.LIGHT_GRAY

Светло-серый цвет.

Color.GRAY

Серый цвет.

Color.DARK_GRAY

Темно-серый цвет.

Color.BLACK

Черный цвет.

Color.RED

Красный цвет.

Color.PINK

Розовый цвет.

Color.ORANGE

Оранжевый цвет.

Color.YELLOW

Желтый цвет.

Color.GREEN

Зеленый цвет.

Color.MAGENTA

Пурпурный цвет.

Color.CYAN

Сине-зеленый, или циановый, цвет.

Методы операций с цветом класса Color приведены в табл. 3.5.

Таблица 3.5. Методы операций с цветом класса Color

Метод

Описание

public static getHSBColor(float h, float s, float b)

Создает объект  Color по заданным компонентам цвета:  оттенок (h), насыщенность (s) и яркость (b) в модели HSB. Параметры  s и b должны иметь значение в диапазоне от 0.0f до 1.0f, а параметр h может иметь любое значение. Разность между значением h и значением Math.floor(h) умножается на 360 и таким образом получается угол цвета (от 0 до 360) в цветовом колесе модели HSB.

public static float[] RGBtoHSB(int r, int g, int b, float[] hsbvals)

По заданным компонентам красного (r), зеленого (g) и синего (b) цвета модели RGB возвращает массив из трех значений: оттенка, насыщенности и яркости в модели HSB как в самой функции, так и в параметре hsbvals.

public static int HSBtoRGB(int hue, int saturation,

int brightness)

По заданным компонентам цвета:  оттенок (h), насыщенность (s) и яркость (b) в модели HSB в битах 0-23 возвращает целое значение, содержащее компоненты цвета в модели RGB.

public int getRed()

Возвращает  значение красной компоненты цвета (от 0 до 255).

public int getGreen()

Возвращает  значение зеленой компоненты цвета (от 0 до 255).

public int getBlue()

Возвращает  значение синей компоненты цвета (от 0 до 255).

public int getAlpha()

Возвращает значение компоненты  alpha (от 0 до 255);

public int getRGB()

Возвращает значение синей, зеленой, красной компонент цвета и значение компоненты  alpha в битах 0-31.

public float[] getComponents

(float[] compArray)

Возвращает массив, содержащий значения красной, зеленой, синей компонент и компоненты alpha (значения в диапазоне от 0.0f до 1.0f). Эти же компоненты содержатся и в массиве compArray.

public Color brighter()

Создает более яркий цвет по сравнению с текущим цветом.

public Color darker()

Создает более темный цвет по сравнению с текущим цветом.

Методы класса Graphics для работы с цветом приведены в табл. 3.6.

Таблица 3.6. Методы класса Graphics для работы с цветом

Метод

Описание

public abstract void setColor (Color c)

Задание текущего цвета для рисования.

public abstract Color getColor()

Получение текущего цвета рисования.

Все методы рисования фигур, кроме drawArc(), drawLine() и drawPolyline(), имеют соответствующие методы заполнения выводимой замкнутой фигуры в классе Graphics: fillRect(), fill3Drect(), fillRoundRect(), fillOval(), fillPolygon(). Эти методы имеют те же параметры, что и соответствующие им методы рисования drawXXX(). Цвет заполнения фигуры предварительно задается с помощью метода setColor().

Методы класса Component для работы с цветом приведены в табл. 3.6.

Таблица 3.6. Методы класса Component для работы с цветом

Метод

Описание

public void setForeground(Color c)

Установка (обычно в методе init()) цвета переднего плана (того цвета, которым будут рисоваться линии и выводится текст). По умолчанию в качестве цвета переднего плана используется черный цвет.

public void setBackground(Color c)

Установка цвета фона. По умолчанию в качестве цвета фона используется белый или серый цвет (в зависимости от Web-браузера).

public Color getForeground()

Получение цвета переднего плана.

public Color getBackground()

Получение цвета фона.

3.1.5. Вывод текста 

Поддержка вывода текста реализуется в Java с помощью методов классов Graphics, Font и FontMetrics.

Для вывода текста в программе на Java используется один из шрифтов Web-браузера, называемый стандартным шрифтом или шрифтом по умолчанию.

Чтобы изменить шрифт  выводимого текста задается в Java, его сначала надо определить как объект класса  Font с помощью конструктора:  

Font(String name, int style, int size)

В параметре name задается наименование, или гарнитура, шрифта  (typeface). Имя шрифта может быть строкой с физическим именем шрифта, например, "Courier New", или одна из строк "Dialog", "DialogInput", "Monospaced", "Serif", "sansSerif", "Symbol". Это так называемые логические имена шрифтов (logical font names). Если name равно null, то задается шрифт по умолчанию.

При выводе текста логическим именам шрифтов и стилям сопоставляются физические имена шрифтов или имена семейств шрифтов. Это имена реальных шрифтов, имеющихся в графической подсистеме операционной системы.

Например, логическому имени "serif" может быть сопоставлено имя семейства (family) шрифтов Times New Roman, а в сочетании со стилями – конкретные  физические имена Times New Roman Bold, Times New Roman Italic. Эти шрифты должны находиться в составе шрифтов графической системы того компьютера, на котором выполняется приложение.

В параметре style указывается начертание, или стиль, шрифта (font style):  Font.PLAIN (обычный), Font.BOLD (полужирный) и Font.ITALIC (курсив),  Font.BOLD | Font.ITALIC (полужирный курсивный), а в параметре size задается размер, или кегль, шрифта  (point size).   Кеглем в полиграфии называют размер шрифта в типографских пунктах. При выводе на принтер один пункт соответствует 1/72 дюйма, но при выводе на экран это соотношение не всегда соблюдается.

Методы класса Font для получения характеристик шрифтов приведены в табл. 3.7.

Таблица 3.7. Методы класса Font для получения характеристик шрифтов

Метод

Описание

public String getName()  

Получение имени шрифта.

public int getStyle()

Получение стиля шрифта.

public int getSize()

Получение размера шрифта.

Методы класса Graphics для вывода строки в окно апплета или графического приложения приведены в табл. 3.8.

Таблица 3.8. Методы класса Graphics для вывода строки

Метод

Описание

public abstract void drawString(String str, int x, int y)

Выводит строку  str с координатами x и y начала базовой линии.

public void drawChars(char charArray[], int offset,

int length, int x, int y)

Вывод символов из массива символов charArray[], начиная с позиции offset и длиной  length символов с координатами x и y начала базовой линии.

public void drawBytes(byte byteArray[], int offset,

int length, int x, int y)

Вывод байт из массива символов byteArray[], начиная с позиции offset и длиной  length байт с координатами x и y начала базовой линии.

public abstract void setFont(Font font)

Установка нового шрифта при выводе  текста в методе paint().

Для определения длины строки или массивов (в пикселях), выводимых в окне апплета или графического приложения, можно использовать методы класса FontMetrics, приведенные в табл. 3.9.

Таблица 3.9. Методы класса FontMetrics для определения длины строки или массивов (в пикселях)

Метод

Описание

public int stringWidth(String str)

Определение ширины строки  str.

public int charsWidth(char[] data, int off, int len)

Определение ширины фрагмента массива  charArray[], начиная с позиции off и длиной  len символов.

public int bytesWidth(byte[] data, int off, int len)

Определение ширины фрагмента массива  byte[], начиная с позиции off и длиной  len символов.

3.1.6. Запуск апплета в Web-странице

Апплет запускается в Web-странице в контейнере <applet> ... </applet>. Атрибуты элемента applet приведены в табл. 3.10.

Таблица 3.10. Атрибуты элемента applet

Атрибут

Значение

Является ли обязательным

code

Имя файла скомпилированного апплета (это должен быть файл с расширением .class)

Да

width

Ширина в пикселях того пространства, которое апплет будет занимать на Web-странице.

Да

height

Высота в пикселях того пространства, которое апплет будет занимать на Web-странице.

Да

codebase

Путь к каталогу, в котором хранятся байт-коды (файлы с расширением .class) апплета. По умолчанию считается, что все байт-коды находятся в текущем каталоге.

Нет

alt

Позволяет указывать альтернативный, текст, который будет выведен на месте апплета в том случае, когда Web-браузер распознает элемент applet, но не поддерживает язык Java.

Нет

name

Позволяет задать имя для апплета. После этого другие апплеты на странице могут обращаться к этому апплету по имени и обмениваться с ним данными.

Нет

id

Задает идентификатор элемента applet.

Нет

align

Позволяет выбрать режим выравнивания апплета на странице. Возможные значения параметра – те же, что и для атрибута align в дескрипторе img: top, texttop, middle, absmiddle, baseline, bottom, absbottom, left, right.

Нет

vspace

Позволяет задать величину в пикселях верхнего и нижнего полей вокруг апплета.

Нет

hspace

Позволяет задать величину в пикселях правого и левого полей вокруг апплета.

Нет

MAYSCRIPT

Разрешает использовать средства расширения Java (Java Plug-in) в сценарии JavaScript Web-страницы (см. 3.1.7.2). Атрибут задается по имени, без значения. По умолчанию Java Plug-in в сценарии использовать нельзя.

Нет

В контейнере <APPLET>…</APPLET> можно также поместить текст, который будет выведен на Web-странице, если браузер пользователя не поддерживает работу с апплетами Java.

3.1.7. Взаимодействие апплета Java и сценария JavaScript в Web-странице 

Взаимодействие апплета Java и сценария JavaScript в Web-странице можно организовать тремя способами:

  •  задание параметров при вызове апплета;
  •  доступ из апплета Java к элементам сценария JavaScript;
  •  доступ из сценария JavaScript к полям и методам апплета Java.

3.1.7.1. Задание параметров при вызове апплета

Средой выполнения апплета Java является Web-браузер, поэтому параметры передаются апплету в вызывающей ее Web-странице с помощью элемента param. Этот элемент задается для каждого параметра апплета внутри элемента applet и содержит два обязательных атрибута: name – указывает имя параметра и value – задает значение параметра.

Чтобы сделать доступным значение параметра, заданного в атрибуте value,  в апплете используется метод

public String getParameter(String имя-параметра),

где имя-параметра – значение атрибута name. Метод возвращает строку, содержащую значение параметра, заданное в атрибуте value, например, если в элементе applet задано:

<param name="Version" value="1.1">,

то в результате выполнения (обычно в методе init()) предложения:

String ver = getParameter("Version");

строка ver получит значение "1.1".

Если в элементе applet нет элемента param с именем, заданным в качестве параметра, то метод getParameter() возвращает строку со значением null. В этом случае, в зависимости от ситуации  можно либо вывести сообщения об отсутствии требуемого параметра, либо присвоить ему некоторое значение, предполагаемое по умолчанию. Кроме этого, следует иметь в виду, что если параметр должен иметь тип, отличный от строкового (например, int), то следует выполнить соответствующее преобразование типа, например, с помощью метода parseInt() класса Integer.

3.1.7.2. Доступ из апплета Java к элементам сценария JavaScript

Для организации доступа из апплета Java к элементам сценария JavaScript используется пакет netscape.javascript расширения Java (Java Plug-in), реализованного в пакете netscape.javascript.

Чтобы средства Java Plug-in были доступны в Web-странице, необходимо в элементе applet задать атрибут MAYSCRIPT (по имени, без значения).

Этот пакет содержит два класса: JSObject и JSException.

Корневым элементом иерархии объектов Web-страницы является объект window. Объекта JSObject Для его получения как объекта JSObject используется  статический метода класса  

public static JSObject getWindow(Applet a)

Остальные методы класса JSObject приведены в табл. 3.11.

Таблица 3.11. Методы класса JSObject

Метод

Выполняемое действие

public Object getMember(String имя-свойства)

Возвращает значение свойства JavaScript с заданным именем.

public Object call(String имя-метода, Object аргументы[])

Вызов метода JavaScript с заданным именем и аргументами.

public String toString()

Преобразование объекта JSObject в строку.

3.1.7.3. Доступ из сценария JavaScript к полям и методам апплета Java

Сценарий JavaScript в Web-странице может получить доступ к переменным и методам апплетов, адресуясь к апплетам как к элементам массива document.applets.

Однако более удобным является указание идентификатора апплета, заданного в атрибуте id дескриптора applet.

Переменные и методы апплета, к которым необходимо обеспечить доступ, необходимо объявить в апплете с модификатором public.

3.2. Интерфейсы

3.2.1. Использование интерфейсов

В Java поддерживается только одиночное наследование (single inheritance) при реализации – это означает, что новый класс может являться непосредственным расширением только одного класса.

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

Интерфейсы – это абстрактные классы, которые являются полностью нереализуемыми. Это означает, что в классе не описано никаких методов. Кроме того, данные интерфейса содержат только переменные с модификаторами static final, т.е. являются константами.

Интерфейсы, как и абстрактные классы, обеспечивают средства определения наборов свойств и методов без их реализации. Для правильно спроектированных интерфейсов можно создавать классы, не заботясь о связи между классами.  

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

Таким образом, между интерфейсами и абстрактными классами существует два важных отличия:

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

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

Интерфейсы имеют следующий формат объявления:

interface идентификатор 

{

 тело-интерфейса

}

Идентификатор определяет имя интерфейса, а тело-интерфейса описывает абстрактные методы и переменные static final, составляющие интерфейс. Так как предполагается, что все методы интерфейса являются абстрактными, нет необходимости указывать для них модификатор abstract.

Интерфейсы так же, как и классы, могут расширяться с помощью ключевого слова extends, однако, в отличие от классов, допускается расширение интерфейсом сразу нескольких других интерфейсов (интерфейсы в списке отделяются друг от друга запятыми). Поэтому интерфейсы, в отличие от классов, могут создавать сложные иерархические структуры не только с несколькими потомками, но и с несколькими родителями.

3.2.2. Объявление и реализация интерфейсов

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

public возвращаемое-значение имя-метода (параметры) throws исключения;

например,

public void windowOpened(WindowEvent e);

По умолчанию все методы в интерфейсах считаются public, вне зависимости от того, присутствует модификатор public или нет (другие модификаторы вообще запрещается использовать). Как и для обычных объявлений методов, ключевое слово throws указывается только в том случае, если данный метод будет бросать какие-либо исключения.

Поскольку для методов используются только их объявления, все объявленные в интерфейсе переменные должны быть глобальными для класса. Независимо от того, какие модификаторы используются при объявлении поля, все поля в интерфейсах могут быть только public, final и static.

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

Чтобы указать, что какой-либо класс наследует, а точнее, реализует интерфейс  или интерфейсы класс объявляется следующим образом:

class идентификатор implements интерфейс

{

 тело-класса

}

Идентификатор определяет имя нового класса, интерфейс – имя реализуемого интерфейса (может быть задано несколько имен интерфейсов, разделенных запятыми), а тело-класса – тело нового класса.

При реализации какого-либо интерфейса необходимо  переопределить все методы, объявленные в нем. Это приходится делать даже в том случае, если некоторые методы в данном классе просто не используется. Если этого не сделать, класс будет считаться компилятором Java абстрактным классом.

Для того, чтобы избежать этой ситуации, неиспользуемые методы обычно описывают в классе с пустым телом метода, например:

public void windowOpened(WindowEvent e) {}

3.3. Технология программирования с использованием апплетов и интерфейсов

3.3.1. Создание апплетов и интерфейсов с использованием командной строки

Текст апплета или интерфейса, как и текст обычного приложения – это файл с расширением .java. Компиляция файла или файлов выполняется с помощью команды

javac имя-файла.java 

Если в апплете используются средства расширения Java (Java Plug-in) – пакет netscape.javascript, находящейся в файле plugin.jar библиотеки JVM (виртуальной машины Java), при компиляции надо указать путь к этому файлу.

Компиляция апплета выполняется в этом случае с помощью следующей команды

javac -classpath путь-к-файлу-plugin.jar имя-файла.java

Если установка Java производилась в папку по умолчанию,  то параметр путь-к-файлу-plugin.jar будет иметь следующий вид (параметр, поскольку он содержит пробел, задается в двойных апострофах):

"C:\Program Files\Java\jre1.6.0_02\lib\plugin.jar"

При создании Web-страницы для вызова апплета используется элемент applet, в котором обязательно надо задать атрибуты code, width и height.

Если в апплете используется несколько классов, в атрибуте code необходимо указать класс, расширяющий класс Applet. Если файлы класса или классов апплета, находятся в каталоге, отличном от текущего, необходимо задать путь к этому каталогу в атрибуте codebase. Если в сценарии используются средства расширения Java (Java Plug-in), то необходимо задать атрибут MAYSCRIPT (по имени, без значения).

Для просмотра апплета можно использовать команду

appletviewer имя-Web-страницы-с-расширением

Эта команда игнорирует все элементы Web-страницы, кроме элемента applet, и выводит в графическом окне Applet Viewer содержимое апплета. Однако эта команда не всегда работает правильно, особенно при использовании  Java Plug-in. Поэтому предпочтительно просто выводить апплет в Web-браузере. Апплеты, как правило, одинаково выводятся во всех Web-браузерах, однако в некоторых случаях, особенно при использовании взаимодействия апплета и сценариев JavaScript, необходимо проводить проверку работы апплета в каждом Web-браузере.

После внесения изменений в классы и интерфейсы апплета и их перекомпиляции необходимо каждый раз закрывать Web-браузер и заново вызывать Web-страницу. При простом обновлении страницы в браузере вызывается старая версия апплета.

3.3.2. Создание апплетов и интерфейсов с использованием пакета NetBeans IDE 6.1

Новый проект для апплета в NetBeans IDE 6.1 создается также как обычный проект (с помощью команды New Project меню File), но в окне New Project в поле Projects выбирается пункт Java Class Library, а не пункт Java Application. После нажатия кнопки Next в окне в New Java Class Library в поле Project Name задается имя проекта, а в поле Project Location – папка, в которой будет размещен проект. После этого нажимается кнопка Finish.

В оглавлении проекта в окне Projects для пакета <default package> каталога Source Packages открывается контекстное меню и в нем выбирается команда New, а в меню этой команды выбирается команда Applet. В открывшемся окне New Applet в поле Class Name задается имя класса (и файла) создаваемого апплета. После этого в окне редактора открывается текст шаблона создаваемого апплета.

В шаблоне перед объявлением класса апплета добавьте предложение

import java.awt.*;

для импорта классов графической библиотеки AWT.

Аналогичным образом выполняется создание и компиляция интерфейса. В каталоге Source Packages открывается контекстное меню и в нем выбирается команда New, а в меню этой команды выбирается команда Java Interface. В открывшемся окне New Java Interface в поле Class Name задается имя класса (и файла) создаваемого интерфейса. После этого в окне редактора открывается текст шаблона создаваемого интерфейса.

После ввода или редактирования текста апплета необходимо выполнить его компиляцию. Для этого в окне  Projects для файла апплета открывается контекстное меню и в нем выбирается команда Compile File.

Для создания связанной с апплетом Web-страницы в оглавлении проекта в окне Projects для пакета <default package> каталога Source Packages открывается контекстное меню и в нем выбирается команда New, а в меню этой команды выбирается команда XHTML File. В открывшемся окне New XHTML File в поле Class Name задается имя файла создаваемой Web-страницы (можно выбрать то же имя, что и для апплета). После этого в окне редактора открывается текст шаблона создаваемой Web-страницы.

Закройте окно созданной Web-страницы в окне редактора и с помощью Проводника откройте папку src проекта. В имени созданной Web-страницы измените расширение с .xhtml на .html. После этого снова откройте Web-страницу (уже с расширением .html) в окне редактора.

Замените значение параметра encoding в первой строке с "UTF-8" на "Windows-1251".

Добавьте в заголовок Web-страницы строки

<meta http-equiv="Content-Type"

content="text/html; charset=windows-1251"/>

<meta http-equiv="Content-Language" content="ru"/>

Ввод и редактирование Web-страницы можно выполнять в окне редактора NetBeans IDE 6.1, однако лучше выполнять эти операции либо в специализированном текстовом редакторе типа Bred3, либо в графическом редакторе Web-страниц.

Открытие Web-страницы в NetBeans IDE 5.5.1 BlueJ Edition выполняется с помощью выполнения команды View контекстного меню для Web-страницы в пакете <default package> каталога Source Packages в окне Projects.

После внесения изменений в файлы проекта и их перекомпиляции необходимо каждый раз перед выполнением команды View закрывать Web-браузер. При простом обновлении страницы в браузере или выводе Web-страницы в новой вкладке вызывается старая версия апплета.

Изменить Web-браузер, в котором будет выводится Web-страница, можно в поле Web-browser вкладки General окна команды Options меню Tools.

4. Порядок выполнения работы

Создайте апплет на языке Java и Web-страницу по одному из приведенных ниже вариантов.

В Web-странице задается форма для ввода исходных данных в апплет и вывод результата. Перед передачей исходных данных в апплет выполняется их проверка.

В апплете, реализующим заданный интерфейс, описываются методы интерфейса, необходимые для получения результирующих данных по заданным исходным данным. Перед присвоением полученных данных переменной, доступной в апплете, при необходимости данные преобразуются из массива в строку и снабжаются соответствующими пояснениями. Вызов созданного метода выполняется из метода start() апплета, т.е. для выполнения созданного в апплете метода в Web-странице запускается  метода start().  

Вариант 3-01

Создайте Web-страницу поиска  абонента в телефонном справочнике с помощью вызова апплета.

Для апплета задан интерфейс TelephoneDirectory, содержащий четыре записи и объявления следующих методов:

  •  поиск телефона по фамилии getTelephoneNumber() (параметр String – фамилия, возвращает String – номер телефона);
  •  поиск характеристик абонента по номеру телефона getTelephoneSubscriber() (параметр String – номер телефона, возвращает String[] – массив характеристик абонента).

Поля записи: фамилия, имя и отчество (ФИО) абонента (например, "Иванов Иван Иванович"); номер телефона (например, 512-5678); наименование улицы (например, "Индустриальная"); номер дома (например, 12) .

Элементы формы Web-страницы: текстовое поле Введите фамилию абонента,  кнопка Поиск абонента и текстовое поле Номер телефона.

Проверка в Web-странице: шаблон фамилии – последовательность букв кириллицы, начинающаяся с большой буквы.

В апплете, который реализует интерфейс TelephoneDirectory, выполняется метод getTelephoneNumber()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Абонент найден  или Абонент не найден), а в поле формы Номер телефона (если абонент найден) выводится номер телефона абонента.      

Вариант 3-02

Создайте Web-страницу поиска  абонента в телефонном справочнике с помощью вызова апплета.

Для апплета задан интерфейс TelephoneDirectory, содержащий четыре записи и объявления следующих методов:

  •  поиск телефона по фамилии getTelephoneNumber() (параметр String – фамилия, возвращает String – номер телефона);
  •  поиск характеристик абонента по номеру телефона getTelephoneSubscriber() (параметр String – номер телефона, возвращает String[] – массив характеристик абонента).

Поля записи: фамилия, имя и отчество абонента (например, "Иванов Иван Иванович"); номер телефона (например, 512-5678); наименование улицы (например, "Индустриальная"); номер дома (например, 12) .

Элементы формы Web-страницы: текстовое поле Введите номер телефона абонента, кнопка Поиск номера и текстовая область Характеристики абонента.

Проверка в Web-странице: шаблон телефона –  \d\d\d-\d\d\d\d,.

В апплете, который реализует интерфейс TelephoneDirectory, выполняется метод getTelephoneSubscriber()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Номер найден  или Номер не найден), а в поле формы Характеристики абонента (если номер найден) выводятся характеристики абонента с поясняющими надписями.

Вариант 3-03

Создайте Web-страницу поиска в гостевой книге Web-сервера с помощью вызова апплета.

Для апплета задан интерфейс UserChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик пользователя по фамилии getUserChars() (параметр String – фамилия, возвращает String[] – массив характеристик пользователя);
  •  поиск фамилий пользователей, у которых количество визитов меньше заданного getMinimumVisits() (параметр int – минимальное количество визитов, возвращает String[] – массив фамилий пользователей).

Поля записи: фамилия пользователя (например, "Иванов"); адрес электронной почты (например, "ivanov@mail.ru"); дата регистрации пользователя (например, 01/12/2006); дата последнего визита пользователя (например, 17/08/2007); количество визитов (например, 15).

Элементы формы Web-страницы: текстовое поле Введите имя пользователя, кнопка Поиск имени и текстовая область Характеристики пользователя.

Проверка в Web-странице: шаблон фамилии – последовательность букв кириллицы, начинающаяся с большой буквы.

В апплете, который реализует интерфейс UserChars, выполняется метод getUserChars()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Пользователь найден  или Пользователь не найден), а в поле формы Характеристики пользователя (если пользователь найден) выводятся характеристики пользователя с поясняющими надписями.

Вариант 3-04

Создайте Web-страницу поиска в гостевой книге Web-сервера с помощью вызова апплета.

Для апплета задан интерфейс UserChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик пользователя по фамилии getUserChars() (параметр String – фамилия, возвращает String[] – массив характеристик пользователя);
  •  поиск фамилий пользователей, у которых количество визитов меньше заданного getMinimumVisits() (параметр int – минимальное количество визитов, возвращает String[] – массив фамилий пользователей).

Поля записи: имя пользователя (например, "Иванов"); адрес электронной почты (например, "ivanov@mail.ru"); дата регистрации пользователя (например, 01/12/2006); дата последнего визита пользователя (например, 17/08/2007); количество визитов (например, 15).

Элементы формы Web-страницы: текстовое поле Введите минимальное число визитов, кнопка Поиск пользователей и текстовая область Фамилии пользователей.

Проверка в Web-странице: шаблон числа визитов – целое число, содержащее одну или две цифры.

В апплете, который реализует интерфейс UserChars, выполняется метод getMinimumVisits()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Пользователи найдены  или Пользователи не найдены), а в поле формы Фамилии пользователей (если найдены пользователи, у которых число визитов меньше минимального) выводятся фамилии пользователей.

Вариант 3-05

Создайте Web-страницу поиска товаров в электронном магазине с помощью вызова апплета.

Для апплета задан интерфейс GoodsChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик товаров по строке в наименовании товара getGoodsCharsByName() (параметр String – строка поиска в наименовании товара, возвращает String[] – массив характеристик товара);
  •  поиск наименований товаров, у которых количество на складе меньше заданного getGoodsMinimum() (параметр int – минимальное количество визитов, возвращает String[] – массив наименований товаров).

Поля записи: артикул товара (например, DEV01); наименование товара (например, "Звуковая карта"); цена товара (например, 543); количество товаров на складе (например, 18).

Элементы формы Web-страницы: текстовое поле Введите строку в наименовании товара, кнопка Поиск товаров и текстовая область Характеристики товаров.

Проверка в Web-странице: шаблон наименования товара – одна или более последовательностей  строчных букв кириллицы, отделенных друг от друга пробелом.

В апплете, который реализует интерфейс GoodsChars, выполняется метод getGoodsCharsByName()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Товар найден  или Товар не найден), а в поле формы Характеристики товаров (если товар найден) выводятся характеристики товара с поясняющими надписями.

Вариант 3-06

Создайте Web-страницу поиска товаров в электронном магазине с помощью вызова апплета.

Для апплета задан интерфейс GoodsChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик товаров по строке в наименовании товара getGoodsCharsByName() (параметр String – строка поиска в наименовании товара, возвращает String[] – массив характеристик товара);
  •  поиск наименований товаров, у которых количество на складе меньше заданного getGoodsMinimum() (параметр int – минимальное количество визитов, возвращает String[] – массив наименований товаров).

Поля записи: артикул товара (например, DEV01); наименование товара (например, "Звуковая карта"); цена товара (например, 543); количество товаров на складе (например, 18).

Элементы формы Web-страницы: текстовое поле Минимальное количество товара на складе, кнопка Поиск товаров и текстовая область Наименования товаров.

Проверка в Web-странице: шаблон количества товаров – целое число, содержащее одну или две цифры.

В апплете, который реализует интерфейс GoodsChars, выполняется метод getGoodsMinimum()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Товары найдены  или Товары не найдены), а в поле формы Наименования товаров (если найдены товары, для которых количество на складе меньше минимального) выводятся наименования товаров.

Вариант 3-07

Создайте Web-страницу поиска писем в почтовом ящике с помощью вызова апплета.

Для апплета задан интерфейс EMailChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик писем по имени отправителя getEMailCharsByName() (параметр String – имя отправителя, возвращает String[] – массив характеристик письма);
  •  поиск адресов получателей писем, у которых тема письма содержит заданную строку поиска getEMailAddresseeByTheme() (параметр String – строка поиска в теме письма, возвращает String[] – массив адресов получателей писем).

Поля записи: адрес электронной почты отправителя (например, "ivanov@mail.ru"); адрес электронной почты получателя (например, "petrov@mail.ru"); дата отправления (например, 17/08/2007); тема письма (например, "Поздравление с днем рождения").  

Элементы формы Web-страницы: текстовое поле Введите адрес отправителя,  кнопка Поиск письма и текстовая область Характеристики письма.

Проверка в Web-странице: шаблон адреса – 1 и более латинских букв, символ "@", от одной до трех последовательностей латинских букв, отделенных друг от друга точкой

В апплете, который реализует интерфейс EMailChars, выполняется метод getEMailCharsByName()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Отправитель найден или Отправитель не найден), а в поле формы Характеристики письма (если отправитель найден) выводятся характеристики писем с поясняющими надписями.

Вариант 3-08

Создайте Web-страницу поиска писем в почтовом ящике с помощью вызова апплета.

Для апплета задан интерфейс EMailChars, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик писем по имени отправителя getEMailCharsByName() (параметр String – имя отправителя, возвращает String[] – массив характеристик письма);
  •  поиск адресов получателей писем, у которых тема письма содержит заданную строку поиска getEMailAddresseeByTheme() (параметр String – строка поиска в теме письма, возвращает String[] – массив адресов получателей писем).

Поля записи: адрес электронной почты отправителя (например, "ivanov@mail.ru"); адрес электронной почты получателя (например, "petrov@mail.ru"); дата отправления (например, 17/08/2007); тема письма (например, "Поздравление с днем рождения").  

Элементы формы Web-страницы: текстовое поле Введите строку поиска в теме письма,  кнопка Поиск адреса и текстовая область Адреса получателей.

Проверка в Web-странице: не выполняется (произвольная строка поиска).

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

Вариант 3-09

Создайте Web-страницу поиска книг в электронном книжном магазине с помощью вызова апплета.

Для апплета задан интерфейс Books, содержащий четыре записи и объявления следующих методов:

  •  поиск книг заданного автора getBooksByAuthor() (параметр String – фамилия и инициалы автора, возвращает String[] – массив наименований книг заданного автора);
  •  поиск книг по строке в наименовании книги getBooksByTitleSearch() (параметр String – строка поиска в наименовании книги, возвращает String[][] – массив книг, содержащих строку поиска в наименовании книги, причем каждый элемент этого массива содержит массив всех полей записи книги).

Поля записи: фамилия и инициалы автора (например, "Иванов И.И.") – это поле может содержать несколько фамилий авторов, отделенных друг от друга запятой; наименование книги (например, "Основы информатики"); наименование издательства (например, "Наука"); год издания (например, 2007).    

Элементы формы Web-страницы: текстовое поле Введите имя автора, кнопка Поиск книг и текстовая область Список книг.

Проверка в Web-странице: шаблон для автора – последовательность букв кириллицы, начинающаяся с заглавной буквы, пробел, заглавная буква, точка, заглавная буква, точка.  

В апплете, который реализует интерфейс Books, выполняется метод getBooksByAuthor()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Автор найден или Автор не найден), а в поле формы Список книг (если автор найден) выводятся наименования книг этого автора.

Вариант 3-10

Создайте Web-страницу поиска книг в электронном книжном магазине с помощью вызова апплета.

Для апплета задан интерфейс Books, содержащий четыре записи и объявления следующих методов:

  •  поиск книг заданного автора getBooksByAuthor() (параметр String – фамилия и инициалы автора, возвращает String[] – массив наименований книг заданного автора);
  •  поиск книг по строке в наименовании книги getBooksByTitleSearch() (параметр String – строка поиска в наименовании книги, возвращает String[][] – массив книг, содержащих строку поиска в наименовании книги, причем каждый элемент этого массива содержит массив всех полей записи книги).

Поля записи: фамилия и инициалы автора (например, "Иванов И.И.") – это поле может содержать несколько фамилий авторов, отделенных друг от друга запятой; наименование книги (например, "Основы информатики"); наименование издательства (например, "Наука"); год издания (например, 2007).    

Элементы формы Web-страницы: текстовое поле Введите строку поиска, кнопка Поиск книг и текстовая область Список книг.

Проверка в Web-странице: не выполняется (произвольная строка поиска).  

В апплете, который реализует интерфейс Books, выполняется метод getBooksByTitleSearch()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Строка поиска найдена или Строка поиска не найдена), а в поле формы Список книг (если строка поиска найдена) выводятся все поля записи (с соответствующими надписями) всех книг, наименование которых  содержит строку поиска.

Вариант 3-11

Создайте Web-страницу поиска в списке сотрудников учреждения с помощью вызова апплета.

Для апплета задан интерфейс Staff, содержащий четыре записи и объявления следующих методов:

  •  поиск сотрудника по фамилии getEmployeeByName() (параметр String – фамилия сотрудника, возвращает String[] – массив сведений о сотруднике);
  •  поиск сотрудников заданной должности getEmployeesByPost() (параметр int – индекс должности, возвращает String[] – массив ФИО сотрудников, занимающих заданную должность).

Поля записи: фамилия, имя и отчество сотрудника (например, "Иванов Иван Иванович"); наименование отдела (например, "Бухгалтерия"); должность (одна из строк "инженер", "ст. инженер", "зав. отделом", "лаборант" и "ассистент"); дата рождения (например, 17/08/1991).

Элементы формы Web-страницы: текстовое поле Введите фамилию сотрудника,  кнопка Ввод фамилии и текстовая область Сведения о сотруднике.

Проверка в Web-странице: шаблон для фамилии – последовательность букв кириллицы, начинающаяся с заглавной буквы.

В апплете, который реализует интерфейс Staff, выполняется метод getEmployeeByName()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Фамилия найдена или Фамилия не найдена), а в поле формы Сведения о сотруднике (если сотрудник найден) выводятся все поля записи сотрудника с соответствующими надписями.

Вариант 3-12

Создайте Web-страницу поиска в списке сотрудников учреждения с помощью вызова апплета.

Для апплета задан интерфейс Staff, содержащий четыре записи и объявления следующих методов:

  •  поиск сотрудника по фамилии getEmployeeByName() (параметр String – фамилия сотрудника, возвращает String[] – массив сведений о сотруднике);
  •  поиск сотрудников заданной должности getEmployeesByPost() (параметр int – индекс должности, возвращает String[] – массив ФИО сотрудников, занимающих заданную должность).

Поля записи: фамилия, имя и отчество (ФИО) сотрудника (например, "Иванов Иван Иванович"); наименование отдела (например, "Бухгалтерия"); должность (одна из строк "инженер", "ст. инженер", "зав. отделом", "лаборант" и "ассистент"); дата рождения (например, 17/08/1991).

Элементы формы Web-страницы: раскрывающееся меню Должность сотрудника со списком должностей,  кнопка Поиск по должности и текстовая область Список сотрудников.

Проверка в Web-странице: не выполняется (выбор из списка).

В апплете, который реализует интерфейс Staff, выполняется метод getEmployeesByPost()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Сотрудники найдены или Сотрудники не найдены), а в поле формы Список сотрудников (если сотрудник, занимающий заданную должность, найден) выводятся ФИО сотрудников.  

Вариант 3-13

Создайте Web-страницу поиска в списке программных продуктов с помощью вызова апплета.

Для апплета задан интерфейс ProgramProducts, содержащий четыре записи и объявления следующих методов:

  •  поиск сотрудника по фамилии getProductBySearchString() (параметр String – строка поиска в наименовании продукта, возвращает String[] – массив наименований программного продукта);
  •  поиск программных продуктов заданного вида getProductsByType() (параметр int – индекс продукта, возвращает String[]– массив записей продуктов заданного вида).

Поля записи: наименование программного продукта (например, "Microsoft Word"); вид программного продукта (одна из строк "Текстовый редактор", "Графический редактор", "Табличный процессор" и "Система управления базами данных"); фирма-производитель (например, "Microsoft"); версия (например, 11.0).

Элементы формы Web-страницы: текстовое поле Введите строку в наименовании продукта,  кнопка Поиск продукта и текстовая область Список продуктов.

Проверка в Web-странице: не выполняется (произвольная строка поиска).  

В апплете, который реализует интерфейс ProgramProducts, выполняется метод getProductBySearchString()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Продукты найдены или Продукты не найдены), а в поле формы Список продуктов (если найден хотя бы один продукт) выводится список наименований продуктов.

Вариант 3-14

Создайте Web-страницу поиска в списке программных продуктов с помощью вызова апплета.

Для апплета задан интерфейс ProgramProducts, содержащий четыре записи и объявления следующих методов:

  •  поиск сотрудника по фамилии getProductBySearchString() (параметр String – строка поиска в наименовании продукта, возвращает String[] – массив наименований программного продукта);
  •  поиск программных продуктов заданного вида getProductsByType() (параметр int – индекс продукта, возвращает String[]– массив записей продуктов заданного вида).

Поля записи: наименование программного продукта (например, "Microsoft Word"); вид программного продукта (одна из строк "Текстовый редактор", "Графический редактор", "Табличный процессор" и "Система управления базами данных"); фирма-производитель (например, "Microsoft"); версия (например, 11.0).

Элементы формы Web-страницы: раскрывающееся меню Виды продуктов  со списком видов продуктов, кнопка Поиск продуктов и текстовая область Список продуктов.  

В апплете, который реализует интерфейс ProgramProducts, выполняется метод getProductsByType()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Продукты найдены или Продукты не найдены), а в поле формы Список продуктов (если найден хотя бы один продукт заданного типа) выводится список характеристик найденных продуктов с соответствующими надписями.

Вариант 3-15

Создайте Web-страницу поиска в списке вакансий рабочих мест с помощью вызова апплета.

Для апплета задан интерфейс JobVacancies, содержащий четыре записи и объявления следующих методов:

  •  поиск вакансий с зарплатой больше заданной getJobsByMinimumSalary() (параметр int – минимальный уровень зарплаты, возвращает String[] – массив записей вакансий, в которых величина зарплаты больше заданной);
  •  поиск программных продуктов заданного вида getJobsByPost() (параметр int – индекс должности, возвращает String[]– массив записей вакансий для заданной должности).

Поля записи: должность (одна из строк "программист", "системный администратор", "менеджер" и "секретарь"); предприятие (например, "Фирма Прогресс"); зарплата (например, 2100); стаж работы по специальности (например, 3).

Элементы формы Web-страницы: раскрывающееся меню Введите должность со списком должностей, кнопка Поиск вакансии и текстовая область Список вакансий.

Проверка в Web-странице: не выполняется (выбор из списка).

В апплете, который реализует интерфейс JobVacancies, выполняется метод getJobsByPost()для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Вакансии найдены или Вакансии не найдены), а в поле формы Список вакансий (если найдена хотя бы одна вакансия) выводится список характеристик найденных вакансий с соответствующими надписями.

Вариант 3-16

Создайте Web-страницу поиска в списке вакансий рабочих мест с помощью вызова апплета.

Для апплета задан интерфейс JobVacancies, содержащий четыре записи и объявления следующих методов:

  •  поиск вакансий с зарплатой больше заданной getJobsByMinimumSalary() (параметр int – минимальный уровень зарплаты, возвращает String[] – массив записей вакансий, в которых величина зарплаты больше заданной);
  •  поиск программных продуктов заданного вида getJobsByPost() (параметр int – индекс должности, возвращает String[]– массив записей вакансий для заданной должности).

Поля записи: должность (одна из строк "программист", "системный администратор", "менеджер" и "секретарь"); предприятие (например, "Фирма Прогресс"); зарплата (например, 2100); стаж работы по специальности (например, 3).

Элементы формы Web-страницы: текстовое поле Введите минимальную зарплату, кнопка Поиск вакансии и текстовая область Список вакансий.

Проверка в Web-странице: шаблон зарплаты – целое число  (от трех до четырех цифр).

В апплете, который реализует интерфейс JobVacancies, выполняется метод getJobsByMinimumSalary() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Вакансии найдены или Вакансии не найдены), а в поле формы Список вакансий (если найдена хотя бы одна вакансия) выводится список характеристик найденных вакансий с зарплатой, больше заданной, с соответствующими надписями.

Вариант 3-17

Создайте Web-страницу поиска в списке поручений на выполнение работ с помощью вызова апплета.

Для апплета задан интерфейс PerformOrders, содержащий четыре записи и объявления следующих методов:

  •  поиск поручений, в выполнении которых участвует заданный исполнитель getOrdersByPerformer() (параметр String – фамилия и инициалы исполнителя, возвращает String[] – массив записей поручений, в выполнении которых участвует заданный исполнитель);
  •  поиск поручений, для которых  дата выполнения поручения меньше заданной getOrdersByDate() (параметр String – дата выполнения поручения, возвращает String[]– массив записей поручений, для которых  дата выполнения поручения меньше заданной).

Поля записи: наименование работы (например, "Подготовка отчета" или "Заключение договора"); фамилия и инициалы исполнителя (например, "Иванов И.И.") –это поле может содержать несколько имен исполнителей, отделенных друг от друга запятой; сотрудник, для которого выполняется поручение (например, "Петров И.И."); срок исполнения (месяц/число/год, например, 08/17/2007).

Элементы формы Web-страницы: текстовое поле Введите исполнителя, кнопка Поиск поручений и текстовая область Список поручений.

Проверка в Web-странице: шаблон для исполнителя – последовательность букв кириллицы, начинающаяся с заглавной буквы, пробел, заглавная буква, точка, заглавная буква, точка.  

В апплете, который реализует интерфейс PerformOrders, выполняется метод getOrdersByPerformer() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Исполнитель найден или Исполнитель не найден), а в поле формы Список поручений (если найдено хотя бы одно поручение) выводится список характеристик найденных поручений с соответствующими надписями.

Вариант 3-18

Создайте Web-страницу поиска в списке поручений на выполнение работ с помощью вызова апплета.

Для апплета задан интерфейс PerformOrders, содержащий четыре записи и объявления следующих методов:

  •  поиск поручений, в выполнении которых участвует заданный исполнитель getOrdersByPerformer() (параметр String – фамилия и инициалы исполнителя, возвращает String[] – массив записей поручений, в выполнении которых участвует заданный исполнитель);
  •  поиск поручений, для которых  дата выполнения поручения меньше заданной getOrdersByDate() (параметр String – дата выполнения поручения, возвращает String[]– массив записей поручений, для которых  дата выполнения поручения меньше заданной).

Поля записи: наименование работы (например, "Подготовка отчета" или "Заключение договора"); фамилия и инициалы исполнителя (например, "Иванов И.И.") –это поле может содержать несколько имен исполнителей, отделенных друг от друга запятой; сотрудник, для которого выполняется поручение (например, "Петров И.И."); срок исполнения (месяц/число/год, например, 08/17/2007).

Элементы формы Web-страницы: текстовое поле Введите максимальную дату, кнопка Поиск поручений и текстовая область Список поручений.

Проверка в Web-странице: шаблон для срока исполнения – две цифры (число от 1 до 12), символ "/", две цифры (число от 1 до 31), символ "/", четыре цифры.  

В апплете, который реализует интерфейс PerformOrders, выполняется метод getOrdersByDate() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Поручения найдены или Поручения не найдены), а в поле формы Список поручений (если найдено хотя бы одно поручение) выводится список характеристик найденных поручений с соответствующими надписями.

Вариант 3-19

Создайте Web-страницу поиска в расписании авиарейсов с помощью вызова апплета.

Для апплета задан интерфейс AircraftTimeTable, содержащий четыре записи и объявления следующих методов:

  •  поиск рейсов в аэропорт назначения getFlightsByArrivalPort() (параметр String – в аэропорт назначения, возвращает String[] – массив записей рейсов в аэропорт назначения);
  •  поиск рейсов с временем вылета до заданного времени getFlightsByTime() (параметр String – время вылета, возвращает String[]– массив записей рейсов, для которых  время вылета меньше заданного).

Поля записи: тип самолета (например, "Boeing-737" или "Ту-154"); аэропорт назначения (например, "Днепропетровск" или "Набережные Челны"); время вылета (месяц/число/год:час:минута, например, 08/17/2007:17:15); время прилета (месяц/число/год:час:минута, например, 08/18/2007:02:35).

Элементы формы Web-страницы: текстовое поле Аэропорт назначения, кнопка Вывести рейсы и текстовая область Список рейсов.

Проверка в Web-странице: шаблон аэропорта назначения – одно или два слова, разделенные пробелом, содержащие буквы кириллицы и начинающиеся с заглавной буквы.

В апплете, который реализует интерфейс AircraftTimeTable, выполняется метод getFlightsByArrivalPort() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Рейсы найдены или Рейсы не найдены), а в поле формы Список рейсов (если найден хотя бы один рейс) выводится список характеристик найденных рейсов с соответствующими надписями.

 

Вариант 3-20

Создайте Web-страницу поиска в расписании авиарейсов с помощью вызова апплета.

Для апплета задан интерфейс AircraftTimeTable, содержащий четыре записи и объявления следующих методов:

  •  поиск рейсов в аэропорт назначения getFlightsByArrivalPort() (параметр String – в аэропорт назначения, возвращает String[] – массив записей рейсов в аэропорт назначения);
  •  поиск рейсов с временем вылета до заданного времени getFlightsByTime() (параметр String – время вылета, возвращает String[]– массив записей рейсов, для которых  время вылета меньше заданного).

Поля записи: тип самолета (например, "Boeing-737" или "Ту-154"); аэропорт назначения (например, "Днепропетровск" или "Набережные Челны"); время вылета (месяц/число/год:час:минута, например, 08/17/2007:17:15); время прилета (месяц/число/год:час:минута, например, 08/18/2007:02:35).

Элементы формы Web-страницы: текстовое поле Максимальное время вылета, кнопка Вывести рейсы и текстовая область Список рейсов.

Проверка в Web-странице: шаблон времени вылета – две цифры (число от 1 до 12), символ "/", две цифры (число от 1 до 31), символ "/", четыре цифры, символ ":", две цифры (число от 1 до 24), символ ":", две цифры (число от 1 до 60).

В апплете, который реализует интерфейс AircraftTimeTable, выполняется метод getFlightsByTime() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Рейсы найдены или Рейсы не найдены), а в поле формы Список рейсов (если найден хотя бы один рейс) выводится список характеристик найденных рейсов с соответствующими надписями.

Вариант 3-21

Создайте Web-страницу поиска в расписании первенств в командном чемпионате по различным видам спорта с помощью вызова апплета.

Для апплета задан интерфейс SportCompetitions, содержащий четыре записи и объявления следующих методов:

  •  поиск соревнований по заданному виду спорта getCompetitionsByKind() (параметр int – индекс вида спорта, возвращает String[] – массив записей соревнований по заданному виду спорта);
  •  поиск соревнований команды по строке поиска в имени команды getTeamsBySearchString() (параметр String – строка поиска в имени команды, возвращает String[]– массив записей соревнований найденной команды).

Поля записи: вид спорта (одно из наименований видов: "Гимнастика" или "Прыжки в высоту", "Прыжки в длину" и "Метание ядра"); список команд (например, "Динамо" или "Сборная Украины") – поле может содержать одно или несколько наименований команд, разделенных запятой; место проведения (например, "Стадион Авангард" или "Дворец Спорта"); дата и время начала соревнования (месяц/число/год:час:минута, например, 08/18/2007:13:00).

Элементы формы Web-страницы: раскрывающееся меню Введите вид спорта кнопка Вывести соревнования и текстовая область Список соревнований.).

Проверка в Web-странице: не выполняется (выбор из списка).

В апплете, который реализует интерфейс SportCompetitions, выполняется метод getCompetitionsByKind() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Соревнования найдены или Соревнования не найдены), а в поле формы Список соревнований (если найдено хотя бы одно соревнование) выводится список характеристик найденных соревнований с соответствующими надписями.

Вариант 3-22

Создайте Web-страницу поиска в расписании первенств в командном чемпионате по различным видам спорта с помощью вызова апплета.

Для апплета задан интерфейс SportCompetitions, содержащий четыре записи и объявления следующих методов:

  •  поиск соревнований по заданному виду спорта getCompetitionsByKind() (параметр int – индекс вида спорта, возвращает String[] – массив записей соревнований по заданному виду спорта);
  •  поиск соревнований команды по строке поиска в имени команды getTeamsBySearchString() (параметр String – строка поиска в имени команды, возвращает String[]– массив записей соревнований найденной команды).

Поля записи: вид спорта (одно из наименований видов: "Гимнастика" или "Прыжки в высоту", "Прыжки в длину" и "Метание ядра"); список команд (например, "Динамо" или "Сборная Украины") – поле может содержать одно или несколько наименований команд, разделенных запятой; место проведения (например, "Стадион Авангард" или "Дворец Спорта"); дата и время начала соревнования (месяц/число/год:час:минута, например, 08/18/2007:13:00).

Элементы формы Web-страницы: раскрывающееся меню Введите строку поиска в имени команды, кнопка Вывести соревнования и текстовая область Список соревнований.

Проверка в Web-странице: не выполняется (произвольная строка поиска).

В апплете, который реализует интерфейс SportCompetitions, выполняется метод getTeamsBySearchString() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Соревнования найдены или Соревнования не найдены), а в поле формы Список соревнований (если найдено хотя бы одно соревнование) выводится список характеристик найденных соревнований с соответствующими надписями.

Вариант 3-23

Создайте Web-страницу поиска в железнодорожном расписании с помощью вызова апплета.

Для апплета задан интерфейс RailwayTimetable, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getTrainsBySearchString() (параметр String – строка в наименовании поезда, возвращает String[] – массив записей характеристик найденных поездов);
  •  поиск соревнований команды по строке поиска в имени команды getTrainsByStation() (параметр String – наименование промежуточной станции, возвращает String[]–массив записей характеристик найденных поездов).

Поля записи: номер поезда (например, 123), наименование поезда (например, "Киев-Днепропетровск" или "Киев-Москва"); время отправления (месяц/число/год:час:минута, например, 08/18/2007:13:00); пункты остановки, включая конечную станцию (например, "Житомир" или "Конотоп") – поле может содержать один или несколько пунктов остановки, разделенных запятыми; периодичность движения (значение – "ежедневно" или список дней недели, разделенный запятыми, например, "среда, пятница, воскресенье").

Элементы формы Web-страницы: текстовое поле Введите строку поиска в наименовании поезда, кнопка Поиск поездов и текстовая область Список поездов.

Проверка в Web-странице: не выполняется (произвольная строка поиска).

В апплете, который реализует интерфейс RailwayTimetable, выполняется метод getTrainsBySearchString() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Поезда найдены или Поезда не найдены), а в поле формы Список поездов (если найден хотя бы один поезд) выводится список характеристик найденных поездов с соответствующими надписями.

Вариант 3-24

Создайте Web-страницу поиска в железнодорожном расписании с помощью вызова апплета.

Для апплета задан интерфейс RailwayTimetable, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getTrainsBySearchString() (параметр String – строка в наименовании поезда, возвращает String[] – массив записей характеристик найденных поездов);
  •  поиск соревнований команды по строке поиска в имени команды getTrainsByStation() (параметр String – наименование промежуточной станции, возвращает String[]–массив записей характеристик найденных поездов).

Поля записи: номер поезда (например, 123), наименование поезда (например, "Киев-Днепропетровск" или "Киев-Москва"); время отправления (месяц/число/год:час:минута, например, 08/18/2007:13:00); пункты остановки, включая конечную станцию (например, "Житомир" или "Конотоп") – поле может содержать один или несколько пунктов остановки, разделенных запятыми; периодичность движения (значение – "ежедневно" или список дней недели, разделенный запятыми, например, "среда, пятница, воскресенье").

Элементы формы Web-страницы: текстовое поле Введите промежуточную станцию, кнопка Поиск поездов и текстовая область Список поездов.

Проверка в Web-странице: шаблон для станции – слово, состоящее из строчных букв кириллицы и начинающееся с заглавной буквы.

В апплете, который реализует интерфейс RailwayTimetable, выполняется метод getTrainsByStation() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Поезда найдены или Поезда не найдены), а в поле формы Список поездов (если найден хотя бы один поезд) выводится список характеристик найденных поездов с соответствующими надписями.

Вариант 3-25

Создайте Web-страницу поиска в расписании занятий с помощью вызова апплета.

Для апплета задан интерфейс StudiesTimetable, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getDisciplineTimetable() (параметр String – наименование дисциплины, возвращает String[] – массив записей характеристик найденных занятий);
  •  поиск соревнований команды по строке поиска в имени команды getStudiesByKind() (параметр int – индекс выбранной дисциплины, возвращает String[]– массив записей характеристик найденных занятий).

Поля записи: наименование дисциплины (например, "Информатика" или "Высшая математика"); вид занятия (одно из следующих значений: "Лекция", "Семинарское занятие", "Практическое занятие" и "Лабораторная работа"); день недели (одно из следующих значений: "понедельник", "вторник",... "пятница"); время начала занятия (например, "8.30", "10.25", "12.20", "14.15", "16.10"); аудитория (например, 207-30); фамилия и инициалы преподавателя (например, "Иванов И.И.").

Элементы формы Web-страницы: текстовое поле Введите наименование дисциплины, кнопка Поиск занятий и текстовая область Список занятий.

Проверка в Web-странице: шаблон для наименования дисциплины – одно и более слов, состоящих из одной и более строчных букв кириллицы и отделенных друг от друга пробелами, первое слово начинаются с заглавной буквы.

В апплете, который реализует интерфейс StudiesTimetable, выполняется метод getDisciplineTimetable() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Занятия найдены или Занятия не найдены), а в поле формы Список занятий (если найдено хотя бы одно занятие) выводится список характеристик найденных занятий с соответствующими надписями.

Вариант 3-26

Создайте Web-страницу поиска в расписании занятий с помощью вызова апплета.

Для апплета задан интерфейс StudiesTimetable, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getDisciplineTimetable() (параметр String – наименование дисциплины, возвращает String[] – массив записей характеристик найденных занятий);
  •  поиск соревнований команды по строке поиска в имени команды getStudiesByKind() (параметр int – индекс выбранной дисциплины, возвращает String[]– массив записей характеристик найденных занятий).

Поля записи: наименование дисциплины (например, "Информатика" или "Высшая математика"); вид занятия (одно из следующих значений: "Лекция", "Семинарское занятие", "Практическое занятие" и "Лабораторная работа"); день недели (одно из следующих значений: "понедельник", "вторник",... "пятница"); время начала занятия (например, "8.30", "10.25", "12.20", "14.15", "16.10"); аудитория (например, 207-30); фамилия и инициалы преподавателя (например, "Иванов И.И.").

Элементы формы Web-страницы: раскрывающееся меню Введите вид занятия, кнопка Поиск занятий и текстовая область Список занятий.

Проверка в Web-странице: не производится (выбор из списка).

В апплете, который реализует интерфейс StudiesTimetable, выполняется метод getStudiesByKind() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Занятия найдены или Занятия не найдены), а в поле формы Список занятий (если найдено хотя бы одно занятие) выводится список характеристик найденных занятий с соответствующими надписями.

Вариант 3-27

Создайте Web-страницу поиска в списке статей с помощью вызова апплета.

Для апплета задан интерфейс ScientificArticles, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getArticlesByAuthor() (параметр String – имя и инициалы автора, возвращает String[] – массив наименований статей заданного автора);
  •  поиск статей по ключевым словам getArticlesByKeyWords() (параметр String – ключевое слово, возвращает String[]– массив записей характеристик найденных статей).

Поля записи: автор или авторы  (например, "Иванов И.И." или "Петров П.П.") – поле может содержать несколько авторов, отделенных друг от друга запятыми; наименование статьи (например, "Оптимизация выбора телекоммуникационного оборудования"); отрасль (например, "Телекоммуникации" или "Локальные сети"); ключевые слова (одно и более слов, состоящих из одной и более заглавных латинских букв или букв кириллицы и отделенных друг от друга пробелами, например, "ОПТИМИЗАЦИЯ ОБОРУДОВАНИЯ" или "INTERNET") – поле может содержать несколько ключевых слов, отделенных друг от друга запятой.

Элементы формы Web-страницы: текстовое поле Введите автора, кнопка Поиск статей и текстовая область Список статей.

Проверка в Web-странице: шаблон для автора – последовательность букв кириллицы из двух и более букв, начинающаяся с заглавной буквы, пробел, заглавная буква, точка, заглавная буква, точка.

В апплете, который реализует интерфейс ScientificArticles, выполняется метод getArticlesByAuthor() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Статьи найдены или Статьи не найдены), а в поле формы Список статей (если найдена хотя бы одна статья) выводится список найденных статей.

Вариант 3-28

Создайте Web-страницу поиска в списке статей с помощью вызова апплета.

Для апплета задан интерфейс ScientificArticles, содержащий четыре записи и объявления следующих методов:

  •  поиск характеристик поезда по заданной строке в наименовании поезда getArticlesByAuthor() (параметр String – имя и инициалы автора, возвращает String[] – массив наименований статей заданного автора);
  •  поиск статей по ключевым словам getArticlesByKeyWords() (параметр String – ключевое слово, возвращает String[]– массив записей характеристик найденных статей).

Поля записи: автор или авторы  (например, "Иванов И.И." или "Петров П.П.") – поле может содержать несколько авторов, отделенных друг от друга запятыми; наименование статьи (например, "Оптимизация выбора телекоммуникационного оборудования"); отрасль (например, "Телекоммуникации" или "Локальные сети"); ключевые слова (одно и более слов, состоящих из одной и более заглавных латинских букв или букв кириллицы и отделенных друг от друга пробелами, например, "ОПТИМИЗАЦИЯ ОБОРУДОВАНИЯ" или "INTERNET") – поле может содержать несколько ключевых слов, отделенных друг от друга запятой.

Элементы формы Web-страницы: текстовое поле Введите ключевое слово, кнопка Поиск статей и текстовая область Список статей.

Проверка в Web-странице: шаблон для ключевого слова – одно и более слов, состоящих из одной и более заглавных латинских букв или букв кириллицы и отделенных друг от друга пробелами.

В апплете, который реализует интерфейс ScientificArticles, выполняется метод getArticlesByKeyWords() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Статьи найдены или Статьи не найдены), а в поле формы Список статей (если найдена хотя бы одна статья) выводится список найденных статей.

Вариант 3-29

Создайте Web-страницу поиска в списке платежек банкоматов с помощью вызова апплета.

Для апплета задан интерфейс ATMReports, содержащий четыре записи и объявления следующих методов:

  •  получение общей суммы выдачи для заданного банкомата getTotalSumsByATM() (параметр String – наименование банкомата, возвращает int – общую сумму выдачи для заданного банкомата);
  •  поиск выдаваемых в банкоматах платежек с величиной суммы, большей заданной getMaximumSums() (параметр int – максимальная сумма, возвращает String[]– массив записей для банкоматов,  у которых сумма выдачи больше заданной).

Поля записи: наименование банкомата  (например, "Банкомат-1"); получатель (например, "Иванов И.И."); сумма выдачи (одно из значений: 10, 20, 50, 100, 200, 500, 1000); дата и время получения (месяц/число/год:час:минута, например, 08/18/2007:13:00).

Элементы формы Web-страницы: текстовое поле Введите наименование банкомата, кнопка Вывод платежек и текстовое поле Общая сумма выдач.

Проверка в Web-странице: шаблон для наименования банкомата – последовательность из двух и более букв кириллицы, начинающаяся с заглавной буквы, тире, одна, две или три цифры.

В апплете, который реализует интерфейс ATMReports, выполняется метод getTotalSumsByATM() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Платежки найдены или Платежки не найдены), а в поле формы Общая сумма выдач (если найдена хотя бы одна платежка) выводится общая сумма выдач по платежкам.

Вариант 3-30

Создайте Web-страницу поиска в списке платежек банкоматов с помощью вызова апплета.

Для апплета задан интерфейс ATMReports, содержащий четыре записи и объявления следующих методов:

  •  получение общей суммы выдачи для заданного банкомата getTotalSumsByATM() (параметр String – наименование банкомата, возвращает int – общую сумму выдачи для заданного банкомата);
  •  поиск выдаваемых в банкоматах платежек с величиной суммы, большей заданной getMaximumSums() (параметр int – максимальная сумма, возвращает String[]– массив записей для банкоматов,  у которых сумма выдачи больше заданной).

Поля записи: наименование банкомата  (например, "Банкомат-1"); получатель (например, "Иванов И.И."); сумма выдачи (одно из значений: 10, 20, 50, 100, 200, 500, 1000); дата и время получения (месяц/число/год:час:минута, например, 08/18/2007:13:00).

Элементы формы Web-страницы: текстовое поле Введите максимальную сумму, кнопка Вывод платежек и текстовая область Список платежек.

Проверка в Web-странице: от двух до четырех цифр.

В апплете, который реализует интерфейс ATMReports, выполняется метод getMaximumSums() для соответствующих полей записей. В окне апплета выводятся диагностические сообщения (Платежки найдены или Платежки не найдены), а в поле формы Список платежек (если найдена хотя бы одна платежка) выводится список характеристик платежек с соответствующими надписями.

5. Содержание отчета

В отчете должен быть представлен текст апплета, Web-страницы, а также скриншот с примером вывода Web-браузера, содержащим исходные данные   и результаты выполнения апплета.       

6. Вопросы для самоконтроля

  1.  Опишите схему выполнения апплета Java.
  2.  Каковы основные отличия апплетов от приложений в Java?
  3.  Какие атрибуты задаются в дескрипторе applet языка HTML?
  4.  Как можно просмотреть результат работы апплета Java?
  5.  Как объявляется класс апплета Java? Какова структура апплета Java?
  6.  Какие этапы содержит жизненный цикл апплета Java? Коротко охарактеризуйте каждый этап.
  7.  Как передать параметры из документа HTML в апплет Java?
  8.  Какие методы класса Applet позволяют получить информацию об апплете Java?
  9.  Как выполняется управление выводом графического контекста в программах на языке Java?
  10.  Какие основные методы рисования для работы с контурными фигурами определены в классе Graphics?
  11.  Как задается цвет с помощью конструкторов класса Color в языке Java? Как задаются предопределенные цвета в программе на языке Java?
  12.  Как можно получить компоненты цвета, а также получить и установить текущий цвет для рисования в программе на языке Java?
  13.  Как можно установить и получить цвет переднего плана и фона в программе на языке Java?
  14.  Как задается заполнение контурных фигур в программе на языке Java?
  15.  Какие основные параметры вывода определены для текста?
  16.  Как можно вывести текст в графическом приложении Java?
  17.  Как можно задать текущий шрифт и получить характеристики текущего шрифта в программе на языке Java?
  18.  Как можно определить длину выводимой на экран строки в пикселях в программе на языке Java?
  19.  Какими способами можно организовать взаимодействие апплета и сценария JavaScript в Web-странице? Коротко опишите каждый способ.
  20.  Как выполняется доступ из апплета Java к элементам сценария JavaScript с помощью Java Plug-in?
  21.  Как выполняется доступ к переменным и методам апплета из сценария JavaScript?

айл: file:///web/5fan/public_html/www/files/3/5fan_ru_18083_3455b874af891ce8dd80d8cce22ee2c8.doc   Создан: Модифицирован:     Автор:


 

А также другие работы, которые могут Вас заинтересовать

5273. Коммерческие банки 52.58 KB
  Коммерческие банки Коммерческий банк: сущность, функции, классификация Типовая структура коммерческих банков Операции коммерческого банка. Введение Итак, банк — это предприятие, но предприятие особого рода. Если в деятельности...
5275. Банковская система России 438 KB
  Банковская система России Этапы реформирования банковской системы России Тенденции и проблемы развития банковской системы России Структура современной банковской системы России Вопрос 1. Этапы реформирования банковской системы Росс...
5276. Структура современной экономики США. Роль государства в экономике 78 KB
  Введение Экономика США — крупнейшая и одна из наиболее диверсифицированных национальных экономик мира, она также является локомотивом мировой экономики. Несмотря на общий для всех рыночных экономик механизм функционирования, основанный на домин...
5277. Банковская система 141 KB
  Банковская система Понятие и структура кредитной системы Банковская система: понятие, виды, структура, уровни, элементы. Характеристика элементов банковской системы Вопрос 1. Понятие и структура кредитной системы Выделяют два основ...
5278. Лесопиление. Окорка, пилорама с брусовкой 241.29 KB
  Введение. По объему выпускаемой продукции лесопромышленный комплекс в структуре промышленного производства России занимает пятое, по объемам экспорта - четвертое место. В нашей стране сосредоточены крупнейшие в мире лесосырьевые ресурсы...
5279. Независимая журналистика в России: проблемы существования. 93.5 KB
  Независимая журналистика в России: проблемы существования. Средства массовой информации и коммуникации часто вызывают полемику в обществе. Вопросы массовых коммуникаций важны потому, что прямо или косвенно оказывают влияние на жизни людей. Вопросы с...
5280. Подготовка к сварочно-наплавочным работам 76.5 KB
  Подготовка к сварочно-наплавочным работам Присварочно-наплавочных работах, подготовительные операции заключаются в следующем: зачистке мест сварки или наплавки металлическими щетками удалении загрязнений, ржавчины, остатков масел. При наличии...
5281. Изучение температурной зависимости электропроводности полупроводников 49.5 KB
  Изучить зависимость электропроводности полупроводникового образца от температуры. Определить ширину запрещенной зоны. Теоретическое введение Электропроводность материалов определяется выражением...