.RU

Тезисы лекций по курсу «Кросс-платформенные программные системы»






Государственное образовательное учреждение

высшего профессионального образования

донской государственный технический университет

каф. «ПОВТ и АС»


Тезисы лекций по курсу


«Кросс-платформенные программные системы»


Разработал

доц., к.ф.-м.н. Габрельян Б.В.


Ростов-на-Дону

2008

Оглавление
Кросс-платформенные программные системы. 4

1. Задачи кросс-платформенного программирования. 4

2. Использование виртуальной машины. 4

3. Виртуальная машина Java (JVM). 4

4. Оптимизация работы виртуальной машины 4

Базовые конструкции и типы Java. 5

1. Примитивные типы. 5

2. Операции и выражения. 7

Базовые конструкции и типы Java. 7

1. Операции и выражения. 7

2. Операторы. 8

Классы и объекты. 9

1. Объявление класса. 9

2. Ссылки на объекты. 9

3. Массивы в Java. 10

4. Наследование для классов. 10

Классы и объекты. 11

1. Абстрактные классы. 11

2. Интерфейсы. 12

Java-приложения. 12

1. Самостоятельные Java-приложения. 13

2. Точка входа для Java-приложение. 13

3. Вывод строк на консоль. 13

4. Компиляция и выполнение Java-приложений 13

Java-апплеты. 14

1. Создание апплета. 14

2. Жизненный цикл апплета. 15

Java-апплеты. 16

1. Жизненный цикл апплета. 16

2. Рисование в апплете. 17

События, определенные в стандартной библиотеке. 18

1. Базовый класс AWTEvent. 18

2. События, связанные с клавиатурой и мышкой. 19

3. События, связанные с компонентами. 20

Стандартные интерфейсы для блоков прослушивания событий. 21

1. Блоки прослушивания для событий от клавиатуры и мыши. 21

2. Блоки прослушивания для стандартных компонентов. 22

Реализация схемы делегирования событий. 22

1. Схема делегирования событий. 22

2. Реализация схемы делегирования для апплета. 23

Компоненты и контейнеры. 23

1. Иерархия классов, производных от java.awt.Component. 23

2. Класс java.awt.­Con­­tainer и производные от него. 26

Менеджеры компоновки. 28

1. Позиционирование и управление размером компонента в окне контейнера. 28

2. Стандартные менеджеры компоновки. 28

Легковесные компоненты Swing. 29

1. Обзор пакета Swing. 29

2. Отличие легковесных компо­нентов Swing от компонентов AWT. 30

3. Рисование для компонентов Swing. 30

4. Обработка событий в Swing. 31

Изменяемые вид и поведение Swing-при­ло­же­ний. 31

1. Понятие изменяемого вида и поведения (PLAF). 31

2. Изменение вида и поведения компонентов во время выполнения программы.      31

Потоки выполнения в Java-приложениях и апплетах. Синхронизация потоков. 32

1. Стандартные потоки выполнения в Java-программах. 33

2. Создание и использование нового потока выполнения. 35

3. Рабочие и фоновые потоки. 36

4. Схема синхронизации потоков в Java. 38

5. Синхронизированные методы и синхронизированные блоки. 39

Компонентная архитектура Java. 41

1. Понятие компонента. 41

2. Свойства компонентов. 42

3. Архитектура Java Beans. 42

Интерфейс BeanInfo. 43

1. Описание компонента с помощью интерфейса BeanInfo. 43

2. События, связанные с компонентом. 45

3. Механизм интроспекции. 46

Название лекции: 47

Архитектура Java 2 ME. 47

1. Назначение J2ME. 47

2. Конфигурации и профили. 47

3. Класс MIDlet и жизненный цикл мидлета. 48

Название лекции: 48

Отображаемые компоненты J2ME. 48

1. Класс Displayable. 49

2. Обзор отображаемых компонентов. 49

3. Класс Form. 50

Высокоуровневые и низкоуровневые события. 50

1. Класс Command. 50

2. Создание и обработка высокоуровневых событий. 51

3. Обработка низкоуровневых событий в классе Canvas. 53

Создание мобильных Java-приложений. 54

1. Обработка низкоуровневых событий в классе Canvas. 54

