- •«Технология программирования»
- •Задание
- •Уточнение
- •Разработка программы на 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.2.3 Потоки и их синхронизация
Серверное окно имеет потоковую функцию и каждый компонент (машина) имеет свою потоковую функцию, которая никак не взаимодействует с потоковой функцией серверного окна. Синхронизация необходима между потоками компонентов. Они имеют общий ресурс – участок с дорожными работами и заправку, и не могут занимать его одновременно. Синхронизация осуществляется посредством событий. При занятии «машиной» этого участка, он вызывает событие, обработчик которого оповещает всех остальных «машин», что заправка или участок с дорожными работами занят.
3.2.4 События и их использование
В программе помимо стандартных событий (обработчиков нажатий кнопок) реализовано 3 событий для корректного взаимодействия между компонентами.
public event vyehalDeleagate vyehalEvent; - событие выезда машинки из рова
public static event AddDelegate addEvent;- события добавления удаленного объекта
public static event RemoveDelegate removeEvent;- события удаления удаленного объекта
Обработчики всех событий описано в серверном окне.
3.2.5 Ресурсы
Имеется два ресурса: заправка и участок дорожных работ. Синхронизация осуществляется посредством событий. Благодаря синхронизации два компонента не смогут одновременно занять заправку и участок с дорожными работами. А запись в базу данных происходит при прохождении участка дорожных работ. Следовательно, доступ к базе данных в текущий момент времени получает только один компонент.
3.2.6 Базы данных
В программе в качестве СУБД используется СУБД Access. В базу данных записывается номер машины, время и дата её выезда с дорожных работ.
Вся информация записывается в одну таблицу rov. Её структура и пример заполнения изображены на рисунке 4 и 5.
Рис. 4. Структура таблицы
Рис. 5. Пример заполненной таблицы
3.2.7 Удаленный объект и его интерфейс
Удаленным объектом является экземпляр класса RemoteObject Интерфейс удаленного объекта представлен двумя функциями:
-
void CreateAdd(string name)
-
void Remove(string name)
CreateAdd – создает новый компонент.
Remove – удаляет компонент с определенным номером.
3.2.8 Сервер
Сервер описывается в классе Doroga. В нем, в функции Main() создается серверное окно класса Doroga, ссылка на это окно принимается и регистрируется инфраструктурой удаленного взаимодействия методом RemotingServices.Marshal, регистрируется Http-канал.
3.2.9 Клиент
Клиент описывается в классе Client. В нем регистрируется Http-канал, описывается клиентское графическое окно и создает прокси для хорошо известного объекта, определенного заданным типом и URL. (см. рис. 2). Для управления удаленным объектом клиент имеет возможность вызывать две интерфейсных функции:
1) void add(string name);
-
void remove(string name);
3.3 Диаграмма классов
Диаграмма классов представлена на рисунке 6.
Рис. 6. Диаграмма классов.