- •Основы объектно-ориентированного программирования
- •Оглавление
- •Тема 1. Введение в предмет и содержание дисциплины 4
- •Теоретический раздел
- •Тема 1. Введение в предмет и содержание дисциплины
- •Особенности Java
- •Комментарии
- •Ключевые слова
- •Литералы
- •Установка Java в переменных окружениях
- •Некоторые из особенностей элементов Java
- •Символы, строки и идентификаторы
- •Разделители
- •Операции
- •Основные приложения Java
- •Метод update()
- •Требование перерисовки
- •Тема 3. Введение в классы java. Методы и классы. Классы и наследование в java. Пакеты и интерфейсы Введение в классы Java
- •Синтаксис определения экземпляра класса
- •Модификаторы класса
- •Конструкторы
- •Ограничение доступа к элементам класса
- •Статические переменные и методы
- •Абстрактные методы
- •Методы final
- •Область видимости переменных
- •Переменные this и super
- •Тема 4. Основы ввода/вывода. Работа со строковыми данными Работа со строками
- •Потоки ввода-вывода информации
- •Байтовые и символьные потоки
- •Классы байтовых потоков
- •Классы символьных потоков
- •Предопределённые потоки
- •Тема 5. Работа с файлами Классы FileInputStream и FileOutputStream
- •Класс File
- •Класс RandomAccessFile
- •Тема 6. Методы и средства обработки исключений Методы и средства обработки исключений
- •Тема 7. Разработка апплетов, работа с графикой
- •Пакет awt
- •Класс Applet
- •Инициализация и завершение апплета
- •Запуск апплетов
- •Рисование линий в апплете
- •Рисование прямоугольников в апплете
- •Рисование эллипсов и кругов в апплете
- •Рисование дуг в апплете
- •Работа с цветом
- •Тема 8. Многопоточное программирование Интерфейсы в Java
- •Многопоточное программирование
- •Организация потоков
- •Создание нового потока
- •Тема 9. Разработка пользовательского интерфейса с использованием фреймов, элементов управления
- •События
- •Классы событий
- •Класс ActionEvent
- •Элементы-источники событий
- •Интерфейсы прослушивания событий
- •Классы пакета awt: Component, Window, Frame
- •Элементы управления Label, Button, Checkbox, Choice, List, Scrollbar
- •Элементы управления TextField и TextArea
- •Диалоговые окна
- •Контроль знаний Индивидуальная практическая работа № 1. «Объекты и классы»
- •Индивидульная практическая работа № 2. «Наследование и скрытие данных. Абстрактные классы и интерфейсы»
- •Контрольная работа № 1. «Работа с файлами»
- •Контрольная работа № 2. «Разработка пользовательского интерфейса с использованием фреймов, элементов управления»
- •Список использованных источников
Тема 8. Многопоточное программирование Интерфейсы в Java
Интерфейс – это ссылочный тип, членами которого являются константы и абстрактные методы. Этот тип не может быть реализован в виде экземпляра объекта, но его могут реализовывать классы, обеспечивая реализацию его абстрактных методов. Иногда говорят, что интерфейс – это Java-вариант множественного наследования, запрещенного в Java.
Формальное определение интерфейса:
модификатор_доступа имя_интерфейса{
тип_возвращ._значения имя_метода1(список параметров);
тип_возвращ._значения имя_метода2(список параметров);
…….
тип_возвращ._значения имя_методаN(список параметров);
тип имя_final_переменной1 = значение;
тип имя_final_переменной2 = значение;
}
Интерфейсы имеют следующие ограничения:
модификатор доступа может быть только public или не использоваться (тогда по умолчанию интерфейс доступен только членам пакета, в котором он объявлен);
методы могут быть только абстрактными;
компоненты-данные – это final;
сами интерфейсы не могут иметь реализации методов;
Реализующие данный интерфейс классы отвечают за содержательную реализацию методов интерфейса, то есть в реализующих классах необходимо определить или реализовать каждый метод интерфейса.
Назначение интерфейса: они позволяют очертить определенным образом некоторые постоянные характеристики и собственно интерфейс управления будущими объектами, оставляя определение тела методов реализующим классам. Можно создавать свои интерфейсы или использовать уже предопределенные.
Пример:
//объявление интерфейса
public interface My_int {
static final String str = “Test of interface”;
static final String str = “ Проба”;
abstract public int My_met(int switch);
}
// реализация интерфейса
class TestInt implements My_int
{ public int My_met(int switch);
{if (switch = 0)
return(0);
else return(switch);
}
public void f1() {…} //класс, реализующий интерфейс может
//создавать и другие методы
}
Многопоточное программирование
Многопоточность – это реализация процесса на основе параллельно выполняющихся потоков.
Потоки используют одно и то же адресное пространство. Потоки разделяют процессорное время. В многопоточном режиме блокировка одного потока не приводит к остановке всей программы.
Потокам в Java назначается приоритет, определяющий порядок обработки одного потока относительно другого (то есть порядок переключения процессора от выполняющегося потока к следующему).
Правила переключения между потоками:
добровольный отказ от управления (кооперация) – это явный переход в режим ожидания или передача управления самому высокоприоритетному потоку, готовому к выполнению, но при этом исходный поток блокируется;
при многозадачности поток может быть приостановлен более приоритетным потоком. В этом случае выполнение низкоприоритетного потока приостанавливается, независимо от того, какие действия он выполняет, более высокоприоритетным потоком.
Лекция 9
Распределение процессора для потоков с одинаковым приоритетом может быть реализовано, напр., квантованием времени использования процессора, добровольной передачей управления либо другими более сложными стратегиями.
Так как многопоточность предполагает асинхронное выполнение потоков, то в каких-то точках может понадобиться синхронизация потоков. Синхронизация реализуется с помощью семафоров.
Семафор – это механизм управления связью между процессами. Это блок, который может использоваться только одним потоком. В Java нет определенного класса объектов типа семафор. Семафоры еще называют мониторами.
Объект потока в Java располагает собственным неявным семафором, который вводится автоматически, как только поток управления начинает выполнять синхронизированный метод. Тогда никакой другой поток не может вызвать данный метод до его освобождения. Взаимодействие потоков в Javaреализуется через вызов предопределенных методов.
Некоторые методы класса Thread() (класс, который используется для создания потоков):
getName() – получить имя потока;
getPriority() – получить приоритет потока;
isAlive() – определить, выполняется ли еще поток;
join() – ждать завершение потока;
run() – указать точку входа в поток;
sleep() – остановить поток на определенный период времени;
start() – запустить поток с помощью вызова его метода run();
