КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

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

КАФЕДРА ЭКОНОМИЧЕСКОЙ КИБЕРНЕТИКИ

ПИНЯГИНА О. В.,

КАШИНА О. А.,

АНДРИАНОВА А. А.

Практикум

по программированию

на языке 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