- •«Технология программирования»
- •Задание
- •Уточнение
- •Разработка программы на c#
- •Программа с точки зрения пользователя. Интерфейс и инструкция.
- •3.2 Программа с точки зрения программиста
- •3.2.1 Все объекты программы и их взаимосвязь
- •3.2.2 Классы
- •1) Класс Car.
- •3.2.3 Потоки и их синхронизация
- •3.2.4 События и их использование
- •3.2.5 Ресурсы
- •3.2.6 Базы данных
- •3.2.7 Удаленный объект и его интерфейс
- •3.2.8 Сервер
- •3.2.9 Клиент
- •3.3 Диаграмма классов
- •3.4 Поэтапная разработка программы
- •3.4.1 Первый этап
- •3.4.2 Второй этап
- •3.4.3 Третий этап
- •3.5 Проблемы, возникшие при разработке проекта
- •4. Разработка программы на языке Java
- •4.1 Отличие от языка c#
- •4.1.1 События
- •4.1.2 Потоки
- •4.1.3 Другие отличия
- •4.2 Проблемы возникшие при разработке
- •5. Используемая литература
- •Приложение 1. Текст программы на языке c#
- •Приложение 2. Текст программы на языке Java
3.5 Проблемы, возникшие при разработке проекта
Поэтапная разработка программы позволила быстро разработать её и отладить. Проблем не было.
4. Разработка программы на языке Java
4.1 Отличие от языка c#
4.1.1 События
Событие (event) в языке C# – специальный делегат, который привязан к объекту. Чрезвычайно важно знать, что в отличие от делегата, событие нельзя выполнять вне объекта
Событие (event) в языке Java можно представить явным делегированием обработчика из объекта-приемника в объект-источник. При этом удобно воспользоваться интерфейсом, поскольку использование интерфейсной ссылки позволяет ссылаться к разнотипным объектам (приемникам), классы которых наследуют один и тот же интерфейс, связанный с этим событием. Класс источника должен иметь конструктор с параметром - интерфейсной ссылкой. Класс каждого приёмника этого события обязан наследовать этот интерфейс, включающий делегированный обработчик события. Генерирование события источником сводится к вызову в объекте-источнике обработчика приёмника, ссылка на который передаётся в источник через интерфейсную ссылку в конструкторе.
В нашей программе, написанной на языке Java, объявляется интерфейс, в котором объявляется все обработчики событий. Затем класс-приемник наследует интерфейс. Объект класса-источника вызывает обработчики через ссылку интерфейс.
4.1.2 Потоки
Под потоком (thread) понимают выполняющийся программный код. Выполнение процесса начинается с выполнения основного потока (primary thread), представленного главной функцией main или WinMain, или DllMain. Обычно основной поток реализует диалог с пользователем. Основной поток инициирует, выполняет и завершает работу процесса. Если основной поток создаёт окно, то его называют основным оконным потоком. Обычно с окном связан цикл обработки сообщений операционной системы.
Итак, в языке C# класс Thread используется для создания и управления потоками, а тип ThreadStart - для создания делегата потока, инкапсулирующего потоковую функцию. При создании экземпляра потока конструктору класса Thread передаётся в качестве аргумента объект делегата потока, при этом возможны два варианта перегруженного конструктора делегата: 1) указывается статическая потоковая функция некоторого класса или 2) потоковая функция конкретного объекта определённого класса. Функции Start, Suspend, Resume и Abort класса Thread обеспечивают запуск, приостановку и возобновление функционирования или уничтожение потокового объекта. Следует сказать, что необходима осторожность при применении функций Suspend и Resume , поскольку они способствуют дедлоку – тупиковой ситуации, вызывающей взаимную остановку выполнения потоков из-за не освобождения некоторого разделяемого ресурса. В этом случае выполняющаяся программа “зависает”.
В языке же Java для создания и управления потоками используется класс Thread и интерфейс Runnable. Интерфейс Runnable позволяет передавать функцию run() в конструктор Thread при создании потоковых объектов
Windows-приложение (a Windows application) – программа, выполняющаяся под управлением операционной системы Windows