- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.4Класс Object
- •1.3.5Класс Class
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •Синхронизация
- •Взаимодействие потоков
- •1.5.Библиотека Swing
- •1.5.2Панели
- •1.5.3Обработка событий
- •2.1.1Требования к системе
- •2.1.2Прозрачность системы
- •2.2.Общие сведения о промежуточном слое
- •2.3.Типы промежуточного слоя
- •2.4.Удаленный вызов процедур
- •Лекция 2.11.04
- •2.5.Передача параметров
- •2.6.Передача параметров по ссылке.
- •2.7.Расширение модели rpc. Асинхронный вызов.
- •3.Общие сведения об объектно-ориентированном промежуточном слое. Обращение к удаленным объектам.
- •3.1.Привязка клиента к распределенному объекту.
- •3.2.Объекты времени компиляции и объекты времени выполнения (раздел)
- •3.3.Сохранные и не резидентные объекты.
- •3.3.1Привязка клиента к объекту.
- •3.4.Реализация ссылок на объект
- •Лекция 9.11.04
- •3.4.1Идентификатор сервера. Об именовании. Имена, идентификаторы, адреса.
- •Идентификатор сервера
- •3.5.2Динамическое обращение
- •Передача параметров
- •3.5.3Сервер объектов
- •3.5.4Адаптер объекта
- •3.6.Перенос кода
- •3.6.1Модели переноса кода
- •3.8.4Реализация технологии клиент-сервер на Java (работа с сетями)
- •Лекция 30.11.04
- •3.8.5Клиентская часть
- •Объяснение в виде диаграммы последовательности
- •3.8.6Дополнительные сведения rmi.Java
- •Разница между удаленными и локальными объектами.
- •Блокировка объектов
- •Вопрос удаленных объектов
- •4.Последний раздел языка Java: интерфейс jdbc при работе с бд
- •4.1.Определение местонахождения распределенных объектов
- •Именование
- •Трейдинг
- •Лекция 7.12.04
- •4.2.Иерархические подходы в службах локализации.
- •4.2.1Кэширование указателей
- •4.2.2Масштабирование
- •4.3.Объектный трейдинг.
- •4.5.Алгоритм Крестиана
- •4.6.Алгоритм Беркли
- •4.7.Логические часы. Алгоритм Лампорта.
- •4.8.Жизненный цикл объекта
- •4.9.Миграция объектов на удаленный хост
1.3.1Именованные константы
static final int MAX = 50;
1.3.2Классы и объекты
Создание объектов – отличие:
объекты создаются только в динамической памяти – в куче
new
доступ посредством ссылок. Выделяется ячейка памяти под ссылку и с ней мы можем работать и писать туда разные значения. Если ссылка не назначена (показывает) – null.
Передавая объект – передается ссылка, а не копия объекта.
class Point { public double x, y; } Point LT = new Point(); Point BR = new Point(); LT.x = 0.0;
При объявлении выделяется место для массива ссылок на объект. У массив есть номер… Исполнительная среда контролирует вход за пределы массива. Если создать объект типа String, его можно только читать.
1.3.3Комментарии
/*..*/ - C – style
//.. – C++ - style
/** ..*/ - for javadoc tool
Лекция 21.09.04
equals
public int hashCode()
protected Object cline() throws CloneNotSupportedException
public final class getClass();
protected void finalize throws Throwabble
1.3.4Класс Object
public String toString(); - дает строковое представление объекта
1.3.5Класс Class
В runtime JRE осуществляет проверку типов объектов класса.
getClass() возвращает экземпляр типа Class
Emp e; e = new Emp();
Class cl = e.getClass();
getName();
forName()
Class cl = Class.forName(className);
if (e.getClass() = Emp.class)
newInstance
Object m = Class.forName(S).newInstance();
Object.clone()
Обеспечивает простое клонирование путем копирования всех компонентов объекта
поддержка клонирования – Clonable clone – не должен предусматривать испоключения
Составные части тоже допускают клонирование.
public clad IntStack implements
{
private int[] buffer;
// еще есть хитрый непонятный наворот с внутренними классами.
public Object clone{
IntStack nObj = (IntStack) super.cloe();
nObj.buffer = (int []) buffer.clone();
return nObj;
}
}
1.3.6Проверка типов
instanceOf
if(i instanceOf int)
final – класс, нельзя осуществить производные методы, нельзя переписать.
abstract – если предполагается, что метод будет определяться в производных классах, то можно поставить этот тмодификатор.
1.3.7Идентификаторы
public interface X{…
class newClass implements X {…}
1.3.8Обратный вызов
class TmerPrinter
1.3.9Вложенные классы и интерфейсы
Класс может быть добавлен в объявление класса внутри блока
Вложенный тип является частью вышестоящего типа
Внешние и вложенные типы находятся во взаимном доверии друг к другу с т. з. области видимости.
Вложенные классы могут быть именованными и неименованными.
Объекты внутренних классов неявно несут и ссылку на внешний класс.
1.3.10Исключения
try – catch finally(вызывается после основного обработчика)
class BadDataSetException extends Exception {}
class my{
public double[] g DataSet(String qname) throws BadDataSetException
{
String file = …
try {
} catch (IOException e) {throw BadDatSetException();}
finally {
try {
if (m = null)…
1.3.11Многопоточность
Определение 1.1 Процесс – программа, которая выполняется на одном из процессоров виртуальной системы.
Блокировки
Объекты используют признаки блокировки.
Создание потоков контролируется объект класса ‘поток’ Thread t = new Thread
start – порожден новый поток автоматически JVM вызывает метод, который делает поток активным
рассмотрен Thread, Runnable
Создание объектов public class PingPing extends Thread { private String word; private int delay; public PingPong (String whatToSay, int Delay) { word = whatToSay; delay = Delay; } public void run(){ try { for (;;) { System.out.print(word); Thread.Sleep(delay); } catch (IOException e) { return } } public static void main (String [] args) { new PingPong(“ping1”, 33).start(); new PingPong(“ping2”, 100).start(); } }
Интерфейс Runable с единственным методом oublic void Run().
Куча примеров…
