Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода. "Производственная линия с пунктами технического контроля"

Создание программного обеспечения - системы имитационного моделирования на тему "Производственная линия с пунктами технического контроля". Описание входных и выходных данных. Объектно-ориентированное программирование. Диаграммы модулей и процессов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 09.01.2014
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

Донецкий национальный технический университет

Институт информатики и искусственного интеллекта

Д050201.5.01.10/014. КП

Кафедра программного обеспечения интеллектуальных систем

Курсовой проект

по дисциплине: "Объектно-ориентированное программирование"

Тема: "Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода.

"Производственная линия с пунктами технического контроля"

Руководители:

ст. пр. С.П. Некрашевич

асс. Е.В. Курило

Разработал:

ст. гр. КСУ 10 Киншов А.В.

Донецк - 2011

Задание на курсовой проект

по дисциплине: "Объектно-ориентированное программирование"

Студенту Киншову Александру Владимировичу группы КСУ-10

Тема проекта Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода. Производственная линия с пунктами технического контроля".

Исходные данные к проекту Основные положения ОО методологии разработки ПО, проведения этапов ОО анализа, ОО проектирования, ОО программирования. Описание предметной области.

Перечень искомых результатов Словарь ПрО. ОО словарь ПрО. Диаграммы классов, объектов, состояний и переходов, взаимодействия, модулей, процессов. Протоколы классов. Результаты моделирования: время, затрачиваемое на обслуживание каждого телевизора на последнем этапе производства; загрузка контролеров; загрузка настройщика. Рекомендуемая литература 1. Шлеер С. Объектно-ориентированный анализ: моделирование мира в состояниях / Шлеер С., Меллор С. - К.: Диалектика, 1993. - 240 с.2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Гради Буч. - М.: Невский проспект, 2000. - 2-е изд. - 359 с.3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Гради Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. - М.: Вильямс, 2008. - 3-е изд. - 720 с.4. Страуструп Б. Язык программирования C++. Специальное издание / Бьерн Страуструп. - М.: Бином, 2008. - 3-е изд. - 1054 с.

Дата выдачи задания 05.09.2011

Дата защиты проекта 19.12.2011

Руководители ст. пр. С.П. Некрашев и асс. Е.В. Курило

Разработчик Киншов А.В.

Реферат

Пояснительная записка: __ стр., __ рис., __таблиц, __ экранные формы, __ источников.

Объектом разработки является программный продукт, имитирующий производственную линию с пунктами технического контроля.

Целью данной курсовой работы является создание программного обеспечения - системы имитационного моделирования на тему "Производственная линия с пунктами технического контроля".

В ходе решения поставленной задачи были проведены OOA, OOD и OOP предметной области с помощью метода Аббота и диаграмм Гради Буча.

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

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

Перечень условных обозначений, символов, единиц, сокращений и терминов

OOA - объектно-ориентированный анализ

OOD - объектно-ориентированное проектирование

OOP - объектно-ориентированное программирование

ПО - программное обеспечение

ПП - программный продукт

CRC - Class-Responsibilities-Collaborators

ПрО - Предметная область

Содержание

  • Перечень условных обозначений, символов, единиц, сокращений и терминов
  • Введение
  • 1. Постановка задачи
  • 1.1 Описание предметной области
  • 1.2 Цели и задачи
  • 1.3 Выбор средств
  • 2. Выбор метода решения
  • 2.1 Теоретические сведения
  • 2.2 Описание входных и выходных данных
  • 3. Метод решения
  • 3.1 Объектно-ориентированный анализ
  • 3.2 Объектно-ориентированное проектирование
  • 3.2.1 Диаграмма классов
  • 3.2.2 Диаграмма объектов
  • 3.2.3 Диаграмма состояний и переходов
  • 3.2.4 Диаграмма взаимодействия
  • 3.3 Объектно-ориентированное программирование
  • 3.3.1Диаграмма модулей
  • 3.3.2 Диаграмма процессов
  • 3.3.3 Протоколы классов
  • Выводы
  • Список литературы
  • Приложения

Введение

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

Актуальность данного решения вполне очевидна, создания симулятора с помощью ПО, позволяет не просто получить статистические данные рассматриваемого объекта, но и существенно сэкономить как время, так и ресурсы, которые могли бы быть потрачены для создания материальной модели.

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

Задачами данного курсового проекта являются: проведение ООА предметной области; проведение ООП разрабатываемой системы; реализация программы с применением ООП; проведение имитационного моделирования и сбор статистических данных.