2. Компиляция и верификация мидлета. 54

3. Дескриптор мидлета. 55

4. Упаковка и загрузка мидлета. 55


Лекция №1


Название лекции:
^ Кросс-платформенные программные системы.
План:

  1. Задачи кросс-платформенного программирования.

  2. Использование виртуальной машины.

  3. Виртуальная машина Java (JVM).

  4. Оптимизация работы виртуальной машины.



^ 1. Задачи кросс-платформенного программирования.

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

^ 2. Использование виртуальной машины.

Возможным решением для кросс-платформенного программирования является исполь­зо­ва­ние виртуальных машин. В таком подходе исходная программа компилируется не в коды конкретной платформы, а в коды некоторой несуществующей, т.е. виртуальной машины. Платформа, для которой создано приложение, обладает интерпретатором или компилятором, переводящим коды виртуальной машины в коды реальной платформы, после чего программа выполняется. Реализовав интерпретаторы или компиляторы виртуальной машины один раз для, например, десяти платформ, можно создавать бесконечно много программ, каждая их которых создается в одном экземпляре, а выполняться может сразу на всех этих платформах.

^ 3. Виртуальная машина Java (JVM).

Интерпретатор виртуальной машины Java разрабатывается разными фирмами. Собственно фирма Sun предлагает виртуальные машины для приложений, различных мобильных устройств. Кроме того виртуальные машины для Java-приложений разрабатывают такие фирмы как IBM, Microsoft (устаревшая версия), Oracle. Виртуальные машины Java для мобильных устройств предлагают все ведущие разработчики мобильных устройств.

^ 4. Оптимизация работы виртуальной машины

Известная проблема интерпретаторов – медленная работа приложений. Для решения этой проблемы используют разные подходы. Широко используемым подходом является компиляция "по месту" (Just In Time – JIT). Очередная команда переводится в коды системы и помещается в кэш. Если выполнение снова попадает на тот же участок программы, например, в операторе цикла, повторная компиляция не производится, но выполняется команда из кэша. Используется также и полная предварительная компиляция программы.


Лекция №2


Название лекции:
^ Базовые конструкции и типы Java.
 План:

  1. Примитивные типы.

  2. Операции и выражения.



1. Примитивные типы.

Для каждого простого встроенного типа в Java существует соответствующий класс, позволяющий создавать объекты, содержащие в себе значение какой-либо переменной или константы этого примитивного типа. Такие классы дают возможность преобразовать, например, целочисленную переменную в объект класса Integer, или, напротив, записать в целочисленную переменную значение объекта класса Integer. Преобразование переменной или константы в объект называют "заворачиванием", а соответствующие классы - классами-оболочками (wrapper-classes).

Для числовых типов определены следующие классы-оболочки:

Тип

Класс

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double


Например,

double d;

d = 1.73;

Double dObj = new Double(d);

Integer iObj = new Integer(-10);


Классы-оболочки содержат статические поля-константы для максимального (MAX_VALUE) и минимального (MIN_VALUE) возможного значений переменных соответствующего типа и, кроме того, набор методов для преобразования чисел в строки и наоборот. Для преобразования значений числовых типов в строки используются методы классов-оболочек с именем typeValue, где вместо type задается имя соответствующего типа. Например,

Byte bObj = new Byte( (byte)65 );

byte b = bObj.byteValue();



b = Byte.MAX_VALUE; // b = 127

// или (менее предпочтительное)

b = bObj.MAX_VALUE;


Объект класса-оболочки можно преобразовать в строку с помощью метода toString, например,

String str = bObj.toString(); // s = "65"

А переменную простого типа с помощью статического метода toString(), например,

str = Byte.toString(b);


В каждом классе-оболочке предусмотрены также перегруженные (статические в отличие от typeValue) методы parseType. Например,

int i = Integer.parseInt(str);


Статический метод toString() в классах Integer и Long имеет также форму с двумя параметрами: первый - значение, преобразуемое в строку и второй, целочисленный, основание системы счисления (значение из диапазона 2  32) в которой будет представлено это значение. Например,

String sBin = Integer.toString((int)b,2);


Классы-оболочки не содержат методов для изменения своих объектов.

