
- •Оглавление
- •Java-технологии распределенных компьютерных систем
- •Инструментальные средства java для создания распределенных систем
- •Первая java-программа
- •Интерфейсы
- •Наследование
- •Import имя_пакета.*;
- •Ссылки this и super
- •Исключения
- •Массивы
- •Виртуальная машина java (jvm)
- •Распределенные компьютерные системы и их характеристики
- •Промежуточное программное обеспечение распределенных компьютерных систем
- •Архитектура java rmi
- •Достоинства и недостатки java-rmi
- •Технология corba
- •Достоинства и недостатки corba
- •Структура распределенного j2ee java-приложения
- •Hello World распределенное j2ee java-приложение Средства разработки
- •Структура
- •Код локального интерфейса
- •Html. Основные теги html.
- •Основные теги html
- •Формы html-документов
- •Cgi. Java web-сервер
- •Сервлет-технология java
- •Компоненты ejb
- •Страницы jsp
- •Теги и встроенные объекты jsp
- •Основные теги jsp-страниц.
- •Архитектуры распределенных приложений. Web-сервисы
- •Jms. Архитектура jms
Интерфейсы
Java позволяет классу наследовать один класс. Приодолеть этот недостаток позволяют интерфейсы.
Интерфейс – описание класса без его реализации.
Общий синтаксис объявления интерфейса:
Идентификатор_доступа interface Имя_интерфейса
{поле_константа_1;
поле_константа_2;
… … … … … … … … …
поле_константа_n;
объявление_метода_1;
объявление_метода_2;
… … … … … … … … …
объявление_метода_n;
}
Подчеркнем, что объявление метода в интерфейсе – это не его полная реализация. Класс который использует данный интерфейс должен полностью реализовать все методы интерфейса.
Пример использования интерфейса:
public interface Fruit
{public string getName();}
public class Apple implements Fruit
{public string getName()
{return “Apple”}
}
public class Orange implements Fruit
{public string getName()
{return “Orange”;}
}
public class Storage
{public static void main (String [] args}
Apple a=new Apple();
Orange 0=new Orange();
print Name(a); printName(0);}
public static void printName(Fruit f)
{System.out.println(f.getName());}
}
>javac*.java
>java Storage
Apple
Orange
Методу printName передается параметр типа интерфейс, поєтому он может работать с двумя экземплярами различных классов
Наследование
Одно из самых важных особенностей объектно-ориентированных языков программирования является наследование.
Наследование позволяет создавать новые классы на базе уже имеющихся. При этом вновь созданные классы наследуют методы и поля родительских классов.
Объявление того что класс В наследует класс А имеет вид:
class B extends A
{…}
Класс А называется суперклассом или родительским классом класса В. Класс В называется субклассом или дочерним классом класса А.
Пример наследования:
public class P
{String name=”Оксана”;
void print(String str)
System.out.println(str);}
public class D extends P
{public static void main(String[]args)
{D d=new D();
d.print(d.name);}
}
>javac*.java
>java D
Oksana
Пакеты
В библиотеку java API входят тысячи классов. Программист в ходе работы добавляет десятки своих.
Для удобства работы с классами java введена конструкция пакеты. Пакеты используются для группировки связанных между собой классов и интерфейсов. Пакеты могут включать в себя и вложенные подпакеты. Образуется древовидная структура пакетов и подпакетов. Эта структура с точностью отображается на структуру файловой системы. Каждый пакет образует одно пространство имен namespace. Это означает что все имена классов и интерфейсов в пакете должны быть уникальны. Имена в разных пакетах могут совпадать, но это разные программные единицы.
Использование всех элементов пакета встречаются в java-программах наиболее часто. Импорт всего пакета в программу осуществляется с помощью выражения:
Import имя_пакета.*;
Предварительно необходимый нам класс (интерфейс) был помещен в пакет с названием имя_пакета. Кроме того вначале кода этого класса (интерфейса) добавлена строка: package имя_пакета.
Ссылки this и super
Ссылка this в конструкторе или методе класса указывает на текущий объект. Обычно this используется для правильного определения компилятором имен переменных, когда имена локальных и глобальных переменных совпадают.
Так определение класса с this:
class Myclass
{int i;
void setI(int i)
{this.i=i;}
}
Эквивалентно следующему определению без this:
class Myclass
{int i;
void setI(int my_i)
{i=my_i;}
}
Ссылка super позволяет обратиться непосредственно к конструктору суперкласса.
Ссылка super используется для инициализации данного экземпляра класса и доступа к его глобальным переменным.
Например:
class Point
{int x,y;
Point(int x, int y)
{this.x=x;this.y=y;}
}
Class Point 3D extends Point
{int z;
Point 3D(int x, int y, int z)
{super(x,y);this.z=z;}
public static void main(string[]args){
Point 3D P=new Point3D(10,20,30);
System.out.println(“x=”+p.x+”y”=+p.y+”z=”+p.z);
}}
>javac *.java
>java Point 3D
x=10 y=20 z=30