При моделировании работы производственной линии с пунктами конечного контроля нас интересует главным образом статистика. Данный курсовой проект показывает на примере как работает ООП. Проект моделирует производственную линию с пунктами технического контроля с участием реальных объектов, то есть это статическая модель, реализованная в программном коде.

1. Постановка задачи

1.1 Описание предметной области

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

Время между поступлениями телевизоров в пункт контроля для заключительной проверки распределено равномерно на интервале 3.5-7.5 мин. В пункте заключительной проверки параллельно работают два контролера. Время, необходимое на проверку одного телевизора, распределено равномерно на интервале 6-12 мин. В среднем 85% телевизоров проходят проверку успешно с первого предъявления и направляются на упаковку. Остальные 15% возвращаются в пункт настройки, обслуживаемый одним рабочим. Время настройки распределено равномерно на интервале 20-40 мин.

Выделим главные сущности в заданной работе. Для заданной предметной области сущности таковы: Конвейер (производственная линия), Очередь контроля, Очередь настройки, Контролер 1, Контролер 2, Настройщик, TV (телевизор).

Конвейер характеризуется текущим состоянием: занят или свободен. Занят - означает, что в данный момент на конвейере выполняет работа. Свободен - означает, что производственная линия сейчас пуста и работа не выполняется.

Очередь характеризуется текущим количеством телевизоров в очереди.

Контролер характеризуется текущим состоянием: занят или свободен, временем конца проверки и проверяемым TV.

Настройщик характеризуется текущим состоянием: занят или свободен, временем конца настройки и TV, которые в данный момент настраивается.

TV, обслуживаемый на конвейере, можно охарактеризовать текущим положением на Конвейере (находится в очереди контроля; очереди настройки; проверяется у контролера 1, 2; настраивается у настройщика), а также моментом поступления на конвейер, моментом начала проверки и настройки, временем проверки у контролера, временем настройки у настройщика.

1.2 Цели и задачи

Объектом разработки данной работы является программное обеспечение системы имитационного моделирования производственной линии с пунктами технического контроля. Целью является разработка программного обеспечения системы имитационного моделирования и получения следующих статистических данных:

- время, затрачиваемое на обслуживание каждого телевизора на последнем этапе производства;

- загрузка контролеров;

- загрузка настройщика.

Для достижения поставленной цели необходимо решить следующие задачи.

1. Проведение объектно-ориентированного анализа предметной области;

2. Проведение объектно-ориентированного проектирования разрабатываемой системы;

объектное ориентированное программирование модуль

3. Реализация программы с применением объектно-ориентированного программирования;

4. Проведение имитационного моделирования и сбор статистических данных.

1.3 Выбор средств

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

В процессе объектно-ориентированного анализа были использованы методы Аббота и CRC карточек. Данные методы как нельзя лучше подходят для выбора объектов и действий, которые в будущем станут операциями и классами нашей программы. Использование данных инструментов ООА существенно упрощают разработку структуры программы, и дают представление из каких модулей будет состоять разрабатываемое ПО.

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

2. Выбор метода решения

2.1 Теоретические сведения

Технология программирования включает в себя совокупность методов и средств разработки ПО и порядок применения этих методов и средств.

В основе ООП лежат следующие положения.

1. ООА. Метод анализа, согласно которому требования рассматриваются с точки зрения классов и объектов, составляющих словарь предметной области.

2. ОО проектирование. Методология проектирования, соединяющая процесс объектно-ориентированной декомпозиции и систему обозначений для представления логической и физической, статической и динамической моделей проектируемой системы.

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

4. Класс. Множество объектов с общей структурой и поведением. Термины "класс" и "тип" в большинстве случаев (но не всегда) взаимозаменяемы.

5. Объект. Нечто, чем можно оперировать. Объект имеет состояние, поведение и идентичность.

6. Состояние. Совокупный результат поведения объекта: одно из стабильных условий, в которых объект может существовать, охарактеризованных количественно; в любой конкретный момент времени состояние объекта включает в себя перечень (обычно, статический) свойств объекта и текущие значения (обычно, динамические) этих свойств.

7. Поведение. Действия и реакции объекта, выраженные в терминах передачи сообщений и изменения состояния; видимая извне и воспроизводимая активность объекта.

8. Протокол. Способы, которыми объекты могут действовать и реагировать; полное статическое и динамическое представление объекта; протокол объекта определяет допустимое поведение объекта.