Примитивные числовые типы используются для эффективных вычислений.

Стандартные математические функции в Java определены в классе (типе) Math. Они реализованы как статические методы и поэтому могут вызываться даже в случае, если не создан ни один экземпляр класса Math. Помимо арифметических, в Math определены функции min(x,y) и max(x,y). Кроме того, в этом же классе объявлены константы PI и E (основание экспоненты).

Значения углов для тригонометрических функций указываются в радианах. Для удобства работы, в Math определены также функции преобразования значений из радиан в градусы ( toDegrees(x), x - в радианах ) и наоборот ( toRadians(x), x - в градусах ).

Например, значение y=2*cos(x)+3*tn(2*x) для x = e и x = 30º:


double x = Math.E, y1, y2;

y1 = 2*Math.cos(x)+3*Math.tan(2*x);

x = Math.toRadians(30);

y2 = 2* Math.cos(x)+3*Math.tan(2*x);


Функция

Описание

Возвр. значение

sin(x)

x - в радианах

double

cos(x)

x - в радианах

double

tan(x)

x - в радианах

double

asin(x)

арксинус от x, x из [-1.0 .. 1.0]

double

acos(x)

арккосинус от x, x из [-1.0 .. 1.0]

double

atan(x)

арктангенс от x, x из [-pi/2 .. pi/2]

double

exp(x)

e в степени x

double

log(x)

натуральный логарифм от x

double

sqrt(x)

корень квадратный из x

double

pow(x,y)

x в степени y, x - положительное

double

ceil(x)

наименьшее целое >= x

double

floor(x)

наибольшее целое <= x

double

round(x)

floor(x+0.5)

для x типа float - int, для x типа double - long

abs(x)

абсолютная величина x

соответствует типу x



^ 2. Операции и выражения.

Выражение – это конструкция языка, с которой связано некоторое значение – значение выражения. Собственно выражение составляется для того, чтобы рассчитать значение. Тип получаемого значения определяет тип выражения. Выражения строятся из более простых языковых конструкций: констант, имен переменных, вызовов функций, возвращающих значение, знаков операций и круглых скобок. Примеры выражений:

125

x

sin(x)

2. * sin(x) * (x * x – y * y) + .5

В Java присваивание – это операция, поэтому в этих языках программирования возможны и такие выражения:

y = sin(x)

x = y = z = 0

Чаще всего выражения содержат различные операции. Операция - это языковая конструкция более простая, чем выражение, но также возвращающая значение. Каждая операция проводит вычисление значения по собственному алгоритму и с каждой операцией связаны обязательные атрибуты: значок операции, количество аргументов (арность), приоритет и ассоциативность. Значки операций не уникальны – две разные операции могут быть представлены одинаковыми значками, например, операция вычитания x – y и операция смены знака –x. Но тогда у этих операций должно быть разное число аргументов. Сочетание значка и арности однозначно для любой операции и необходимо компилятору для ее распознавания.

Если выражение содержит более одной операции, возникает вопрос о порядке их выполнения. Этот порядок определяется приоритетами и ассоциативностями операций. Если приоритеты операций разные то прежде выполняется более приоритетная а, затем, менее приоритетная операция. Если же операции имеют одинаковые приоритеты, например, две одинаковые операции, то порядок их выполнения определяется ассоциативностью. В Си возможны только лево- и правоассоциативные операции.


Лекция №3


Название лекции:
^ Базовые конструкции и типы Java.
План:

  1. Операции и выражения.

  2. Операторы.



1. Операции и выражения.

Приоритеты операций Java. P – уровень приоритета.

P

Знак операции

Описание

1

. [] ()

++ --


доступ к полю/методу, индексирование, вызов функции, постинкремент, постдекремент

2

++ -- ~ !

– +


преинкремент, предекремент, побитовое отрицание, логическое отрицание, смена знака

3

new (тип)

динамическое выделение памяти, приведение типа

4

* / %

умножение, деление, остаток от целочисленного деления

5

+ –

сложение, вычитание

6

<> >>>

побитовый сдвиг влево, вправо

7

= instanceof

сравнение

8

== !=

сравнение на равенство, неравенство

9

