Скачать презентацию Программирование для Internet на языке Java История Скачать презентацию Программирование для Internet на языке Java История

Программирование на Java.ppt

  • Количество слайдов: 169

Программирование для Internet на языке Java Программирование для Internet на языке Java

История Java • В 1990 году начинается разработка новой вычислительной среды и разработка нового История Java • В 1990 году начинается разработка новой вычислительной среды и разработка нового языка «ОАК» • В 1994 году - освоение Internet новым языком. Язык получает название «Java» • В январе 1995 году компания Sun начинает бесплатное распространение Java • В августе 1995 года в Netscape Navigator включен интерпретатор JAVA

Виды Java приложений • • Автономные программы Апплеты Консольные приложения Пакеты (библиотеки) Виды Java приложений • • Автономные программы Апплеты Консольные приложения Пакеты (библиотеки)

Java Developer’s Kit (JDK) Java Developer’s Kit (JDK)

Загрузка апплетов <Applet> Загрузка апплетов

Архитектура Java класс Java Virtual Machine Java подсистема Операционная система Архитектура Java класс Java Virtual Machine Java подсистема Операционная система

Технология Java (P-код) . Java . class Интерпретатор P-кода Технология Java (P-код) . Java . class Интерпретатор P-кода

Средства разработки Javaприложений • • • Java Development Toolkit (Sun) Visual J + + Средства разработки Javaприложений • • • Java Development Toolkit (Sun) Visual J + + (Microsoft) J Builder (Inprise/Borland) Symantec Cafe (Symantec) Visual Cafe Pro (Symantec)

Базовые основы Java • Основные положения • Константы • Типы переменных • Арифметические операции Базовые основы Java • Основные положения • Константы • Типы переменных • Арифметические операции • Операторы языка Java