9. Объектная модель. Совокупность основополагающих принципов, лежащих в основе объектно-ориентированного проектирования; парадигма программирования, основанная на принципах абстрагирования, инкапсуляции, модульности, иерархичности, типизации, параллелизма и устойчивости.

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

11. Наследование. Отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование) классов. Наследование вводит иерархию "общее/частное" в которой подкласс наследует от одного или нескольких более общих суперклассов. Подклассы обычно дополняют или переопределяют унаследованную структуру и поведение.

12. Полиморфизм. Положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект, обозначаемый полиморфным именем, может по-своему реагировать на некий общий набор операций [1].

2.2 Описание входных и выходных данных

Входные данные:

- шаг времени (тип: float);

- время моделирования (тип: float);

- максимальное значение очереди контроллера (тип: float).

Выходные данные (результаты моделирования):

- статистика динамики телевизоров на производственной линии;

- загрузка контролеров;

- загрузка настройщика.

3. Метод решения

3.1 Объектно-ориентированный анализ

Проведем объектно-ориентированный анализ предметной области, для этого рассмотрим основные сущности в нашей предметной области.

Используем метод Аббота, который заключается в словесном анализе предметной области и получении её словаря и объектно-ориентированного словаря. Нам нужно описать задачу или ее часть на простом языке, а потом подчеркнуть существительные и глаголы. Существительные - кандидаты на роль классов, а глаголы могут стать именами операций [1].

Выделим в заданной предметной области существительные, прилагательные и глаголы. Результаты представлены в таблице 3.1.

Таблица 3.1 - Словарь понятий предметной области

Существительное

Глагол

Прочее

Конвейер

Контроллер

Настройщик

Очередь

Телевизор

Время

Процесс

Работа

Настраивать

Проверять

Размещать

Отправлять

Возвращать

Поступать

Занятый

Свободный

Настроенный

Пустой

Далее создадим объектно-ориентированный словарь, выделив сущности, состояния, и функции. Результаты представлены в таблице 3.2.

Таблица 3.2 - ОО словарь предметной области

Сущность /Сущность

Свойства/Состояние

Метод/Функция/Поведение

Конвейер

Время работы;

Количество,

прошедших проверку TV;

Контроллер, Настройщик,

Очередь контроля, Очередь настройки;

Хранятся все TV;

Поместить следующее изделие;

Поместить TV на проверку;

Поместить следующий TV на настройку;

Начать процесс моделирования;

Контролер

Состояние Контролера;

Момент начала проверки TV;

Обрабатываемый TV;

Суммарное время работы;

Проверить, не наступил ли момент конца настройки;

Поместить TV из очереди;

Убрать TV;

Показать состояние;

Поместить TV на настройку;

Настройщик

Состояние Настройщика;

Момент начала настройки TV;

Обрабатываемый TV;

Суммарное время работы;

Проверить, не наступил, ли момент конца настройки;

Поместить TV из очереди;

Послать TV на проверку;

Показать состояние;

Очередь

TV, находящиеся в очереди;

Проверить, пуста ли очередь;

Убрать TV из очереди (первый);

Поместить следующее изделие;

TV

Время поступления:

Текущее состояние (настроен не настроен);

Поместить на контроль;

Показать состояние;

Задать настройку;

Одним из методов при анализе и проектировании задач есть CRC-карточки - удобный способ для определения классов и их взаимодействия. Использование малых карточек позволяет минимизировать сложность дизайна.

CRC-карты акцентируют внимание дизайнера на сущности класса и скрывают от него детали, рассмотрение которых на данном этапе будет контрпродуктивным. CRC-карты также заставляют дизайнера воздержаться от назначения классу слишком многих обязанностей [2].

CRC-карточки для классов представлены в таблицах 3.3 - 3.5.

Таблица 3.3 - CRC-карточка класса телевизор

TV

Обрабатывается на Конвейере.

Состояния:

в очереди.

на проверке;

Контролер

Настройщик

Очередь контроля

Очередь настройки

Конвейер

Таблица 3.4 - CRC-карточка класса очередь

Очередь

Часть Конвейера, содержит ожидающие проверки TV.

Состояния:

заполнена;

пуста.

Действия:

извлечение TV

добавление TV

Конвейер

TV

Таблица 3.5 - CRC-карточка класса контролер

Контролер

Часть Конвейера, контролирует качество работы TV.

Состояния:

занят;

не занят;

Конвейер

TV

Очередь контроля

Очередь настройки