&

побитовое и (AND)

10

^

побитовое исключающее или (XOR)

11

|

побитовое включающее или (OR)

12

&&

конъюнкция (логическое и)

13

||

дизъюнкция (логическое или)

14

?:

операция условия

15

= *= /= %= += –= <>= >>>= &= |= ^=

операции присваивания

16

throw [выражение];

генерация исключения



2. Операторы.

^ Оператор условия.

Оператор условия в Java подобен таковому в Паскале, но, имеются два синтаксических отличия: условное выражение задается обязательно в круглых скобках и отсутствует зарезервированное слово then.

Например,


if( x = 0 ) System.out.println("I квадрант"); // отсутствует then !!!


или


if( x >= 0 ) absx = x;

else absx = -x;

^ Оператор цикла с параметром.

В простейшем случае выглядит так:

for( i=0; i<10; i++ ) System.out.println(""+i);

| | |

| | изменение параметра цикла

| условие продолжения выполнения тела цикла (пока истинно)

начальное значение параметра цикла


В Java нет оператора goto

В Java break метка; continue метка; for в стиле foreach


Лекция №4


Название лекции:
^ Классы и объекты.
План:

  1. Объявление класса.

  2. Ссылки на объекты.

  3. Массивы в Java.

  4. Наследование для классов.



^ 1. Объявление класса.

В Java модификаторы доступа указываются персонально для каждой строки описания полей или методов.


class Complex {

private double real, imag;

public void add(Complex x);

}


В Java есть четыре уровня доступа: открытый (public), защищенный (protected), закрытый (private) доступ на уровне пакета, не имеющий специального ключевого слова. Если модификатор доступа не указан – доступ на уровне пакета.

^ 2. Ссылки на объекты.

Каждый объект в Java создается динамически, т.е. размещается в собственной области кучи и обладает копиями всех полей класса. Доступ к объекту осуществляется через ссылку.


class Complex c1, c2; // объявление ссылок, объекты не создаются

c1 = new Complex(); // создание объекта и связывание его со ссылкой

c2 = new Complex();// создание объекта и связывание его со ссылкой

c1.set(5,10);

c2.se(-10,1);


направление возрастания адресов




real = 5 real = -10

c1 c2

imag = 10 imag = 1


Java поддерживает четыре схемы инициализации объектов:

1) Нулевые значения по умолчанию. Для boolean – значение false, для ссылок – значение null.

2) Явно заданные при объявлении полей (выражения в конструкции инициализации).

3) Конструкторы (как в C++).

4) Блоки инициализации (в том числе статические). Все блоки объединяются компилятором в один, в порядке следования, и помещаются в начало каждого конструктора.

^ 3. Массивы в Java.

Массивы в Java - это объекты. Работа с любым объектом в Java проводится через ссылку на него. Поэтому, для работы с массивом нужно первым делом создать ссылку, затем, с помощью операции new создать новый массив и связать с ним уже имеющуюся ссылку. Далее ссылка используется для доступа к элементам массива подобно тому, как это делается в C++. Например,


int[] a; // ссылка на массив целых переменных

a = new int[5]; // создаем массив из 5 целых переменных и связываем с ним ссылку a


// заносим значения в 0-й элемент массива (индексация элементов всегда с нуля)

a[0] = 125;


Для двумерного массива:

int[][] matrix; // ссылка

matrix = new int[3][4]; // матрица: 3 строки x 4 столбца


matrix[0][0] = 0;

matrix[0][1] = 1;


Можно проводить инициализацию массивов так:


int[] a = { 1,2,3,4,5 }; // создаются массив из 5 целочисленных переменных и ссылка

int[][] b = {

{ 1,2,3 }, // 0-я строка

{ 4,5,6 }, // 1-я строка,

{ 7,8,9 } // 2-я строка

};


^ 4. Наследование для классов.

1) 2)

A




A B




B






C




C

И на схеме 1) и на схеме 2) у класса C два базовых класса A и B. Но первая диаграмма задает единичное, а вторая множественное наследование. На схеме 1) у C только один примой базовый класс – B, а на схеме 2) – два прямых базовых класса A и B. Множественное наследование возникает в случае, если у производного класса более одного прямого базового класса.