Первая программа class hello { public static void main(String s[ ]) { System. out. Первая программа class hello { public static void main(String s[ ]) { System. out. println("Hello Java"); } }

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

Встроенные типы переменных Встроенные типы переменных

Массивы int month_days[ ]; month_days = new int [12]; int month_days[ ] = {1, Массивы int month_days[ ]; month_days = new int [12]; int month_days[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} month_days[ i ] //i-элемент массива month_days. length; //кол-во элементов

Многомерные массивы double matrix[ ][ ]; //объявление массива matrix=new double[3][ ]; matrix[0]=new double[3]; //инициализация Многомерные массивы double matrix[ ][ ]; //объявление массива matrix=new double[3][ ]; matrix[0]=new double[3]; //инициализация matrix[1]=new double[3]; //элементов matrix[2]=new double[3]; //массива

Основные операторы Java (Арифметические операторы) Основные операторы Java (Арифметические операторы)

Целочисленные битовые операторы (long, int, short, char, byte) Целочисленные битовые операторы (long, int, short, char, byte)

Операторы отношения Операторы отношения

Булевы логические операторы Булевы логические операторы

If-else if (ЛОГ. ВЫРАЖЕНИЕ) ОПЕРАТОР 1 $ else ОПЕРАТОР 2 $ true false If-else if (ЛОГ. ВЫРАЖЕНИЕ) ОПЕРАТОР 1 $ else ОПЕРАТОР 2 $ true false

switch =X выражение =Y =Z switch(ВЫРАЖ) { case X: //действие case Y: //действие default: switch =X выражение =Y =Z switch(ВЫРАЖ) { case X: //действие case Y: //действие default: //действие }

while false ВЫРАЖ true while(ВЫРАЖ) { //тело цикла } while false ВЫРАЖ true while(ВЫРАЖ) { //тело цикла }

do-while ВЫРАЖ true false do { //тело цикла } while(ВЫРАЖ) do-while ВЫРАЖ true false do { //тело цикла } while(ВЫРАЖ)

for ИН УСЛ true ИТ false for(ИН; УСЛ; ИТ) { //тело цикла } for ИН УСЛ true ИТ false for(ИН; УСЛ; ИТ) { //тело цикла }

Передача управления break $МЕТКА$ continue $МЕТКА$ Передача управления break $МЕТКА$ continue $МЕТКА$

Использование break и continue bro. java Использование break и continue bro. java

Условное выражение ВЫР true false РЕЗ=ВЫР_ИСТ false РЕЗ = (ВЫР)? ВЫР_ИСТ : ВЫР_ЛЖ РЕЗ=ВЫР_ЛЖ Условное выражение ВЫР true false РЕЗ=ВЫР_ИСТ false РЕЗ = (ВЫР)? ВЫР_ИСТ : ВЫР_ЛЖ РЕЗ=ВЫР_ЛЖ

Задачи • Квадратное уравнение • Работа с массивом • Использование условных операторов и выражений Задачи • Квадратное уравнение • Работа с массивом • Использование условных операторов и выражений

Работа с массивом (1) import java. lang. Math; class Example. Array { public static Работа с массивом (1) import java. lang. Math; class Example. Array { public static void main(String s[ ]) { double Arr[ ][ ]; int i; Arr = new double [3][ ]; //создание массива for(i=0; i<3; i++) Arr[i]=new double [i+2];

Работа с массивом (2) //инициализация элементов массива int j; for(i = 0; i < Работа с массивом (2) //инициализация элементов массива int j; for(i = 0; i < Arr. length; i++) for(j = 0; j < Arr[i]. length; j++) Arr[i][j] = Math. random(); //печать элементов массива for(i = 0; i < Arr. length; i++) for(j = 0; j < Arr[i]. length; j++) System. out. println(""+Arr[i][j]); } }

Философская мудрость века настоящего становится всеобщим здравым смыслом века последующего. /Г. Бичер/ Введение в Философская мудрость века настоящего становится всеобщим здравым смыслом века последующего. /Г. Бичер/ Введение в программирование на Java Базовые понятия объектноориентированного программирования в Java

Понятие класса и объекта Класс • Свойства • Методы Объекты - экземпляры класса Понятие класса и объекта Класс • Свойства • Методы Объекты - экземпляры класса

Описание класса ВИДИМОСТЬ class ИМЯ_КЛАССА { ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ; ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ(АРГ) Описание класса ВИДИМОСТЬ class ИМЯ_КЛАССА { ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ; ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ(АРГ) { РЕАЛИЗАЦИЯ МЕТОДА } }

Объекты и классы в Java Объект Создание объектов Объект Переменная Объект Класс Переменная Ссылки Объекты и классы в Java Объект Создание объектов Объект Переменная Объект Класс Переменная Ссылки на объекты

Доступ к полям и методам Ссылка. Имя_поля Ссылка. Имя_метода( арг 1, арг 2, арг. Доступ к полям и методам Ссылка. Имя_поля Ссылка. Имя_метода( арг 1, арг 2, арг. N)

Поля класса • Отражают внутреннее состояние объекта • Могут иметь любой тип • Могут Поля класса • Отражают внутреннее состояние объекта • Могут иметь любой тип • Могут глобальными для всех объектов модификатор static • Могут быть константными модификатор final

Методы класса • Предназначены для воздействия на объект или другие объекты • Принимают аргументы Методы класса • Предназначены для воздействия на объект или другие объекты • Принимают аргументы по их значению и не могут изменить содержимое переменной, чье значение передано в качестве аргумента • Могут возвращать значение - оператор return • Могут быть статическими ( static ) - доступ только к статическим полям класса • могут быть перегружены (должны различаться списком аргументов)

Переменная this Набор данных объекта № 1 Методы объекта Набор данных объекта № 2 Переменная this Набор данных объекта № 1 Методы объекта Набор данных объекта № 2 Набор данных объекта № X this

Варианты использования this • Когда необходимо указать ссылку на сам объект • Когда в Варианты использования this • Когда необходимо указать ссылку на сам объект • Когда в методах имена аргументов и имена полей класса совпадают

Специальный метод конструктор • Предназначен для инициализации полей объекта • Имя совпадает с именем Специальный метод конструктор • Предназначен для инициализации полей объекта • Имя совпадает с именем класса • Не возвращает значения • Может быть перегружен

Создание объекта ОБЪЕКТ_ПЕРЕМ = new КЛАСС( АРГ) Создание объекта ОБЪЕКТ_ПЕРЕМ = new КЛАСС( АРГ)

Специальный метод finalize • Вызывается Java virtual machine при уничтожении объекта • Необязателен • Специальный метод finalize • Вызывается Java virtual machine при уничтожении объекта • Необязателен • Может выполнять завершающие действия, которые нужно выполнить при уничтожении объекта

Выркалось. Хливкие шорьки Пырялись по наве И хрюкотали зелюки, Как мюмзики в мове. /Л. Выркалось. Хливкие шорьки Пырялись по наве И хрюкотали зелюки, Как мюмзики в мове. /Л. Кэрролл/ Введение в программирование на Java Использование принципов объектного программирования в языке Java

Принципы объектноориентированного программирования • Инкапсуляция • Наследование • Полиморфизм Принципы объектноориентированного программирования • Инкапсуляция • Наследование • Полиморфизм

Инкапсуляция Методы Инкапсуляция Методы

Видимость класса, полей методов • private • public Видимость класса, полей методов • private • public

Наследование Наследование

Наследование • Позволяет создать класс с присущими ему новыми свойствами и поведением • Все Наследование • Позволяет создать класс с присущими ему новыми свойствами и поведением • Все поля и методы суперкласса входят в подкласс • Можно регулировать видимость полей суперкласса подклассом

Описание подкласса class ПОДКЛАСС extends СУПЕРКЛАСС { //реализация подкласса } Описание подкласса class ПОДКЛАСС extends СУПЕРКЛАСС { //реализация подкласса }

Обращение к полям и методам суперкласса • Вызов конструктора - super(АРГ) • Обращение к Обращение к полям и методам суперкласса • Вызов конструктора - super(АРГ) • Обращение к неперекрытому полю ИМЯ_ПОЛЯ • Обращение к перекрытому полю super. ИМЯ_ПОЛЯ

Видимость • private • protected • public Видимость • private • protected • public

Пакетная организация Javaприложений X. class Пакет PACK 1 Пакет PACK 2 Y. class P. Пакетная организация Javaприложений X. class Пакет PACK 1 Пакет PACK 2 Y. class P. class S. class

Требования к работе с пакетами • Имя пакета должно совпадать с именем каталога где Требования к работе с пакетами • Имя пакета должно совпадать с именем каталога где он хранится • В начале каждого файла одного пакета должен содержаться оператор package • Можно создавать иерархию пакетов, разделяя разные уровни точками в имени • В программе использующей классы из пакета должен стоять оператор import

Видимость (сводная таблица) Видимость (сводная таблица)

Полиморфизм ? Полиморфизм ?

Полиморфизм • Позволяет определить фактический тип объекта во время выполнения программы • Позволяет хранить Полиморфизм • Позволяет определить фактический тип объекта во время выполнения программы • Позволяет хранить ссылку на объект подкласса в переменной суперкласса

Пример полиморфизма class Shape { void draw( ) { //реализация метода } } class Пример полиморфизма class Shape { void draw( ) { //реализация метода } } class Circle extends Shape { void draw( ) { //реализация метода } } Shape s ; Circle c ; c = new Circle( ); s = с; s. draw( );

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

Описание интерфейса interface ИНТЕРФЕЙС { ЗАГОЛОВОК_МЕТОДА (АРГ); } Описание интерфейса interface ИНТЕРФЕЙС { ЗАГОЛОВОК_МЕТОДА (АРГ); }

Реализация интерфейса class КЛАСС implements СПИС. ИНТЕРФЕЙСОВ { ЗАГОЛОВОК_МЕТОДА (АРГ) { //Реализация метода для Реализация интерфейса class КЛАСС implements СПИС. ИНТЕРФЕЙСОВ { ЗАГОЛОВОК_МЕТОДА (АРГ) { //Реализация метода для этого класса } }

Использование интерфейсов 1 2 3 4 Использование интерфейсов 1 2 3 4

Многие скорее считают добродетелью раскаяние в ошибках, чем желание их избежать. /Г. Лихтенберг/ Обработка Многие скорее считают добродетелью раскаяние в ошибках, чем желание их избежать. /Г. Лихтенберг/ Обработка ошибочных ситуаций в Java • понятие исключения • типы исключений • исключения Java • исключения пользователя

технология обработки ошибок Основная программа Передача управления Возникновение ошибки Обработчик ошибок технология обработки ошибок Основная программа Передача управления Возникновение ошибки Обработчик ошибок

Форма блока обработки исключения try { //блок кода }catch(Тип. Исключения 1 e) { { Форма блока обработки исключения try { //блок кода }catch(Тип. Исключения 1 e) { { //обработчик исключения }catch(Тип. Исключения 2 e) { //обработчик исключения } finally { //завершающие действия }

Иерархия исключений Иерархия исключений

Пример обработчика int d = 0; int t = 10; try { t = Пример обработчика int d = 0; int t = 10; try { t = t /d; } catch(Arithmetic. Exception e) { System. out. println(“Divide by zero”); }

Механизм поиска обработчика • Просматриваются catch-блоки путем сравнения типа инициированного исключения • Если найден Механизм поиска обработчика • Просматриваются catch-блоки путем сравнения типа инициированного исключения • Если найден catch-блок совпадающий любым типом из иерархии (от Exception до типа инициированного исключения) он получает управление • Если catch-блок не найден просматриваются блоки верхних уровней • Если ни на одном из уровней catch-блоки не найдены программа завершается

Передача исключений вызывающим методам ЗАГОЛОВОК_МЕТОДА(АРГ) throws СПИС. ИСКЛ { //реализация метода без обработки исключений Передача исключений вызывающим методам ЗАГОЛОВОК_МЕТОДА(АРГ) throws СПИС. ИСКЛ { //реализация метода без обработки исключений //указанный в списке throws }

Возбуждение исключений throw ОБЪЕКТ_ИСКЛЮЧЕНИЕ Возбуждение исключений throw ОБЪЕКТ_ИСКЛЮЧЕНИЕ

Создание собственных исключений • Создайте подкласс от класса Exception • Определите обработчики для вашего Создание собственных исключений • Создайте подкласс от класса Exception • Определите обработчики для вашего исключения во всех методах, где это необходимо • В методах где ваше исключение не обрабатывается, но его возбуждение возможно укажите список throws • Для возбуждения исключения используйте оператор throw.

Все уже описано. К счастью, не обо всем еще подумано. /С. Лец/ Стандартные классы Все уже описано. К счастью, не обо всем еще подумано. /С. Лец/ Стандартные классы Java • String • Vector • Hash. Table • Runtime

Создание строк String s = “abcd”; String s = new String( ); char Arr[ Создание строк String s = “abcd”; String s = new String( ); char Arr[ ] ={ ‘a’, ’b’, ’c’, ’d’}; String s = new String(Arr, 2, 1);

Слияние строк String s = “He is “ + age + “ years old”; Слияние строк String s = “He is “ + age + “ years old”; String s = new String. Buffer(“He is”). append(age). append(“years old”). to. String( ); Все операции по изменению строк проводятся через объекты родственного класса String. Buffer

Перевод значения стандартного типа в строку String ПЕР = String. value. Of(ПСТ); String L Перевод значения стандартного типа в строку String ПЕР = String. value. Of(ПСТ); String L = String. value. Of(123456789); System. out. println(L);

Преобразование объекта в строку class Point { int x, y; Point(int x, int y){ Преобразование объекта в строку class Point { int x, y; Point(int x, int y){ this. x = x; this. y = y; } public String to. String( ) { return "Point["+x+", "+y+"]"; } }

Извлечение символов String s = “This is example”; char c =s. char. At(3) String Извлечение символов String s = “This is example”; char c =s. char. At(3) String s = “This is example”; char buf[ ] = new char[5]; s. get. Chars(2, 6, buf, 0);

Сравнение строк String s 1 = “Hello”; String s 2 = “HELLO”; s 1. Сравнение строк String s 1 = “Hello”; String s 2 = “HELLO”; s 1. equals(s 2); //неравные строки -> false s 1. equals. Ignore. Case(s 2); //строки равны -> true

Поиск подстроки boolean region. Matches(int toffset, String other, int ooffset, int len); boolean region. Поиск подстроки boolean region. Matches(int toffset, String other, int ooffset, int len); boolean region. Matches(boolean ignore. Case, int toffset, String other, int ooffset, int len); String s 1 = “Hello”; String s 2 = “HELLO WORLD”; s 1. region. Mathes(0, s 2, 0, 11); // false s 1. region. Mathes(0, s 2, 0, 5); // false s 1. region. Mathes(true, 0, s 2, 0, 5); //true

Подробное сравнение строк public int compare. To(String another. String); > 0 - строка больше Подробное сравнение строк public int compare. To(String another. String); > 0 - строка больше чем another. String < 0 - another. String больше чем строка = 0 - строки равны

Некоторые методы класса String public String substring(int begin. Index, int end. Index) ; //извлечение Некоторые методы класса String public String substring(int begin. Index, int end. Index) ; //извлечение подстроки public String replace(char old. Char, char new. Char); //замена всех символов // old. Char в строке на символ new. Char public boolean starts. With(String prefix, int toffset) ; //определить, начало //строки совпадает с prefix public String to. Upper. Case( ); //перевести все символы //в верхний регистр

Класс Vector Некоторые методы • add. Element(ОБЪЕКТ) - добавление • element. At(ИНДЕКС) - получение Класс Vector Некоторые методы • add. Element(ОБЪЕКТ) - добавление • element. At(ИНДЕКС) - получение • remove. Element. At(ИНДЕКС) - удаление • capacity( ) - емкость вектора • size( ) - количество элементов в векторе

Класс Stack Некоторые методы • push(ОБЪЕКТ) - поместить в стек • pop( ) - Класс Stack Некоторые методы • push(ОБЪЕКТ) - поместить в стек • pop( ) - получить элемент на вершине стека и удалить • peek( ) - получить элемент на вершине стека, но не удалять его • search(ОБЪЕКТ) - вернуть индекс объекта в стеке, если есть (-1 объекта нет)

Интерфейс Enumeration • elements( ) - вернуть ссылку на Enumeration (метод принадлежит объекту-структуре данных) Интерфейс Enumeration • elements( ) - вернуть ссылку на Enumeration (метод принадлежит объекту-структуре данных) • has. More. Elements( ) - вернуть true - если получены еще не все элементы • next. Elements( ) - возвратить текущий элемент

Класс Object перегрузка некоторых методов Класс Object перегрузка некоторых методов

Under construction!!! Under construction!!!

Два человека одинаковой комплекции дрались бы недолго, если бы сила одного превозмогла силу другого. Два человека одинаковой комплекции дрались бы недолго, если бы сила одного превозмогла силу другого. /К. Прутков/ Параллельная обработка использование потоков в Java и управление ими

Необходимость параллельной обработки • Блокировка программы когда ожидается приема данных откуда-либо или при иной Необходимость параллельной обработки • Блокировка программы когда ожидается приема данных откуда-либо или при иной операции • Сложные вычислительные операции или операции при работе с графическим изображением • Выполнение фоновой работы не связанной напрямую с решением задачи

Сущность параллельной обработки Основной поток команд Приложение доп. поток № 1 команд доп. поток Сущность параллельной обработки Основной поток команд Приложение доп. поток № 1 команд доп. поток №N команд

Понятия параллельной обработки • • • Поток команд Выполнение потоков Приоритеты потоков Сообщения Синхронизация Понятия параллельной обработки • • • Поток команд Выполнение потоков Приоритеты потоков Сообщения Синхронизация взаимные блокировки

Жизнь и периоды потока Создание потока start( ) stop( ) suspend( ) Работа потока Жизнь и периоды потока Создание потока start( ) stop( ) suspend( ) Работа потока Приостановка потока resume( ) Завершение потока stop( ) завершение

Класс Thread • Реализует поток команд • Метод run( ) содержит основной алгоритм потока Класс Thread • Реализует поток команд • Метод run( ) содержит основной алгоритм потока команд • Метод start( ) запускает поток • Метод stop( ) завершает поток • Метод suspend( ) приостанавливает поток • Метод resume( ) возобновляет поток

Создание собственного потока class ИМЯ extends Thread { public void run( ) { //реализация Создание собственного потока class ИМЯ extends Thread { public void run( ) { //реализация алгоритма потока } }

Использование интерфейса Runnable • Необходимо когда определенный класс должен реализовать поток, и одновременно он Использование интерфейса Runnable • Необходимо когда определенный класс должен реализовать поток, и одновременно он наследуется от другого класса • Требует реализации метода run( ) где содержится основной алгоритм потока

Применение Runnable class Circle extends Shape implements Runnable { public void draw( ) { Применение Runnable class Circle extends Shape implements Runnable { public void draw( ) { //реализация метода } public void run( ) { while(true) draw( ); //вызов метода } }

Применение Runnable Circle c = new Circle( ); Thread t = new Thread(c); t. Применение Runnable Circle c = new Circle( ); Thread t = new Thread(c); t. start( );

Проблемы многопоточной обработки • Два потока могут одновременно вызывать один и тот же метод Проблемы многопоточной обработки • Два потока могут одновременно вызывать один и тот же метод с одним набором данных • Взаимное влияние на изменение состояния переменных несколькими потоками одновременно • Взаимные блокировки

Синхронизация synchronized Обработка данных Синхронизация synchronized Обработка данных

Реализация синхронизации метода synchronized ЗАГОЛОВОК_МЕТОДА(АРГ) { //реализация метода. Гарантируется, что //вызов будет только одним Реализация синхронизации метода synchronized ЗАГОЛОВОК_МЕТОДА(АРГ) { //реализация метода. Гарантируется, что //вызов будет только одним потоком, а не //несколькими }

Реализация синхронизации для блока работы с объектом synchronized(ОБЪЕКТ) { //группа операторов, работающих //с объектом. Реализация синхронизации для блока работы с объектом synchronized(ОБЪЕКТ) { //группа операторов, работающих //с объектом. Гарантируется, что //здесь работу ведет только один поток, //а все остальные в состоянии ожидания }

Взаимодействие потоков wait( ); //переводит текущий поток в режим //ожидания notify( ); //выводит первый Взаимодействие потоков wait( ); //переводит текущий поток в режим //ожидания notify( ); //выводит первый поток из состояния //ожидания, вызвавший ранее wait( ) //с данным объектом notify. All( ); //выводит из состояния ожидания //все потоки, вызвавшие ранее wait( ) //с данным объектом

Взаимная блокировка Блокировка A Блокировка B synchronized(a){ synchronized(b) { } } synchronized(b){ synchronized(a) { Взаимная блокировка Блокировка A Блокировка B synchronized(a){ synchronized(b) { } } synchronized(b){ synchronized(a) { } } Блокировка A

Приоритеты потоков • Каждый поток может иметь определенный приоритет • Все потоки начинают жизнь Приоритеты потоков • Каждый поток может иметь определенный приоритет • Все потоки начинают жизнь с приоритетом, равным приоритету потока, который их создал • В процессе работы можно изменить приоритет потока // set. Priority( )

Групповое управление потоками Главная группа 1 группа А 2 3 группа C группа B Групповое управление потоками Главная группа 1 группа А 2 3 группа C группа B 5 группа D 4

Объединение потоков в группу Thread. Group top. Group = new Thread. Group(“Top. Group”); Thread Объединение потоков в группу Thread. Group top. Group = new Thread. Group(“Top. Group”); Thread thread 1 = new Thread(top. Group, ”Thread 1”); Thread thread 2 = new Thread(top. Group, ”Thread 2”); top. Group. start( ); … top. Group. stop( );

Природу легче всего подчинить, повинуясь ей. /Ф. Бэкон/ Апплеты Основы Политика безопасности Графические примитивы Природу легче всего подчинить, повинуясь ей. /Ф. Бэкон/ Апплеты Основы Политика безопасности Графические примитивы

Понятие апплета Броузер Контроль безопасности Вызов метода Апплет Выполнение команд метода Понятие апплета Броузер Контроль безопасности Вызов метода Апплет Выполнение команд метода

Жизненный цикл апплета апплет на WWW сервере <applet code=…> загрузка апплета переход на другую Жизненный цикл апплета апплет на WWW сервере загрузка апплета переход на другую страницу Работа апплета Завершение броузера Завершение апплета приостановка апплета возврат на страницу с апплетом

Тег загрузки апплета <applet code=“ИМЯ КЛАССА” witdh=X height=Y> </applet> Тег загрузки апплета

Синтаксис тега <APPLET> <APPLET CODEBASE=БАЗОВЫЙ URL КОДА АППЛЕТА CODE=ИМЯ КЛАССА ALT=ПРОИЗВОЛЬНЫЙ ТЕКСТ NAME=ИМЯ АППЛЕТА Синтаксис тега ТЕКСТ ДЛЯ НЕ JAVA БРОУЗЕРОВ

Передача параметров <applet …> <PARAM NAME=ИМЯ VALUE=ЗНАЧЕНИЕ> * * * </applet> String get. Parametr(ИМЯ) Передача параметров * * * String get. Parametr(ИМЯ)

Апплет class ИМЯ extends Applet { //реализация апплета } Апплет class ИМЯ extends Applet { //реализация апплета }

Основные методы класса Applet • init( ) Вызывается после загрузки апплета • start( ) Основные методы класса Applet • init( ) Вызывается после загрузки апплета • start( ) Вызывается при старте апплета или возобновлении его работы • paint( ) Вызывается при необходимости прорисовки апплета • update( ) Закраска фоном и последующий вызов метода paint( ) • stop( ) - Вызывается, когда броузер покидает документ с апплетом • destroy( ) - Вызывается, когда апплет удаляется из памяти

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

Прорисовка апплета public void paint(Graphics ОБЪЕКТ) { //формирование изображения } Graphics Прорисовка апплета public void paint(Graphics ОБЪЕКТ) { //формирование изображения } Graphics

Класс Graphics • Является средством доступа к области прорисовки • Содержит методы отрисовки простейших Класс Graphics • Является средством доступа к области прорисовки • Содержит методы отрисовки простейших фигур • Позволяет оперировать цветом и шрифтами

Некоторые методы класса Graphics • draw. Rect( int x, int y, int dx, int Некоторые методы класса Graphics • draw. Rect( int x, int y, int dx, int dy) прямоугольник • fill. Rect(int x, int y, int dx, int dy) - закрашенный прямоугольник • draw. String(String s, int x, int y) - рисование строки в текущих координатах

Рисование окружностей и подобных фигур классом Graphics X dx Y Start. Angle dy End. Рисование окружностей и подобных фигур классом Graphics X dx Y Start. Angle dy End. Angle = 00

Некоторые методы класса Graphics • draw. Arc(int x, int y, int dx, int dy, Некоторые методы класса Graphics • draw. Arc(int x, int y, int dx, int dy, int Start. Angle, int End. Angle) - рисует дугу, ограниченную прямоугольником • draw. Polygon(int x[ ], int y[ ], int counts) рисование контура

Закругленные прямоугольники x dx width y dy • draw. Round. Rect(int x, int y, Закругленные прямоугольники x dx width y dy • draw. Round. Rect(int x, int y, int dx, int dy, int width, int height) height

Управление текущим цветом new Color(int r, int g, int b) new Color(int color) Color. Управление текущим цветом new Color(int r, int g, int b) new Color(int color) Color. ИМЯ_ЦВЕТА • Создать новый объект класса Color, указав нужный цвет • вызвать метод set. Color( ) и передать ему ранее созданный объект класса Color

Управление шрифтом new Font(ИМЯ_ШРИФТА, СТИЛЬ, ВЫСОТА) • Создать объект класса Font • Вызвать метод Управление шрифтом new Font(ИМЯ_ШРИФТА, СТИЛЬ, ВЫСОТА) • Создать объект класса Font • Вызвать метод set. Font( ) и передать ему созданный ранее объект класса Font

Метрики шрифта height X ascent Java-glasgow baseline Y descent • get. Font. Metrics( ) Метрики шрифта height X ascent Java-glasgow baseline Y descent • get. Font. Metrics( ) - получить объект Font. Metrics

Художник думает рисунком. /С. Дали/ Работа с графическим изображением • Загрузка графических изображений • Художник думает рисунком. /С. Дали/ Работа с графическим изображением • Загрузка графических изображений • Использование буферизации • Создание анимации

Загрузка графических изображений Image ОБЪЕКТ = get. Image(URL, ИМЯ); Апплет порции paint( ) изображения Загрузка графических изображений Image ОБЪЕКТ = get. Image(URL, ИМЯ); Апплет порции paint( ) изображения

Использование интерфейса Image. Observer public class Sample extends Applet implements Image. Observer { public Использование интерфейса Image. Observer public class Sample extends Applet implements Image. Observer { public boolean image. Update(Image img, int status, int x, int y, int width, int height) { //контроль загрузки графического изображения } }

Флаги интерфейса Image. Observer Флаги интерфейса Image. Observer

Использование Media. Tracker tracker = new Media. Tracker(this) Image image = get. Image(get. Document. Использование Media. Tracker tracker = new Media. Tracker(this) Image image = get. Image(get. Document. Base(), «example. gif» )); tracker. add. Image(image, id); if (tracked. check. ID(id) == true) { //изображение готово }

Создание анимационного апплета • Апплет должен реализовывать интерфейс Runnable • Загрузите кадры-изображения в методе Создание анимационного апплета • Апплет должен реализовывать интерфейс Runnable • Загрузите кадры-изображения в методе init( ) • Реализуйте в методе run( ) бесконечный цикл, с вызовом метода repaint( ) • В методе paint( ) реализуйте прорисовку нужного изображения и переключение счетчиков кадра

Использование двойной буферизации • Создать буферное изображение • Обеспечить, чтобы только метод update( ) Использование двойной буферизации • Создать буферное изображение • Обеспечить, чтобы только метод update( ) вызывал метод paint( ) • Выполнить весь рисунок в буферном изображении • Нарисовать буферное изображение в окне (апплете), применив метод draw. Image( )

Создание буферного изображения Image off. Screen = create. Image(width, height) Graphics g. Off = Создание буферного изображения Image off. Screen = create. Image(width, height) Graphics g. Off = off. Screen. get. Graphics( )

Выполнение рисунка в буфере g. Off. fill. Rect(x, y, width, height); g. Off. draw. Выполнение рисунка в буфере g. Off. fill. Rect(x, y, width, height); g. Off. draw. String(“Hello”, 5, 2);

Перенос буферного рисунка на экран public void paint(Graphics g) { g. draw. Image(off. Screen, Перенос буферного рисунка на экран public void paint(Graphics g) { g. draw. Image(off. Screen, 0, 0, this) }

Когда будет нужно вас позовут /О. Бендер/ Взаимодействие апплетов с пользователем • Модель «реакции Когда будет нужно вас позовут /О. Бендер/ Взаимодействие апплетов с пользователем • Модель «реакции на события» • Работа с окном • Использование органов управления

Модель «реакция на события» public boolean action. Perfomed( … ) { //реакция на события Модель «реакция на события» public boolean action. Perfomed( … ) { //реакция на события }

Механизм обработки события Адаптер Обработчик Механизм обработки события Адаптер Обработчик

Схема адаптера события class ИМЯ implements ИНТЕРФЕЙС_СОБЫТИЯ { ЭЛЕМЕНТ p; ИМЯ(ЭЛЕМЕНТ p) { this. Схема адаптера события class ИМЯ implements ИНТЕРФЕЙС_СОБЫТИЯ { ЭЛЕМЕНТ p; ИМЯ(ЭЛЕМЕНТ p) { this. p = p; } ОБРАБОТЧИК(ОПИСАТЕЛЬ e) { p. ОБРАБОТЧИК(e) } }

Регистрация адаптера ОБЪЕКТ. add. ТИП_СОБЫТИЯListener(АДАПТЕР) Регистрация адаптера ОБЪЕКТ. add. ТИП_СОБЫТИЯListener(АДАПТЕР)

Интерфейс общего события элемента (action) interface Action. Listener { public abstract void action. Performed(Action. Интерфейс общего события элемента (action) interface Action. Listener { public abstract void action. Performed(Action. Event e) } e. get. ID( ) - тип события

интерфейс события мыши (mouse) interface Mouse. Listener { mouse. Clicked(Mouse. Event); mouse. Entered(Mouse. Event) интерфейс события мыши (mouse) interface Mouse. Listener { mouse. Clicked(Mouse. Event); mouse. Entered(Mouse. Event) ; mouse. Exited(Mouse. Event); mouse. Pressed(Mouse. Event); mouse. Released(Mouse. Event) } class Mouse. Event { int get. X(); int get. Y(); Point get. Point(); *** } class Mouse. Adapter implements Mouse. Listerner { *** }

Интерфейс события клавиатуры (key) interface Key. Listener { key. Pressed(Key. Event) ; key. Released(Key. Интерфейс события клавиатуры (key) interface Key. Listener { key. Pressed(Key. Event) ; key. Released(Key. Event); key. Typed(Key. Event); } class Key. Event { public char get. Key. Char( ); public int get. Key. Code( ) *** } class Key. Adapter implements Mouse. Listerner { *** }

Интерфейс событий компонента (component) interface Component. Listener { component. Hidden(Component. Event) ; component. Moved(Component. Интерфейс событий компонента (component) interface Component. Listener { component. Hidden(Component. Event) ; component. Moved(Component. Event); component. Resized(Component. Event); component. Shown(Component. Event); } class Component. Event { public Component get. Component( ) }

Интерфейс событий фокуса ввода (Focus) interface Focus. Listener { focus. Gained(Focus. Event) focus. Lost(Focus. Интерфейс событий фокуса ввода (Focus) interface Focus. Listener { focus. Gained(Focus. Event) focus. Lost(Focus. Event) } class Focus. Event { public int get. ID( ) } class Focus. Adapter { *** }

Пример реакции на движения мыши public boolean handle. Event(Event e) { if(e. id = Пример реакции на движения мыши public boolean handle. Event(Event e) { if(e. id = = Event. MOUSE_DRAG) { Graphics g = get. Graphics( ); g. draw. String( «Hello» , e. x, e. y); } }

Работа с элементами управления • Создать менеджер компоновки • Создать элемент управления • Поместить Работа с элементами управления • Создать менеджер компоновки • Создать элемент управления • Поместить элемент управления в контейнер, вызвав метод add( ) • Описать обработку события для этого элемента путем регистрации адаптера и создания обработчика

Менеджер компоновки Элемент управления Менеджер компоновки Элемент управления

Стандартные менеджеры компоновки • • • Последовательная укладка (Flow. Layout) Укладка - компас (Border. Стандартные менеджеры компоновки • • • Последовательная укладка (Flow. Layout) Укладка - компас (Border. Layout) Укладка таблицей (Grid. Layout) Укладка сложной таблицей (Grid. Bag. Layout) Карточная укладка (Card. Layout)

Установка менеджера компоновки set. Layout(new МЕНЕДЖЕР_КОМПОНОВКИ( )); Установка менеджера компоновки set. Layout(new МЕНЕДЖЕР_КОМПОНОВКИ( ));

Укладка - компас North West Center East South add(РАСПОЛОЖЕНИЕ, ЭЛЕМЕНТ); Укладка - компас North West Center East South add(РАСПОЛОЖЕНИЕ, ЭЛЕМЕНТ);

Класс Frame • Реализует объект окно • Позволяет, как и в апплете размещать элементы Класс Frame • Реализует объект окно • Позволяет, как и в апплете размещать элементы управления • Поддерживает модель «реакции на события»

Кто не предъявляет своих требований, о том никто не заботится. /Н. Г. Чернышевский/ Организация Кто не предъявляет своих требований, о том никто не заботится. /Н. Г. Чернышевский/ Организация доступа к базам данных на основе пакета Java Database Connectivity • Технология JDBC • Подключение к базе данных • Организация запросов набора данных • Работа с результатами запросов

Технология JDBC Java-приложение Диспетчер драйверов Драйвер базы данных СУБД JDBC Технология JDBC Java-приложение Диспетчер драйверов Драйвер базы данных СУБД JDBC

Типы JDBC драйверов • • JDBC-ODBC bridge Native-API JDBC-Net Native pure Java Native-protocol pure Типы JDBC драйверов • • JDBC-ODBC bridge Native-API JDBC-Net Native pure Java Native-protocol pure Java driver

JDBC-ODBC bridge Java-приложение Диспетчер драйверов JDBC-ODBC bridge ODBC Драйвер базы данных СУБД JDBC-ODBC bridge Java-приложение Диспетчер драйверов JDBC-ODBC bridge ODBC Драйвер базы данных СУБД

Подключение к базе данных Connection ОБЪЕКТ= Driver. Manager. get. Connection(URL) URL “JDBC: ДОП ПРОТОКОЛ: Подключение к базе данных Connection ОБЪЕКТ= Driver. Manager. get. Connection(URL) URL “JDBC: ДОП ПРОТОКОЛ: ДОП ИМЯ” ДОП ПРОТОКОЛ ODBC драйвер ODBC ДОП ИМЯ ИСТОЧНИК; АТРИБУТЫ

Загрузка класса драйвера try { Class ОБЪЕКТ = Class. for. Name( «ИМЯ КЛАССА» ); Загрузка класса драйвера try { Class ОБЪЕКТ = Class. for. Name( «ИМЯ КЛАССА» ); } catch (Class. Not. Found. Exception e) { //невозможно загрузить класс }

Driver. Manager • Управляет подключениями к базам данных, включая регистрацию пользователей СУБД • Регистрация Driver. Manager • Управляет подключениями к базам данных, включая регистрацию пользователей СУБД • Регистрация новых не предустановленных драйверов - объектов, классы которых реализуют интерфейс Driver • Управление таймаутом подключения к СУБД • Вывод информации в протокол отладки драйвера базы данных

Connection • Позволяет получить доступ к хранилищу SQL команд Statement - Create. Statement( ) Connection • Позволяет получить доступ к хранилищу SQL команд Statement - Create. Statement( ) • Позволяет осуществлять управление транзакциями: – set. Auto. Commit( ) – commit( ) – rollback( ) • Позволяет получить доступ к метаданным get. Meta. Data( )

Организация запросов к базе данных • Statement - простой запрос • Prepared. Statement - Организация запросов к базе данных • Statement - простой запрос • Prepared. Statement - Запрос с параметрами • Callable. Statement - Выполнение хранимых процедур Connection con = Driver. Manager. get. Connection(URL); Statement ОБЪЕКТ = con. create. Statement( );

Выполнение запроса при помощи Statement-объекта Statement db. Stat = con. create. Statement( ); Result. Выполнение запроса при помощи Statement-объекта Statement db. Stat = con. create. Statement( ); Result. Set ОБЪЕКТ = db. Stat. execute. Query(SQL) Result. Set

Доступ к полям при помощи объектов класса Result. Set get. ТИП(ИМЯ ПОЛЯ) get. ТИП(НОМЕР Доступ к полям при помощи объектов класса Result. Set get. ТИП(ИМЯ ПОЛЯ) get. ТИП(НОМЕР ПОЛЯ) • String • Object • Int • Long • Float • Double • Date • Short next( ) previous( ) чтение • Time • Blob Перемещение по записям

Запрос с параметрами Prepared. Statement ОБЪЕКТ = con. Prepared. Statement( «SQL с параметрами» ); Запрос с параметрами Prepared. Statement ОБЪЕКТ = con. Prepared. Statement( «SQL с параметрами» ); SELECT * FROM PEOPLE WHERE FISTNAME = ? AND LASTNAME= ? ОБЪЕКТ. set. ТИП(НОМЕР, ЗНАЧЕНИЕ)

Применение технологии Java в Web-приложениях • Java Server Page • Servlet Применение технологии Java в Web-приложениях • Java Server Page • Servlet

Основные положения технологии Java-servlet • Основывается на технологии Java • Запрос от http-клиента выполняется Основные положения технологии Java-servlet • Основывается на технологии Java • Запрос от http-клиента выполняется Javaприложением – сервлетом • Сервлет имеет возможность полного использования Java API и его подмножеств – Java MAIL, JDC, …

http-сервера с поддержкой Java-servlet • Apache-Tomcat • Java Web Development KIT • Java Web http-сервера с поддержкой Java-servlet • Apache-Tomcat • Java Web Development KIT • Java Web Server 2. 0

Структура servletа public class ИМЯ extends HTTPServlet { protected void do. Get(Http. Servlet. Request Структура servletа public class ИМЯ extends HTTPServlet { protected void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { //обработка GET-запроса} protected void do. Post(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { //обработка POST-запроса} ***//аналогичные методы для других методов //http-протокола }

Пример простого servleta import java. io. *; import javax. servlet. http. *; public class Пример простого servleta import java. io. *; import javax. servlet. http. *; public class Hello. World extends Http. Servlet { public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { Print. Writer out = response. get. Writer( ); out. println("Hello World"); } }

Инкапсуляция запроса • Запрос в объекте класса Http. Servlet. Request • Некоторые методы класса Инкапсуляция запроса • Запрос в объекте класса Http. Servlet. Request • Некоторые методы класса Http. Servlet. Request – – – – get. Parameter(“ИМЯ”) get. Parameter. Names( ) get. Content. Type( ) get. Content. Length( ) get. Remote. Addr( ) get. Locale( ) get. Session( ) или get. Session(флаг_создания_сессии)

Инкапсуляция http-сессии • Объект класса HTTPSession • Некоторые методы класса HTTPSession – get. Id() Инкапсуляция http-сессии • Объект класса HTTPSession • Некоторые методы класса HTTPSession – get. Id() – get. Attribute(“ИМЯ”) – set. Attribute(“ИМЯ”, ЗНАЧЕНИЕ) – is. New( ) – set. Max. Inactive. Interval(ИНТЕРВАЛсекунды) – invalidate( )

Инкапсуляция http-ответа • Объект класса Http. Response • Некоторые методы и константы – SC_xxx Инкапсуляция http-ответа • Объект класса Http. Response • Некоторые методы и константы – SC_xxx – add. Header(“ИМЯ”, ”ЗНАЧЕНИЕ”) – send. Error(СТАТУС, “ПОЯСНЕНИЕ”) – get. Writer( ) – set. Content. Type(“MIME-тип”) – send. Redirect(“URL”)