Таблица 3.6 - CRC-карточка класса настройщик

Настройщик

Является частью Конвейера. Настраивает TV.

Состояния:

занят;

не занят;

Конвейер

TV

Очередь настройки

Очередь контроля

Таблица 3.7 - CRC-карточка класса конвейер

Конвейер

Генерирует TV.

Состояния:

работает;

не работает;

Действия:

генерирует

Контролер

Очередь контроля

TV

Настройщик

Очередь настройки

3.2 Объектно-ориентированное проектирование

Объектно-ориентированное проектирование - это часть объектно-ориентированной методологии, которая предоставляет возможность программистам оперировать понятием "объект", нежели понятием "процедура" при разработке своего кода. Объекты содержат инкапсулированные данные и процедуры, сгруппированные вместе, отображая сущность объекта. "Интерфейс объекта", описывает взаимодействие с объектом, то, как он определен. Программа, полученная при реализации объектно-ориентированного исходного кода, описывает взаимодействие этих объектов [3].

В данном курсовом проекте ОО проектирование будет проводиться при помощи диаграмм Буча. Для демонстрации взаимодействия элементов программы между собой, будут изображены следующие виды диаграмм: диаграмма классов, диаграмма объектов, диаграмма состояний и переходов, диаграмма взаимодействия, диаграмма модулей, диаграмма процессов.

3.2.1 Диаграмма классов

Диаграмма классов показывает классы и их отношения, тем самым представляя логический аспект проекта. Отдельная диаграмма классов представляет определенный ракурс структуры классов. На стадии анализа мы используем диаграммы классов, чтобы выделить общие роли и обязанности сущностей, обеспечивающих требуемое поведение системы. На стадии проектирования мы пользуемся диаграммой классов, чтобы передать структуру классов, формирующих архитектуру системы [1].

Диаграмма классов для заданной предметной области представлена на рисунке 3.1.

Рисунок 3.1 - Диаграмма классов

3.2.2 Диаграмма объектов

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

Диаграмма объектов для данной предметной представлена на рисунке 3.2

Рисунок 3.2 - Диаграмма объектов

3.2.3 Диаграмма состояний и переходов

Диаграмма состояний и переходов показывает: пространство состояний данного класса; события, которые влекут переход из одного состояний в другое; действия, которые происходят при изменении состояния.

Выделим состояния конвейера. Для этого определим признаки, по которым эти состояния отличаются. Такими признаками являются: состояния очередей (0 - очередь пуста; 1 - очередь не пуста), состояния контролеров и настройщиков (0 - не работает; 1 - работает). Вышеперечисленных признаков 14, обозначим их номерами. Список состояний приведен в таблице 3.1.

Таблица 3.1 - Состояний конвейера

Очередь контроля

Контролер 1

Контролер 2

Очередь настройки

Настройщик

Характеристика

1

0

0

0

0

0

Конвейер пуст

2

1

0

0

0

0

Ничего не работает, очередь контроля не пуста

3

1

1

0

0

0

То же, что и во 2ом, только Контролер 1 занят

4

1

1

1

0

0

То же, что и 3ем, только Контролер 2 занят

5

1

1

1

1

0

Очереди не пусты, Контролеры заняты, настройщик свободен

6

0

1

1

1

1

Очередь контроля пуста, Очередь настройки не пуста, все заняты

7

0

0

1

1

1

То же, что и в 6, только Контролер1 свободен

8

0

0

0

1

1

Очередь контроля пуста, контролеры свободны, очередь настройки не пуста, настройщик занят

9

0

0

0

0

1

Настройщик занят, остальные свободны, очереди пусты

10

0

1

1

0

0

Все пусто, Контролер 1 и 2 заняты, настройщик свободен

11

0

1

1

1

0

Очередь контроля и Настройщик пусты, остальные заняты

12

0

1

1

0

1

Очереди пусты, Контролеры и настройщик заняты

13

1

1

1

1

1

Очереди не пусты, все работают

14

0

0

0

1

0

Все пусто, кроме Очереди настройки

Переходы между этими состояниями осуществляются при наступлении одного из следующих событий:

- поступление на конвейер нового телевизора (н);

- телевизор прошел проверку у контролера (1);

- телевизор прошел настройку у настройщика (2).

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

Рисунок 3.3 - Диаграмма состояний и переходов

3.2.4 Диаграмма взаимодействия

Диаграмма взаимодействия есть просто другой способ представления диаграммы объектов. Преимущество диаграммы взаимодействия в том, что на ней легче читается порядок посылки сообщений. Диаграмма взаимодействия изображена на рисунке 3.4.