В Java для классов возможно только единичное и только открытое наследование.


class Base {}


class Derived extends Base {}


В Java из конструктора производного класса можно вызвать конструктор базового класса с помощью ключевого слова super.


class A {

private int a;

public A(int x) { a = x; }

}


class B extends A {

public B(int x) {

super(x); // только в первой строчке конструктора !

}

}


Лекция №5


Название лекции:
^ Классы и объекты.
План:

  1. Абстрактные классы.

  2. Интерфейсы.
1. Абстрактные классы.

В Java класс становится абстрактным "по объявлению" и может вообще не содержать абстрактных методов. Но если в классе объявлен абстрактный метод, сам класс тоже должен быть объявлен абстрактным.


abstract class Shape2D {

public abstract void show();

}

2. Интерфейсы.

В Java активно используются интерфейсы. Интерфейс можно трактовать как чисто абстрактный класс, лишенный какой-либо реализации. Для интерфейсов разрешено наследование, в том числе и множественное. Т.к. интерфейс – это чистая абстракция, нельзя создавать экземпляры интерфейсов, но можно создать ссылку на интерфейс. Ссылка на интерфейс может быть связана с объектом любого класса, реализующего этот интерфейс, т.е. содержащего реализации всех методов, объявленных в интерфейсе.


interface Comparable {

int compareTo(Object o); // неявно, обязательно имеет атрибуты public abstract

}


class A implements Comparable { // класс, реализующий интерфейс

private int a;

public A(int x) { a = x; }

public A() { this(0); }


int compareTo(Object o) {

A aaa = (A)o;

return a – aaa.a;

}

}


class Test {

public static void sort(Comparable[] arr) { /* может упорядочивать массивы, элементы которых объекты классов, реализующих Comparable */



Comparable tmp;

if( arr[i].compareTo(arr[i+1]) > 0 ) {

tmp = arr[i];

arr[i] = arr[i+1];

arr[i+1] = arr[i];

}



}

}

Интерфейсы содержат описание методов, методы определяют поведение, таким образом, если два класса реализуют один и тот же интерфейс, то они обладают одинаковым поведением.


Лекция №6


Название лекции:
Java-приложения.
План:

  1. Самостоятельные Java-приложения.

  2. Точка входа для Java-приложения.

  3. Вывод строк на консоль.

  4. Компиляция и выполнение Java-приложений.



^ 1. Самостоятельные Java-приложения.

Самостоятельные Java-приложения изначально имели доступ ко всем локальным ресурсам системы, в которой выполняется приложение, а апплет, напротив, не мог обращаться к локальной файловой системе (только к каталогу на сервере из которого он загружался). В дальнейшем система безопасности Java стала базироваться на политиках безопасности, и приложение может быть ограничено в правах также как и апплет. Кроме того, фирма Sun разработала механизм WebStart, позволяющий автоматически загружать по сети и устанавливать Java-приложения.

^ 2. Точка входа для Java-приложение.

В чисто объектно-ориентированных языках, таких как Java и C#, нет внешних функций точкой входа в программу, написанную на таком языке, может быть только статический метод (программа должна начать выполнение, когда еще нет ни одного объекта класса).


class Test {

public static void main(String[] arg) { // точка входа



}

}


В Java произвольное число классов может иметь методы main. Какой из них станет точкой входа в программу, задается при передаче приложения интерпретатору виртуальной машины. Такая возможность используется в целях отладки.

^ 3. Вывод строк на консоль.

Для стандартных потоков вывода определены методы print и println, позволяющие выводить на консоль строки (объекты класса String).


class Test {

public static void main(String[] arg) { // точка входа

System.out.println("Hello");

}

}


Т.к. в классе String определена операция конкатенации для всех примитивных типов, а все классы, будучи наследниками Object обладают методом преобразования объекта в строку toString, эти методы позволяют выводить на консоль в виде строки информацию о любом значении.

^ 4. Компиляция и выполнение Java-приложений

Все инструменты Java SDK содержатся в каталоге /bin/. Удобно прописать в переменной окружения процессора PATH путь к подкаталогу /bin/, чтобы запускать SDK-программы из любого каталога без указания полной спецификации. Кроме того, можно создать переменную окружения CLASSPATH с указанием каталогов, содержащих библиотеки (пакеты) Java API.

