Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (ЭТАПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 382

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

На рисунке 16 показана диаграмма активности лифта. Она показывает работу лифта в программе.

Рисунок 16 – Диаграмма лифта

На рисунке 17 показана диаграмма активности пассажира. Диаграмма показывает взаимодействие пассажира c лифтом в программе.

Рисунок 17 – Диаграмма пассажира

На рисунке 18 показана диаграмма активности кнопки. На диаграмме показаны состояния кнопки. При выполнении событий, которые показаны на диаграмме, меняется состояние кнопки.

Рисунок 18 – Диаграмма работы кнопки

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

Рисунок 19 – Проектирование первого этапа

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

Рисунок 20 – Проектирование второго этапа

На третьем этапе проинициализируем класс man. Выведем на форму программы пассажира, номер этажа с пассажиром и номер этажа с лифтом. На рисунке 21 показана диаграмма проектирования третьего этапа.

Рисунок 21 – Проектирование третьего этапа

На четвертом этапе выполним обработку вызова лифта. В переменную времени заложим время на нажатие кнопки. Отобразим процесс действия на форму. На рисунке 22 показана диаграмма проектирования четвертого этапа.

Рисунок 22 – Проектирование четвертого этапа

На пятом этапе выполним обработку движения лифта. В переменную времени заложим время на передвижение лифта. Отобразим процесс действия на форму. На рисунке 23 показана диаграмма проектирования пятого этапа.


Рисунок 23 – Проектирование пятого этапа

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

Рисунок 24 – Проектирование шестого этапа

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

Рисунок 25 – Проектирование седьмого этапа

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

Рисунок 26 – Проектирование восьмого этапа

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

Рисунок 27 – Проектирование девятого этапа

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

Рисунок 28 – Проектирование десятого этапа

На одиннадцатом этапе выполним обработку движения лифта. В переменную времени заложим время на передвижение лифта к заданному этажу. Отобразим процесс действия на форму. На рисунке 29 показана диаграмма проектирования одиннадцатого этапа.

Рисунок 29 – Проектирование одиннадцатого этапа

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


Рисунок 30 – Проектирование двенадцатого этапа

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

Рисунок 31 – Проектирование третьего этапа

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

Рисунок 32 – Проектирование четырнадцатого этапа

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

Рисунок 33 – Проектирование пятнадцатого этапа

На шестнадцатом этапе выполним проверку, сколько человек проехало. Если число будет равно числу необходимых пассажиров, то функция прекращает работу. На рисунке 34 показана диаграмма проектирования шестнадцатого этапа.

Рисунок 34 – Проектирование шестнадцатого этапа

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

      1. ПРОБЛЕМЫ ПРОЕКТИРОВАНИЯ

В процессе проектирования формируется модель программы. Во время формирования модели программы нужно выделить основные свойства системы. Проектирование программной системы решает следующие проблемы:

  1. Выбор платформы для программного средства.
  2. Выбор методов решения задачи.
  3. Разработка алгоритмов для решения задачи, функциональных структур алгоритмов. Проектирование свойств, методов, событий объектов.
  4. Составление общей структуры проекта.

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


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

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

    1. ИСПОЛЬЗОВАНИЕ ЯЗЫКА С++ ДЛЯ РЕАЛИЗАЦИИ

ПРОГРАММНОЙ СИСТЕМЫ

В классе Button описаны методы объекта кнопки. Листинг класса находится в приложении А. В классе Button содержится параметр, который отвечает за состояние кнопки. Методы служат для включения кнопки и выключения её. Также в этом классе содержатся методы для вывода состояния кнопки в консоль. На рисунке 35 показана диаграмма состояния класса button.

Рисунок 35 – Диаграмма класса button

Класс man представляет собой объект пассажира. Листинг класса находится в приложении Б. Класс содержит два атрибута, которые отвечают за этаж с пассажиром и положение пассажира в лифте. Методы класса отвечают за положение пассажира по отношению к лифту. А также для вывода информации пассажира на экран. На рисунке 36 показана диаграмма состояния класса man.

Рисунок 36 – Диаграмма класса man

Класс elevator содержит методы и атрибуты, необходимые для моделирования лифта. Листинг класса находится в приложении В. В классе содержатся атрибуты класса button для инициализации кнопки в лифте, два атрибута, которые показывают состояния дверей и положения лифта. Объект лифт содержит методы для спуска, подъема, открытия дверей, закрытия дверей, вызова лифта. Также класс имеет методы для передвижения лифта к заданному этажу, переключения кнопки в лифте, отображения состояния кнопки лифта. На рисунке 37 показана диаграмма состояния класса elevator.


Рисунок 37 – Диаграмма класса elevator

Класс MyForm является основным в программе. Листинг класса находится в приложении Г. В этом классе содержится объявление и инициализация компонентов формы, подключение заголовочных файлов с классами man, button, elevator. При нажатии на кнопку «Запуск» запускается отдельный поток для выполнения основной функции. В функции main происходит инициализация нужных классов, а также происходит выполнение основного кода программы, процесс которого можно увидеть на форме программы. В программе используются делегаты для взаимодействия компонентов из потока.

Рассмотрим работу класса MyForm более подробно. Нажатие на кнопку запуска приводит к работе главную функцию программы. Нажатие на кнопку запуска активирует событие OnClick. При вызове OnClick происходит сброс времени на форме. Затем идет считывание полей ввода в переменные и запуск функции, которая запускает процесс моделирования работы лифта. При считывании поля происходит проверка: если оно пустое, то значение переменной будет равно 1. Запуск функции сделан через компонент BackgroundWorker. Он позволяет запускать функцию в отдельном потоке. На рисунке 38 изображена диаграмма алгоритма работы события OnClick кнопки запуска.

Рисунок 38 – Диаграмма алгоритма работы события OnClick

В функции моделирования происходит инициализация классов button, elevator, man. После этого происходит вывод количества этажей и пассажиров, так как они могли быть не введены. Вывод данных осуществлен через делегатов. Они меняют значение компонента формы в функции, которая запущенна в отдельном потоке. Функции NumberofFloor, SumPassenger (приложение Г) принимают число, которое нужно изменить на форме программы. Функции NumberofFloor (приложение Г) изменяет количество этажей в текстовом, а функция SumPassenger (приложение Г) изменяет значение этажей в текстовом поле. Далее идет установка метки. Возвращение к метке происходит, если проехали не все пассажиры. Затем происходит инициализация класса man. С помощью делегата модель человека появляется на форме. Так как человек приходит и уходит, то функция, которая отвечает за модель человека, принимает два параметра. Если параметр равен одному, то человек появляется на форме, если параметр не равен одному, то он исчезает. Диаграмма функции PassengerStatus (приложение Г) показана на рисунке 39.

Рисунок 39 – Диаграмма функции PassengerStatus