3.3 Объектно-ориентированное программирование

Объектно-ориентированное программирование проведено с помощью диаграмм модулей и процессов. Также, в данном разделе описаны протоколы классов.

Рисунок 3.4 - Диаграмма взаимодействия

3.3.1Диаграмма модулей

Диаграмма модулей показывает распределение классов и объектов по модулю в физическом проектировании системы.

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

Диаграмма модулей системы изображена на рисунке 3.5.

Рисунок 3.5 - Диаграмма модулей

3.3.2 Диаграмма процессов

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

Рисунок 3.6 - Диаграмма процессов

3.3.3 Протоколы классов

В результате проведения объектно-ориентированный анализа предметной области, были выделены основные сущности данной работы. Такими сущностями являются Телевизор, Контроллер, Настройщик, Очередь, Конвейер. Каждая из этих сущностей представляет собой класс объектов.

Протокол класса TV.

class TV

{

private:

float tv_generation_next_time; // время поступления нового TV

public:

TV (); // конструктор по умолчанию

void Process (Queue& queue1, Queue& queue2); // функция заполнения очередей

};

Протокол класса Контроллер.

class Controler

{

private:

float TV_next_time; // значение задержки

public:

Controler (); // конструктор по умолчанию

void Process (Queue& q,Queue& q_ad); // процесс прохождениятелевизором контроля

void Delay (float dt); // задержка

};

Протокол класса Настройщик.

class Adjuster

{

private:

float TV_next_time; // значение задержки

public:

Adjuster (); // конструктор по умолчанию

void Process (Queue& q_ad);

float C=frand (20,40); // среднее время настройки

};

Протокол класса Очередь.

class Queue

{

private:

size_t TV_count; // количество TV

size_t id; // идентификатор TV

public:

Queue (size_t in_id): id (in_id) // конструктор по умолчанию

size_t Id () // идентификатор

void AddTV (); // Добавление телевизора на проверку

void RemoveTV (); // Извлечение TV

bool IsFull () // проверка на переполнение

bool IsEmpty () // проверка на пустоту

};

Протокол класса Конвейер.

class Conveyor

{

private:

TV tv_generator; // генератор TV

Queue queue1; // очередь 1

Queue queue2; // очередь 2

Queue queue3; // очередь 3

Controler controler1; // контроллер 1

Controler controler2; // контроллер 2

Adjuster adjuster1; // настройщик

public:

Conveyor (); // заполнение очередей

void Process (); // процесс работы конвеера

};

Выводы

В ходе выполнения курсовой работы был проведен объектно-ориентированный анализ предметной области, в ходе которого были выделены основные сущности. На основе выделенных сущностей были спроектированы и реализованы классы.

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

После тестирования программного продукта сделано заключение, что программный продукт в целом удовлетворяет требованиям, предъявленным в техническом задании.

Список литературы

1. Г. Буч. Объектно-ориентированный анализ и проектирование. М. 1992.

2. CRC-карта, режим доступа: http://ru. wikipedia.org/wiki/CRC-карта

3. Объектно-ориентированное проектирование, режим доступа: http://ru. wikipedia.org/wiki/ Объектно-ориентированное_проектирование

4. С.П. Некрашевич, О.О. Савельев. Методические указания к выполнению курсового проектирования по дисциплине "Объектно-ориентированное программирование". - Донецк: ГУИ и ИИ, 2010. - 84 с.

5. Г. Шилдт. Самоучитель С++.3-е издание. - СПб.: БВХ-Петербург, 2003. - 688 с.

6. С. Мейерс. Наиболее эффективное использование STL - М.: ДМК Пресс, 2002. - 300 с.

7. Т. Павловская. С/С++. Программирование на языке высокого уровня - СПб.: Питер, 2004. - 461 с.

8. Г. Довбуш, А. Хомоненко. VisualC++ на примерах. - СПб: БВХ-Петербург, 2007. - 528 с.

9. А.Н. Шушура. Методические указания по оформлению студенческих работ для студентов специальностей "Системы управления и автоматики", "Системный анализ и управление". - Донецк: ГУИ и ИИ, 2009. - 46с.

Приложения

Приложение А

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

А.1 Общие сведения

Тема курсового проекта: "Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода. Производственная линия с пунктами технического контроля.

Система проектируется студентом 2-го курса Донецкого национального технического университет, ИИиИИ, группы КСУ-10, Киншова А.В.