Компилятор - это программа javac.exe. Компилятору необходимо явно указывать расширение файла. Например,


javac Hello.java


Если трансляция программы прошла успешно, должен появиться файл Hello.class (если программа Hello.java содержит только один класс).

Для выполнения откомпилированной в коды JVM программы необходимо запустить интерпретатор JVM. В SDK это программа java.exe. Файл программы (class-файл) передается интерпретатору через параметр командной строки. Например,

java Hello


Лекция №7


Название лекции:
Java-апплеты.
План:

  1. Создание апплета.

  2. Жизненный цикл апплета.



^ 1. Создание апплета.

Апплет размещается на html-странице и выполняется в окне браузера. Поэтому для его запуска помимо class-файла нужно создать также и html-файл. В этом файле должен быть тэг APPLET, в котором указывается (как минимум) имя class-файла и размер прямоугольной области, в которой будет размещаться апплет. Java SDK содержит программу appletviewer.exe, предназначенную для отображения на экране апплетов (как возможную альтернативу браузера). Это простой контейнер, используемый для отладки апплетов. Используется он так:


appletviewer hello.html


Пример создания апплета:

1) Файл HelloApplet.java


import java.applet.*;

import java.awt.*;


public class HelloApplet extends Applet {


public void init() {

setBackground(Color.black); // черный цвет фона окна апплета

}

public void paint(Graphics g) {

g.setColor(Color.yellow); // цвет переднего плана

g.drawString("Hello from Applet!",45,90); // рисование строки текста

}

}


2) Файл hello.html







