КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ
КАФЕДРА ЭКОНОМИЧЕСКОЙ КИБЕРНЕТИКИ

ПИНЯГИНА О. В.,
КАШИНА О. А.,
АНДРИАНОВА А. А.
Практикум
по программированию
на языке JAVA
Казань – 2007
УДК 004.43
ББК 32.973.26 – 018.1
Печатается по постановлению редакционно-издательского совета
факультета вычислительной математики и кибернетики
Казанского государственного университета
Рецензенты:
………………………………..
………………………………….
, ,
Практикум по программированию на языке Java.: Учебное пособие/ , , – Казань: Казанский государственный университет, 2007. – 140 с.
В данном учебном пособии рассматриваются основы языка Java, создание Java-апплетов и Java-приложений, сервлетов и Java Server Pages. Пособие разработано для поддержки компьютерных занятий по курсу “Учебная практика. Java” для студентов, обучающихся по специальности “061800 – Математические методы в экономике” и ориентировано на читателя, знакомого с языком C++, а следовательно, имеющего представление об объектно-ориентированном программировании. В качестве среды программирования используется JDK 1.4 (или более поздняя версия) и редактор Kawa.
Web-ресурс по данному курсу находится на сайте кафедры экономической кибернетики по адресу: http://kek. *****/EOS/JAVA/default. html.
ã Казанский государственный
университет, 2007
ã , ,
, 2007
Содержание
Содержание................................................................................................................................... 3
Предисловие................................................................................................................................. 5
Что нужно для программирования на Java........................................................................... 7
Глава 1. Основы языка JAVA.................................................................................................. 8
Создаем первый апплет.............................................................................................................................................. 8
Синтаксис языка. Типы данных. Константы и переменные. Массивы.............................. 11
Классы для типов данных и структур данных...................................................................................... 16
Операции Java................................................................................................................................................................... 18
Операторы Java................................................................................................................................................................ 20
Глава 2. Объектно-ориентированные принципы JAVA................................................... 21
Инкапсуляция................................................................................................................................................................. 21
Наследование.................................................................................................................................................................. 24
Абстрактные классы и интерфейсы............................................................................................................... 25
Полиморфизм.................................................................................................................................................................... 27
Внутренние классы..................................................................................................................................................... 30
Глава 3. Разработка апплетов................................................................................................. 32
Работа с графикой......................................................................................................................................................... 32
Работа со шрифтами................................................................................................................................................... 33
Передача внешних данных в апплет............................................................................................................. 35
AWT и обработка событий........................................................................................................................................ 39
Обработка событий мыши...................................................................................................................................... 47
Обработка событий клавиатуры........................................................................................................................ 51
Работа с потоками....................................................................................................................................................... 52
Глава 4. Разработка приложений........................................................................................... 61
Создание первого приложения.......................................................................................................................... 61
Работа с исключениями.......................................................................................................................................... 62
Работа с файлами.......................................................................................................................................................... 65
Работа с базами данных.......................................................................................................................................... 74
Создание оконных приложений........................................................................................................................ 79
Сетевые приложения.................................................................................................................................................. 84
Глава 5. Немного о сервлетах и Java Server Pages.............................................................. 93
Что нужно для разработки сервлетов и JSP?.............................................................................................. 93
Примеры сервлетов...................................................................................................................................................... 94
Пример JSP............................................................................................................................................................................. 96
Передача файла из HTML-формы сервлету.................................................................................................. 98
Апплет как интерфейс к сервлету..............................................................................................................
Использование сервлетов для генерации GIF-изображений..................................................
Практическое задание.........................................................................................................
Задание 1.........................................................................................................................................................................
Задание 2.........................................................................................................................................................................
Задание 3.........................................................................................................................................................................
Задание 4.........................................................................................................................................................................
Задание 5.........................................................................................................................................................................
Задание 6.........................................................................................................................................................................
Задание 7.........................................................................................................................................................................
Приложение 1. ЧАсто задаваемые ВОпросы..................................................................
Приложение 2. Как работать с Kawa...............................................................................
Приложение 3. Введение в настраиваемые типы данных...........................................
Приложение 4. Работа с JDK в режиме командной строки.........................................
Приложение 5. Коды примеров.........................................................................................
Литература............................................................................................................................
Предисловие
Язык Java – одно из самых новых и модных средств программирования нашего времени. Он зародился как часть проекта создания передового программного обеспечения для различных бытовых приборов. Можно сказать, что он произошел от языка C++, сохранив 80% его мощности и лишь 20% сложности (первая версия языка была создана в 1995 г. и называлась Oak). Это сокращение сложности привело, как ни странно, к тому, что Java получился более "объектно-ориентированным", чем его славный предок.
Но, разумеется, новый язык был разработан не просто для того, чтобы программисты тратили меньше времени и сил на его изучение. Java имеет собственные характерные черты.
Во-первых, в отличие от других языков программирования, в которых программы компилируются для конкретных типов процессоров, Java создает машинно-независимый промежуточный код, называемый "кодом виртуальной машины". И только при выполнении апплета или запуске автономной программы вызывается так называемая "виртуальная машина Java", которая переводит этот код в двоичный код конкретного процессора. Таким образом, написанная на Java программа будет работать под большинством операционных систем. Заманчиво, не правда ли? Но за любое преимущество приходится чем-то расплачиваться. В данном случае – тем, что у виртуальной машины очень низкая скорость работы. Программы, написанные, к примеру, на языке C и скомпилированные под определенную платформу, выполняются в 10-20 раз быстрее, чем на Java. Закон сохранения: выигрываем в универсальности – проигрываем в скорости (хотя в настоящее время разработаны компиляторы, которые сразу преобразуют исходный код программы в код определенной операционной системы).
Во-вторых, на языке Java можно писать не только автономные программы, но и специальные модули для размещения на Web-страницах. Эти модули называются апплетами, а средства их просмотра встроены в большинство браузеров.
В-третьих, язык Java оказался также удобным для разработки web-приложений на серверной стороне – это так называемые сервлеты и Java Server Pages. Созданы несколько Web-серверов на платформе Java.
Что же касается первоначальной идеи создания языка Java – разработки программ для бытовой техники – то она в настоящее время выражается, главным образом, в технологии создания «умных домов», а также в разработке игр и прочих приложений для сотовых телефонов.
Первая глава учебника рассматривает основные конструкции языка и их применение. Вторая глава посвящена объектно-ориентированным принципам Java. В третьей и четвертой главах рассматриваются разнообразные вопросы, касающиеся построения апплетов и приложений. В пятой главе изложены основы создания сервлетов и Java Server Pages.
Что нужно для программирования на Java
Для работы с Java необходимы следующие программные средства:
· JDK,
· графическая оболочка,
· справочная система.
Базовая часть средств разработки программ на Java представлена в программном комплексе JDK (Java Developer Kit) от компании Sun. Не путайте JDK с JRE (Java Runtime Environment). Второй является составной частью первого и служит только для запуска Java-программ, но никак не для их создания.
Учтите, что без JDK вам никак не обойтись. Даже если вы установите какие-либо редакторы для Java, за их красивым графическим интерфейсом зачастую будет скрываться все тот же JDK.
Установите дистрибутив JDK (он называется как-нибудь вроде j2sdk1_4_0-win. exe) в какой-либо каталог, например, в C:\ j2sdk1.4.0. Теперь можно приступать к написанию программ на Java.
Хотя Java-апплеты и Java-приложения можно запускать в режиме командной строки, разумеется, удобнее использовать какой-либо редактор с графическим интерфейсом, например, Kawa.
При изучении любого нового языка или среды программирования каждый уважающий себя программист использует справочную систему с описанием всех возможностей данного языка. В онлайн-режиме (при наличии доступа в Интернет) удобно применять справочную систему ресурса http://java. .
Глава 1. Основы языка JAVA
Создаем первый апплет
Апплет – это специальный модуль для размещения на Web-странице. Средства просмотра апплетов встроены в большинство браузеров.
Создадим апплет типа "Hello, world!". Для создания апплета выполним следующие действия. Сначала создадим исходный текст апплета. Запустим редактор Kawa и наберем в нем текст
// Простой пример апплета
import java. awt.*;
import java. applet.*;
public class FirstApplet extends Applet
{
String s="Изучаем Java!!!";
public void paint(Graphics g)
{
Font f =new Font("Times New Roman", Font. BOLD, 24);
g. setFont(f);
g. drawString(s, 5, 25);
}
}
В первых строках подключаются стандартные пакеты Java, содержащие классы для работы с графикой и апплетами.
Стандартные классы Java скомпонованы в так называемые пакеты, хранящиеся в архивных файлах с расширением .jar. Система пакетов похожа на систему каталогов и подкаталогов (если архив раскрыть, то как раз и получится некоторая иерархия каталогов и файлов). Таким образом, команда import java. awt.*; (не забывайте точку с запятой!) представляет собой инструкцию: "подключить все классы, содержащиеся в подкаталоге awt корневого каталога java". Корневые каталоги определяются настройкой CLASSPATH (см. приложение 4) или собственными настройками программы-оболочки, такой, как Kawa.
Любой апплет, который вы создаете, представляет собой производный класс от стандартного класса Applet. В нашем апплете переопределяется только один метод – paint (перерисовка окна). В качестве параметра он получает графический контекст окна.
Метод paint вызывается автоматически каждый раз, когда апплет нуждается в перерисовке. Для принудительной перерисовки следует вызывать метод repaint без параметров, который сам вызовет метод paint.
Текст в окно будем выводить крупным шрифтом размером 24, поэтому сначала создадим объект класса Font. Обратите внимание, что в одном и том же операторе объявляется переменная font типа Font и создается сам объект с помощью операции new. Для этого вызывается конструктор объекта с тремя параметрами. В качестве второго аргумента передается значение статической переменной BOLD класса Font. Выберем созданный шрифт в контекст окна и напечатаем строку "Изучаем Java!".
Любой файл c исходным текстом апплета на Java должен иметь расширение .java. Кроме того, он должен иметь имя, совпадающее с именем класса. Поэтому нам придется сохранить файл под именем FirstApplet. java.
Включите файл в проект и откомпилируйте. Если в файле были синтаксические ошибки, будут выданы соответствующие сообщения. Если ошибок не было, будет создан файл FirstApplet. class.
Для того, чтобы запустить апплет на выполнение, нужно создать HTML-страницу следующего вида (при первом запуске апплета в Kawa ее можно создать автоматически):
<HTML>
<HEAD><TITLE>Applet title</TITLE></HEAD>
<BODY>
<APPLET CODE=FirstApplet WIDTH=300 HEIGHT=300></APPLET>
</BODY>
</HTML>
Как видим, тег <applet> служит для включения апплета в текст страницы, его главный атрибут code содержит имя файла с расширением class (расширение указывать не обязательно), в котором находится откомпилированный код апплета. Если апплет находится не в том же каталоге, что HTML-файл, можно задать явный путь к апплету с помощью атрибута codebase, например,
<applet code=FirstApplet codebase="http://kek. *****/java">
</applet>
HTML-страницу с апплетом также можно просмотреть через браузер. Ваш первый апплет создан.
Как правило, в производных от Applet классах, кроме метода paint, переопределяется также метод init. Этот метод служит для инициализации апплета и является "точкой входа" в программу – именно этот метод вызывается первым при выполнении апплета (конструкторы для апплетов обычно не используют). Кроме того, иногда переопределяют методы start и stop (например, при работе с потоками). Метод destroy вызывается при выгрузке апплета.
Приведем пример использования метода init.
import java. awt.*;
import java. applet.*;
public class FirstApplet extends Applet
{
String s;
public void init()
{
s="Изучаем Java!!!";
}
public void paint(Graphics g)
{
Font f =new Font("Times New Roman", Font. BOLD, 24);
g. setFont(f);
g. drawString(s, 5, 25);
}
}
Задание для самостоятельной работы
1. Изучите более подробно стандартные классы Applet и Graphics. Какие методы они имеют?
2. От каких базовых классов класс Applet является производным? Какие методы они имеют?
Синтаксис языка. Типы данных. Константы и переменные. Массивы.
Синтаксис языка
Правила написания программ на Java очень похожи на правила С. Вспомним основные моменты:
1. В программах различаются прописные и строчные буквы. Так, слова WORD, WoRd, word, worD означают разные идентификаторы. IF может быть именем переменной, а if – ключевое слово (см. Операторы Java).
2. Кстати, об идентификаторах. Идентификатор – слово (последовательность символов без пробелов и знаков препинания), состоящее из букв, цифр, знаков _ и $, начинающееся с буквы.
3. Каждый оператор заканчивается точкой с запятой, кроме составного.
4. Составной оператор (блок) обрамляется фигурными скобками.
5. Комментарии могут занимать несколько строк, тогда они заключаются в символы /* */. Комментарий до конца строки можно создать символами //.
Типы данных
В языке Java имеются следующие стандартные типы данных:
ТИП | КЛЮЧЕ-ВОЕ СЛОВО | РАЗМЕР | ДИАПАЗОН | КОНСТАНТЫ |
логический | boolean | true, false | ||
целочисленные | byte | 8-битное целое | -128: 127 | -128, 127 |
short | 16-битное целое | : | ||
int | 32-битное целое | -2 : 2 | -2 7 | |
long | 64-битное целое | -9 : 9 | 1, 127, 32768, … | |
символьный | char | 8-битные символы 16-битные знаки UNICODE | 'a', '\n', '\x1b' | |
вещественные | float | 32-битное вещественное | -3.4*10-38: 3.4*1038 | 1.1F |
double | 64-битное вещественное | -1.7*10-308: 1.7*10308 | 1.2, 1.2D, 12E-1 | |
пустое значение | void |
Обратите внимание, что long и short – это не модификаторы, как в С, а самостоятельные типы данных. Кроме того, существует специфическая константа null для присвоения переменной какого-либо класса "пустой ссылки".
Можно неявно преобразовывать значения разных типов по принципу "от меньшего к большему" (например, значение byte можно присвоить переменной типа char, char - int, int - long).
Для явного преобразования типа используется синтаксис:
int x; long y;
...
x = (int) y;
В том случае, когда целое значение превышает диапазон для данного типа, возникнет переполнение, и в переменную будет записано совсем не то число, которое мы предполагали (см. Задание 1). А в том случае, когда точность (количество знаков после запятой) превышает точность вещественного типа, возникнет ошибка округления (см. Задание 2).
Любая переменная должна быть предварительно объявлена. Объявление переменной выглядит так:
тип переменная1, переменная2,...;
Например,
int x, Count, Sum;
При объявлении переменной можно сразу присвоить ей значение.
int x=1234, Count=1, Sum=0;
Заметим, что глобальных переменных в Java нет, все переменные локальные в пределах функции или класса. Исключением можно считать статические члены класса, к которым можно обратиться из любого места.
Массивы
В языке Java, как и в C, можно использовать массивы. Объявляются они следующим образом:
int [] list;
или
int list [];
Можно объявлять многомерные массивы:
int [][] matrix;
Перед использованием массив должен быть либо инициализирован, либо для него явно должна быть выделена память. Инициализировать массив можно так же, как и в C:
int [] list = {9,8,7,6,5,4,3,2,1,0};
int [][] matrix = {{3,2,1},{6,5,4},{9,8,7}};
Память выделяется с помощью операции new:
int [] list = new int [10];
int [][] matrix = new int [5][5];
В качестве размерности массива можно использовать переменные.
int m=4, n=3;
int [][] matrix = new int [m][n];
Массивы в Java имеют некоторые свойства объектов. Так, для получения размерности массива можно обратиться к его свойству length:
int [] list = new int [10];
int n=list. length;
В случае использования двумерного массива также возможно получение той или иной размерности с помощью свойства length. Как и в языке С, имя двумерного массива a рассматривается здесь как массив массивов. Поэтому свойство length будет содержать число строк двумерного массива. Количество же элементов в i-ой строке двумерного массива (кстати, количество элементов в разных строках двумерного массива может быть различным) можно будет получить с помощью свойства length массива a[i].
int [][] a={{1,2,3,4}, {5,6,7}, {9,0}};
System. out. println("length a="+a. length);
for(int k=0; k<a. length; k++)
System. out. println("length a["+k+"]="+a[k].length);
Метод System. out. println() печатает заданное выражение в стандартный поток вывода (подробнее о потоках ввода и вывода – в параграфе “Работа с файлами”).
При создании массива объектов с помощью операции new конструкторы объектов, в отличие от языка C++, не вызываются. Создается только массив ссылок на объекты. Впоследствии можно будет создать объекты с помощью операции new или присвоить элементам массива ссылки на другие объекты.
Пусть имеется следующий класс с именем Myclass.
class Myclass
{
int i, j;
public Myclass(int x, int y)
{
i=x;
j=y;
}
public void show()
{
System. out. println("i="+i+"; j="+j+"\n");
}
}
Использование массива объектов этого класса может быть, например, таким:
Myclass ob=new Myclass(3,4);
Myclass [] mas=new Myclass[5];
System. out. println("length of array="+mas. length);
for(int k=0; k<mas. length; k++)
{
// инициализируется k-ый элемент массива
mas[k]=ob;
mas[k].show();
}
Задания для самостоятельной работы
1. Создайте апплет с примером переполнения целых чисел. Подсказка: присвойте переменной целого типа результат арифметической операции, превышающий диапазон данного типа.
2. Создайте апплет с примером потери точности для вещественных чисел. Подсказка: присвойте переменной число с большим количеством знаков после запятой.
Классы для типов данных и структур данных
Один из основных принципов Java, как и вообще объектно-ориентированного программирования, гласит: "Всё является объектом" –"Everything is an object".
Поэтому специальные классы-оболочки разработаны даже для стандартных типов данных. Они размещены в пакете java. lang. Пакет java. lang всегда подключается по умолчанию (его не нужно импортировать) и содержит наиболее часто используемые классы. Разработаны классы:
· Boolean · Byte · Character · Double · Float | · Integer · Long · Short · String · Void |
Они содержат, в основном, методы для преобразования данных из одного типа в другой. В частности, объекты и методы этих классов мы будем использовать при передаче параметров в апплет.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