Основанием для разработки ПП является задание, выданное кафедрой ПОИС. Плановый срок начала работы по созданию системы имитационного моделирования: 05.09.11, срок окончания: 05.12.11. Курсовой проект должен выполняться согласно графику, приведенному в таблице А.1.

Таблица А.1 - Этапы, результаты и сроки разработки ПП

Этап работы

Результат работы

Срок выполнения

(№ недели)

Модуль 1

1

Получение задания на КП

Задание на разработку (1 стр.)

1-2

2

Выявление требований к разрабатываемому программному продукту

Техническое задание

(3-5 стр.)

3-4

3

Проведение ОО анализа предметной области

Словарь предметной области. Сценарии использования системы. ОО словарь предметной области.

3-4

4

Проведение ОО проектирования

Диаграммы классов, объектов

5-6

5

Проведение ОО проектирования

Диаграммы состояний и переходов, взаимодействия

7-8

6

Проведение ОО проектирования

Диаграммы модулей, процессов

10-11

7

Проектирование протоколов классов

Протоколы классов

12-13

8

Реализация классов

Описание реализации классов

12-13

Модуль 2

9

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

Текст программы. Описание программы и тестов.

13-14

10

Проведение имитационного моделирования, получение статистики работы.

Экранные формы (1-2 стр.). Руководство пользователя (1 стр.).

13-14

11

Оформление пояснительной записки и сопроводительных материалов.

Прошитая ПЗ с CD-ROM (30-50 стр.), сдается преподавателю лично не позже чем за 3 дня до защиты КП.

14

12

Защита курсового проекта

15-17

А.2 Назначения и цели создания программы

Данный программный продукт предназначен для имитации работы динамического объекта реального мира - "Производственная линия с пунктами технического контроля" и получение статистических данных:

время, затрачиваемое на обслуживание каждого телевизора на последнем этапе производства;

загрузка контролеров;

загрузка настройщика.

А.3 Характеристика объекта автоматизации

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

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

Рисунок А.1 Контролеры

Время между поступлениями телевизоров в пункт контроля для заключительной проверки распределено равномерно на интервале 3.5-7.5 мин. В пункте заключительной проверки параллельно работают два контролера. Время, необходимое на проверку одного телевизора, распределено равномерно на интервале 6-12 мин. В среднем 85% телевизоров проходят проверку успешно с первого предъявления и направляются на упаковку. Остальные 15% возвращаются в пункт настройки, обслуживаемый одним рабочим. Время настройки распределено равномерно на интервале 20-40 мин. Необходимо промоделировать работу пунктов контроля и настройки в течение заданного времени для оценки следующих параметров:

А.4 Требования к программному продукту

А.4.1 Требования к системе в целом

В целом к системе предъявляются следующие требования:

а) имитация работы работу пунктов контроля и настройки в течение заданного времени

б) вывод статистики:

время, затрачиваемое на обслуживание каждого телевизора на последнем этапе производства;

загрузка контролеров;

загрузка настройщика.

А.4.2 Требования к задачам и функциям программного продукта

В процессе работы необходимо обеспечить выполнение следующих функций:

а) ввод начальных параметров для моделирования;

б) вывод характеристик объектов на каждом шаге моделирования на экран;

в) вывод результатов моделирования на экран и в файл.

А.4.3 Требования к техническому обеспечению

К техническому обеспечению предъявляются следующие требования:

а) процессор - 32-битный x86-совместимый (уровня Pentium и выше);

б) объем оперативной памяти - не менее 32Мб;

в) свободное дисковое пространство - около 10 Мб. Не менее 5 Мб свободного дискового пространства для временных файлов;

г) графический адаптер - VGA-совместимый;

д) монитор - VGA-совместимый;

е) клавиатура.

А.4.4 Требования к программному обеспечению

Для стабильной работы к программному обеспечению предъявляется следующее требования:

а) обеспечить удобный и понятный пользовательский интерфейс;

б) реализовать программу в виде отдельных классов;

в) организовать защиту от некорректного ввода начальных параметров;

г) обеспечить надежное хранение информации.

Программным обеспечением для проектирования программы является CASE-средство Microsoft Visio, а для разработки - Microsoft Visual Studio 2011. Для запуска программы необходимо наличие операционной системы Windows 7, и соответствующих библиотек Microsoft Visual C++ Redistributable.

А.4.5 Требования к организационному обеспечению

В программную документацию должны входить:

а) пояснительная записка;