test-dlya-uchitelej-anglijskogo-yazika-test-po-oligofrenopedagogike-4-test-dlya-uchitelej-logopedov-7.html
test-dlya-uchitelej-fizkulturi-kompyuternie-attestacionnie-testi-2005-g-dopolneniya-k-eksperimentalnoj-respublikanskoj.html
test-dlya-uchitelej-himii-test-po-oligofrenopedagogike-4-test-dlya-uchitelej-logopedov-7.html
test-dlya-uchitelej-marijskogo-yazika-test-po-oligofrenopedagogike-4-test-dlya-uchitelej-logopedov-7.html
test-dlya-uchitelej-russkogo-yazika-test-po-oligofrenopedagogike-4-test-dlya-uchitelej-logopedov-7.html
test-dlya-vospitatelej-po-obucheniyu-tatarskomu-yaziku-testirovaniya.html
  • universitet.bystrickaya.ru/statyam-vplot-do-kislorodnogo-golodaniya-stranica-13.html
  • testyi.bystrickaya.ru/63-testovie-zadaniya-dlya-proverki-usvoeniya-znanij-uchebno-metodicheskij-kompleks-specialnost-080505-upravlenie.html
  • uchebnik.bystrickaya.ru/universiteti-i-nauchnie-uchrezhdeniya-stranica-20.html
  • lesson.bystrickaya.ru/osnovi-rinka-cennih-bumag-rol-kliringovoj-palati-na-fondovoj-birzhe.html
  • uchebnik.bystrickaya.ru/veselaya-pila-na-futbolnom-pole-elena-ikonnikova-rasskazala-o-programme-chestnij-sport-24.html
  • kolledzh.bystrickaya.ru/admnstrativno-pravov-normi-vdnosini-chast-2.html
  • doklad.bystrickaya.ru/vibor-kniga-avtobiografii-uchenikov-boga-anna-zubkova-mariya-shtil-olga-stepanec-larisa-vavulina-ekaterina.html
  • university.bystrickaya.ru/formalizaciya-modeli-povedeniya-firmi-nauchnie-zapiski.html
  • literatura.bystrickaya.ru/richard-gerber-vibracionnaya-medicina-novie-vozmozhnosti-dlya-samoisceleniya.html
  • upbringing.bystrickaya.ru/lingvo-kognitivnoe-modelirovanie-relyacionnih-rechevih-aktov-10-02-19-teoriya-yazika-stranica-4.html
  • teacher.bystrickaya.ru/g-i-nesterenko-2010zh-bet-4.html
  • nauka.bystrickaya.ru/ukrasheniya-g-n-beloribkin-zolotarevskoe-poselenie.html
  • report.bystrickaya.ru/informaciya-o-proekte-strukturi-gosudarstvennogo-doklada-o-sostoyanii-prirodnih-resursov-i-ob-ohrane-okruzhayushej-sredi-respubliki-tatarstan-v-2009godu.html
  • znaniya.bystrickaya.ru/referat-po-istorii-informatiki-na-temu.html
  • university.bystrickaya.ru/glava-22-proshanie-i-vstrecha-govorit-set-vechnaya-realnost-dushi-chasti-1-i-chenneling.html
  • school.bystrickaya.ru/kavosi.html
  • knigi.bystrickaya.ru/rossijskaya-federaciya-administraciya-goroda-norilska-krasnoyarskij-kraj-mu-upravlenie-municipalnogo-zakaza.html
  • institut.bystrickaya.ru/teoriya-organizacii-chast-4.html
  • abstract.bystrickaya.ru/211-razvitie-turizma-turkmenistan-nezavisimoe-nejtralnoe-dinamichno-razvivayusheesya-gosudarstvo-v-centralnoaziatskom.html
  • lektsiya.bystrickaya.ru/produktivnie-sposobi-slovoobrazovaniya-v-sovremennoj-anglijskoj-nauchno-tehnicheskoj-terminologii.html
  • composition.bystrickaya.ru/polozhenie-o-proekte-sezon-2012-goda-narodnaya-restorannaya-premiya-zolotaya-vilka.html
  • credit.bystrickaya.ru/poltichna-deologya-osnovn-dejno-poltichn-tech-suchasnost-2.html
  • portfolio.bystrickaya.ru/plan-raboti-mou-morozovskoj-srednej-obsheobrazovatelnoj-shkoli-karasukskogo-rajona-novosibirskoj-oblasti-stranica-6.html
  • control.bystrickaya.ru/dopolnitelnaya-obrazovatelnaya-programma-issledovateli-prirodi-rasschitana-na-3-goda-obucheniya-dlya-detej-10-14-let-avtor-sostavitel-pedagog-dopolnitelnogo-obrazovaniya.html
  • assessments.bystrickaya.ru/diplomnaya-rabota-studentki-pyatogo-kursa-dnevnogo-otdeleniya.html
  • obrazovanie.bystrickaya.ru/primernaya-programma-disciplini-b-07-elektronika-i-shemotehnika.html
  • teacher.bystrickaya.ru/glava-shestaya-filist-georgij-mihajlovich.html
  • institut.bystrickaya.ru/temi-kursovih-rabot-mikroekonomicheskij-analiz-i-statistika-poryadok-obrazovaniya-i-likvidacii-predpriyatiya-vidi-deyatelnosti-predpriyatiya.html
  • letter.bystrickaya.ru/obrazovatelnaya-programma-dopolnitelnogo-obrazovaniya-detej-po-shahmatam-srok-realizacii-11-let.html
  • uchebnik.bystrickaya.ru/v-buryatii-sozdadut-federalnij-centr-po-podgotovke-sbornih-rossii-prezentaciya-universiadi-2013-i-flaga-fisu-proshla-v-himkah-24.html
  • paragraf.bystrickaya.ru/vzaimodejstvie-specialistov-shkolnogo-psihologo-medikopedagogicheskogo-konsiliuma-v-sisteme-korrekcionnorazvivayushego-obucheniya.html
  • gramota.bystrickaya.ru/zemletryasenie-v-tuve-ne-povliyalo-na-tehsostoyanie-bolshinstva-socobektov-hakasii-mchs-informacionnoe-agentstvo-ria-novosti-13032012.html
  • college.bystrickaya.ru/2-kratkoe-soderzhanie-tem.html
  • studies.bystrickaya.ru/kreditovanie-vo-vneshnetorgovoj-deyatelnosti-chast-2.html
  • tasks.bystrickaya.ru/11-vstupitelnie-zayavleniya-russian-original-english-konferenciya-storon-konvencii-o-biologicheskom-raznoobrazii.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.