б) приложения:

техническое задание;

руководство пользователя;

экранные формы;

листинг программы.

А.4.6 Требования к комплекту поставки ПП

Программный продукт поставляется с пояснительной запиской к курсовому проекту в файле ПЗ. doc, руководством пользователя в файле Help. doc, исходными кодами в виде проекта среды разработки в папке SRC, исполнительным файлом программы start. exe и файлом с данными о разработчике readme. txt.

Приложение Б

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

SAL - это программа предназначенная для моделирования производственной линии с пунктами конечного контроля.

Основная задача моделирования - это проследить загруженность контролера и настройщика.

После двойного нажатия по файлу start. exe откроется программное меню. Вначале программа предложит выбрать пункт меню (смотри рис. В.1). При выборе первого пункта, программа запустит симуляцию и запросит ввести следующие значения:

шаг времени. Любая величина в диапазоне от 1 до 2;

время моделирования системы. Общее время, которое будет потраченное на моделирования. Любая величина в диапазоне от 1 до 1500;

максимальное количество телевизоров в очереди к контролерам. Любая величина в диапазоне от 1 до 15.

Во время моделирования на экран вводятся все подробности моделирования производственной линии (смотри рис. В.2).

В конце на экран будут выведены требуемые статистические данные, которые и являются целью моделирования системы:

- время, затрачиваемое на обслуживание каждого телевизора на последнем этапе производства. Данные сведенья представлены в виде списка, который отображает все результаты симуляции в реальном времени;

- загрузка контролеров. Данное значение показывает, на сколько во время симуляции, были загружены контроллеры;

- загрузка настройщика. Данное значение показывает, на сколько во время симуляции, был загружен настройщик;

После вывода всех статистических данных снова выведется меню. Пользователь может, как повторить симуляцию (нажав "1") указав другие исходные данные, так и выйти из программы (нажав "Esc") и завершить работу с приложением.

Приложение В

ЭКРАННЫЕ ФОРМЫ

На рисунке В.1 начальное меню.

Рисунок В.1 - Меню

Рисунок В.2 - Моделирование

Приложение Г

ЛИСТИНГ ПРОГРАММЫ

#include <iostream>

#include <stdio. h>

#include <stdlib. h>

#include <conio. h>

using namespace std;

// Simulator assembly line. Симулятор сборочной линии

float current_time = 0; // текущее время

float TIME_STEP; // шаг времени

float MODELING_TIME; // время моделирования

float MAX_TV_ON_CONTROLER; // макс. количество телевизоров в очереди у контролера

float tested_time=0; // время работы настройщика

float servicecon_time=0; // время работы, двух контролеров

float get_current_time () // функция получающая текущее время

{

return current_time; // возвращает значение времени

}

float frand (float a, float b) // функция генерирующая числа на определенном промежутке

{

return float (rand ()) /RAND_MAX* (b-a) +a; // возвращает случайные числа на промежутке

}

class Queue // класс Очередь

{

public:

Queue (size_t in_id): id (in_id) // конструктор по умолчанию

{

TV_count = 0; // количество TV

}

size_t Id () // идентификатор

{

return id;

}

void AddTV () // Добавление телевизора на проверку

{

if (TV_count == MAX_TV_ON_CONTROLER) // условие добавление TV

return;

printf ("%.1f: Телевизор на контроллере\n", get_current_time (), id);

TV_count++;

}

void RemoveTV () // извлечение TV

{

if (! TV_count) // условие извлечения TV

return;

printf ("%.1f: Телевизор в рабочем состоянии \n", get_current_time (), id);

TV_count--;

}

void RemoveTVAd ()

{

if (! TV_count)

return;

TV_count--;

}

bool IsFull () // проверка на переполнение

{

return TV_count == MAX_TV_ON_CONTROLER;

}

bool IsEmpty () // проверка на пустоту

{

return TV_count == 0;

}

private:

size_t TV_count; // количество TV

size_t id; // идентификатор TV

};

class TV // класс Телевизор

{

public:

TV () // конструктор по умолчанию

{

tv_generation_next_time = 0;

}

void Process (Queue& queue1, Queue& queue2) // функция заполнения очередей

{

if (get_current_time () <tv_generation_next_time)

return;

Queue* q;

Queue* q1;

q = &queue1;

q1 = &queue2;

if (! q->IsFull ()) // условие добавления в очередь 1

q->AddTV ();

else if (! q1->IsFull ()) // условие добавления в очередь 2

q1->AddTV ();

tv_generation_next_time = get_current_time () + frand (3.5, 7.5); // время между поступлениями телевизоров в пункт контроля

}

private:

float tv_generation_next_time; // время поступления нового TV

};

class Controler // класс Контролер

{

public:

Controler () // конструктор по умолчанию

{

TV_next_time = 0;

}

void Process (Queue& q,Queue& q_ad) // процесс прохождениятелевизором контроля

{

if (get_current_time () < TV_next_time)

return;

q. RemoveTV ();

if (frand (0, 100) <15) // процент возращаемых TV

{

printf ("%.1f: Телевизоров не работает\n", get_current_time ());

q. RemoveTVAd ();

q_ad. AddTV ();

}

else

q. AddTV ();

float c=frand (6,12); // среднее время необходимое на проверку одного TV

TV_next_time = get_current_time () +c;

servicecon_time+=c;

}

void Delay (float dt) // задержка

{

TV_next_time = get_current_time () + dt;

}

private:

float TV_next_time; // значение задержки

};

class Adjuster // класс Настройщик

{

public:

Adjuster () // конструктор по умолчанию

{

TV_next_time = 0;

}

void Process (Queue& q_ad)

{

if (get_current_time () < TV_next_time)

return;

else

{

printf ("%.1f: Телевизоров настроен\n", get_current_time ());

}

q_ad. RemoveTVAd ();

float C=frand (20,40); // среднее время настройки

TV_next_time = get_current_time () + C;

tested_time+=C;

}

private:

float TV_next_time; // значение задержки

};

class Conveyor // класс Конвеер

{

public:

Conveyor (): queue1 (1), queue2 (2), queue3 (3) // заполнение очередей

{

}

void Process () // процесс работы конвеера

{

tv_generator. Process (queue1, queue2); // процесс генерации TV с использованием очередей 1 и 2

controler1. Process (queue1,queue3); // провера TV контроллером 1 с использованием очередей 1 и 3

controler2. Process (queue2,queue3); // провера TV контроллером 2 с использованием очередей 2 и 3

adjuster1. Process (queue3); // настройка TV с использованием очереди 3

}

private:

TVtv_generator; // генератор TV

Queue queue1; // очередь 1

Queue queue2; // очередь 2

Queue queue3; // очередь 3

Controler controler1; // контроллер 1

Controler controler2; // контроллер 2

Adjuster adjuster1; // настройщик

};

int main ()

{

setlocale (LC_ALL,"Russian");

int ch;

do

{

cout<<"-----------------------------"<<endl;

cout<<"| SAL v0.21 |"<<endl;

cout<<"| 1 - Старт моделирования |"<<endl;

cout<<"| Esc - Выход |"<<endl;

cout<<"-----------------------------"<<endl;

ch=getch (); // ввод пункта меню

switch (ch)

{

case '1':

{

system ("cls"); // функция очистки экрана

cout<<"----Старт симуляции----\n";

cout<<"Введите шаг времени (от 0.1 до 2): ";

cin>>TIME_STEP; // ввод значения шага времени

if (TIME_STEP<=0.1||TIME_STEP>2) TIME_STEP=0.1;

cout<<"Введите время моделирования (от 1 до 1500): ";

cin>>MODELING_TIME; // ввод значения времени моделирования

if (MODELING_TIME<=1||MODELING_TIME>1500) MODELING_TIME=1000;

cout<<"Введите максимальное значение очереди контроллера (от 1 до 15): ";

cout<<endl;

cin>>MAX_TV_ON_CONTROLER; // ввод значения максимального количества TV на контроллере

if (MAX_TV_ON_CONTROLER<=1||MAX_TV_ON_CONTROLER>15) MAX_TV_ON_CONTROLER=5;

Conveyor conveyor1;

while (get_current_time () <MODELING_TIME)

{

conveyor1. Process ();

current_time += TIME_STEP;

}

cout<<"----Конец симуляции----\n";

cout<<"\n\n";

cout<<"Статистика: "<<endl;

cout<<"Загрузка контроллеров = "<< ( ( (servicecon_time) *100) / (2*get_current_time ())) <<"%"<<endl; // статистика загрузки контроллеров

cout<<"Загрузка настройщика = "<< ( (tested_time*100) /get_current_time ()) <<"%"<<endl; // статистика загрузки настройщика

cout<<"\n\n";

break;

}

case 27: // выход из программы

return 0;

}

}

while (1);

getch ();

return 0;

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.