2. Выбор метода решения
2.1. Теоретические данные
В качестве методе решения мною был выбран метод Аббата для выявления классов из предметной области, диаграммы Booch и UML для проектирования системы.
Работа системы происходит в цикле, где каждая итерация соответствует отдельному моменту времени. С помощью специальных методов классов Furnace, Chamber, QueueCast и Average система в состоянии моделировать работу камерной печи в соответствии с предметной областью. Статистика выводится на экран и в файл специальными методами класса Statistic. Для вывода промежуточных результатов в отдельный файл определены методы у класса System.
2.2. Описание входных и выходных данных
Входные данные:
количество моментов времени работы моделируемой системы;
математическое ожидание интервала прихода отливок.
Выходные данные:
промежуточные данные о состоянии системы в каждый момент времени;
средние значения исследуемых величин на протяжении всей работы системы.
3. Метод решения
3.1. Объектно-ориентированный анализ предметной области
Объектно–ориентированный анализ предметной области - это метод анализа, который позволяет определить возможные сценарии работы с системой, выделить классы, определить методы и свойства для этих классов, а также разобраться с предметной областью с помощью составления словарей.
В процессе объектно-ориентированного анализа предметной области были составлены:
1. Словарь предметной области (Таблица 1);
2. Объектно-ориентированный словарь предметной области (Таблица 2);
3. Диаграммы вариантов использования (Рисунок 3.1.3-3.1.4) ъ
Таблица 3.1 – Словарь предметной области
Существительные |
Прилагательные |
Глаголы |
Процесс |
|
|
Обработка |
|
|
Завод |
Металлургический |
|
Отливки |
Стальные Холодная Очередная |
Нагреваются Влияют Поступает Удаляются |
Печь |
Камерная Заполненная |
Раскаляется |
Интервал |
Распределённый |
|
Ожидание |
Математическое |
|
Рационализация |
|
|
Процесс |
Технологический |
|
Изменение |
|
|
Температура |
Начальная Распределена |
Достигнет |
Уравнение |
Дифференциальное |
|
Коэффициент |
|
|
Скорость |
|
|
Нагрев |
|
Продолжается |
Величина |
Нормально распределённая |
|
Ожидание |
Математическое |
|
Отклонение |
Среднеквадратичное |
|
Время |
|
|
Снижение |
|
|
Продолжение таблицы 3.1 | ||
Существительные |
Прилагательные |
Глаголы |
Разность |
|
|
Количество |
|
|
Камера |
|
|
Интервал |
|
|
Стратегия |
|
Состоит |
Управление |
|
|
Условия |
Начальные |
Предполагают |
Наличие |
|
|
Момент |
Нулевой |
|
Исследование |
|
|
Моделирование |
|
|
Система |
Описанная |
|
Оценки |
|
|
Величины |
Следующие |
|
Распределение |
Конечное |
|
Загрузка |
|
|
Словарь предметной области (Таблица 1) представляет из себя разбиения описания предметной области на существительные, прилагательные и глаголы. В дальнейшем существительные могут стать классами, прилагательные – свойствами, а глаголы – методами. Подобная тенденция заметна в следующей таблице.
Таблица 3.2 – ОО словарь предметной области
Классы |
Свойства |
Методы |
Система (System) |
|
Имитировать работу (Imitate) Сгенерировать коэффициент скорости нагрева (GetCoefOfHeat) Сгенерировать новый интервал времени ожидания отливки (GetNewInterval) Вывести текущее состояние в файл с промежуточными данными (ShowInterimData) |
Продолжение таблицы 3.2 | ||
Классы |
Свойства |
Методы |
Печь (Furnace) |
Камеры (chamb[10]) Температура (temp) |
Вернуть номер первой свободной камеры (FindNotFillChamb) Узнать температуру (GetTemp) Повысить температуру (AddTemp) Вернуть количество заполненных камер в печи (GetNumberChamb) Добавить отливку в камеру по номеру (PushCast) Проверка и удаление отливок (DeleteCast) Обратится к камере по номеру (operator[]) |
Камера (Chamber) |
Температура отливки в камере (temp) Время поступления отливки в камеру (timeBegin) Есть ли в камере отливка (fill) |
Узнать температуру (GetTemp) Повысить температуру (AddTemp) Поместить отливку (PushCast) Вынуть отливку (PopCast) Узнать, заполнена ли камера (GetFill) Узнать время начала нагрева отливки (GetTimeBegin) |
|
|
|
Продолжение таблицы 3.2 | ||
Классы |
Свойства |
Объекты |
Очередь ожидающих отливок (QueueCast) |
Указатель на первый элемент (head) Указатель на последний элемент (last) |
Добавить элемент в очередь (Push) Узнать, есть ли на очереди элементы (NotEmpty) Узнать время последнего элемента очереди (GetLast) Удалить последний элемент очереди (Pop) Узнать длину очереди (GetLength) |
Элемент очереди ожидающих отливок (QueueCastElement) |
Время поступления в очередь (time) Указатель на следующий элемент (next) |
Узнать время поступления в очередь (GetTime) |
Статистика (Statistic) |
Среднее время нагрева одной отливки (avTimeWarm) Среднее значение конечных температур отливок (avEndTemp) Суммарное время ожидания отливок (sumTimeWait) Среднее время ожидания отливок (avTimeWait) Среднее количество заполненных камер в единицу времени (avNumberChamb) |
Вывести на консоль (WriteToConsole) Вывести в файл (WriteToFile) |
Среднее значение (Average) |
Текущее среднее значение помещённых величин (sum) Количество помещённых величин (N) |
Добавить число (AddValue) Узнать среднее значение (GetAverage) |
Рисунок 1 – Диаграмма вариантов использования
Это диаграмма вариантов использования. Центральное место тут занимает вариант использования (основное действие, написанное в круге). Это действие связанно отношением ассоциации с актером (обозначается на диаграмме в форме человечка с подписью). Актером на диаграмме является предмет или существо, которое участвует в действии. В данном случае это объекты классов и пользователь.
3.2 Объектно-ориентированное проектирование
3.2.1 Диаграмма классов.
Диаграмма классов (Рисунок 2) наглядно демонстрирует взаимосвязь между классами.
Рисунок 2- Диаграмма классов
3.2.2 Диаграмма объектов
Диаграмма объектов (рисунок 3) демонстрирует взаимодействия между определёнными объектами (экземплярами классов). Диаграмма объектов состоит из объектов, актёра (пользователя) и передаваемых друг другу объектами сообщений.
Диаграмма объектов изображена на рисунке 3.
Рисунок 3 Диаграмма объектов.
3.2.3 Диаграммы состояний
Диаграмма состояний для класса QueueCast изображена на рисунке 4.
Рисунок 4
Диаграмма состояний создается для объектов, у которых можно выделить какие-либо методы, подразумевающие не точечные действия, а действия, которые должны происходить на каком-то промежутке, к примеру, времени, изменение каких-либо параметров, переходов из одного состояния в другое с его течением.
3.2.4. Диаграмма взаимодействия
Диаграмма взаимодействия показывает взаимодействие объектов на протяжении работы программы. В самой верхней части находится независимый актант и действующие объекты программы (по одному экземпляру из каждого класса). От них вниз идут так называемые «линии жизни» объектов (линии, обозначающие, что в данный момент объект существует). Прямоугольники обозначают, что объект в данное время выполняет действия. Стрелки обозначают запрос или сигнал, посылаемый от одного объекта к другому (сплошные) и ответ на запрос (пунктирные).
Диаграмма взаимодействия показана на рисунке 5.
Рисунок 5 – Диаграмма взаимодействия
3.3. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
3.3.1 Диаграмма модулей
Для большего удобства отображения, классы можно сгруппировать в пакеты. Диаграмма модулей отображает взаимодействие между модулями. Между модулями есть связь, если между классами, находящимися в этих модулях, есть связь. Если модуль «Б» использует в своей реализации данные модуля «А» стрелка связи проводится из модуля «А» в модуль «Б».
В данном случае в каждом из модулей находится по одному классу (имя модуля – <имя класса>.cpp).
Диаграмма модулей изображена на рисунке 6.
Рисунок 6 – Диаграмма модулей
3.3.2 Диаграмма процессов
Диаграммы процессов используются, чтобы показать распределение процессов по процессорам в физическом проекте системы. Отдельная диаграмма процессов показывает один ракурс структуры процессов системы. При разработке проекта мы используем диаграмму процессов, чтобы показать физическую совокупность процессоров и устройств, обеспечивающих работу системы.
Диаграмма процессов приведена на рисунке 7.
Рисунок 7 – Диаграмма процессов
3.3.3 Протоколы классов
class System
{
public:
void Imitate(long,long,Statistic&,const char*,const char*);
double GetCoefOfHeat();
long GetNewInterval(long);
void ShowNowState(Furnace&);
void ShowInterimData(std::ofstream&,int,Furnace&,QueueCast&);
};
class Furnace
{
public:
Furnace();
int FindNotFillChamb();
double GetTemp();
void AddTemp(double);
int GetNumberChamb();
void PushCast(int,double,long);
void DeleteCast(long,QueueCast&,Statistic&);
Chamber& operator[](int);
private:
Chamber chamb[10];
double temp;
};
class Chamber
{
public:
Chamber();
double GetTemp();
void AddTemp(double);
void PushCast(long,double);
void PopCast(Statistic&,long);
bool GetFill();
long GetTimeBegin();
private:
double temp;
long timeBegin;
bool fill;
};
class QueueCast
{
public:
QueueCast();
void Push(double);
bool NotEmpty();
long GetLast();
void Pop();
int GetLength();
private:
QueueCastElement *head;
QueueCastElement *last;
};
class QueueCastElement
{
public:
QueueCastElement(long);
long GetTime();
QueueCastElement *next;
private:
long time;
};
class Average
{
public:
Average();
void AddValue(double);
double GetAverage();
public:
double sum;
int N;
};
class Statistic
{
public:
Statistic();
void WriteToConsole();
void WriteToFile(const char*);
Average avTimeWarm;
Average avEndTemp;
long sumTimeWait;
Average avTimeWait;
Average avNumberChamb;
};
ВЫВОДЫ
При выполнении курсового проекта для достижения поставленной цели был проведен объектно-ориентированный анализ, в результате которого выделены активные объекты, пассивные субъекты, варианты использования, а также следующие классы предметной области: Furnace (печь), Chamber (камера), QueueCast (очередь), а также главный класс System. Для указанных классов определены атрибуты и операции.
По результатам анализа было проведено объектно-ориентированное проектирование, результатом которого стали следующие диаграммы:
а) диаграмма вариантов использования;
б) диаграмма классов;
в) диаграмма взаимодействия;
г) диаграмма состояний;
д) диаграмма объектов;
е) диаграмма модулей.
Результатом реализации диаграмм стал программный продукт, моделирующий работу камерной печи.
Таким образом, в ходе работы к предметной области «Моделирование работы камерной печи» были применены навыки имитационного моделирования с использованием ООП, результатом чего стал программный продукт, имитирующий работу камерной печи, в которой нагреваются отливки.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Г.Буч. Объектно-ориентированное программирование. М. 1992.
2. И.Труб. Объектно-ориентированное моделирование.
3. С.Шлеер, К.Меллор. Объектно-ориентированный анализ: моделирование мира в состояниях. К. Диалектика. 1993.
4. Б.Страустрап. Язык программирования С++. М. 1993.
Приложение А
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
А.1 Общие сведения
Тема курсового проекта: «Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода. Модель работы камерной печи».
Система проектируется студентом 1-го курса Донецкого Национального технического университета, факультета КНТ, группы ПИ-12в, Ольмезовым Константином Ивановичем.
Основанием для разработки ПП, является задание, выданное кафедрой ПОИС. Плановый срок начала работы имитационного моделирования: 28.02.2013, срок окончания: 6.06.2012. Курсовой проект должен выполняться согласно графику, приведенному в таблице А.1.
Таблица А.1 – Этапы, результаты и сроки разработки ПП
№ п/п |
Наименование этапов дипломного проекта (работы) |
Срок выполнения этапов проекта (работы) |
Примечание |
1 |
Получение задания на КП. |
1 неделя |
Задание на разработку (1 стр.) |
2 |
Выявление требований к разрабатываемому программному проекту. |
1-2 неделя |
Техническое задание (3-5 стр.) |
3 |
Проведение ОО анализа предметной области. |
3-4 неделя |
Словарь предметной области. Сценарии использования системы. ОО словарь предметной области. |
4 |
Проведение ОО проектирования. |
5-6 неделя |
Диаграммы классов, объектов. |
Продолжение таблицы А.1 | |||
№ п/п |
Наименование этапов дипломного проекта (работы) |
Срок выполнения этапов проекта (работы) |
Примечание |
5 |
Проведение ОО проектирования. |
7-8 неделя |
Диаграммы состояний и переходов, взаимодействия. |
6 |
Проведение ОО проектирования. |
9-10 неделя |
Диаграммы модулей, процессов. |
7 |
Проектирование протоколов классов. |
11-12 неделя |
Протоколы классов. |
8 |
Реализация классов. |
11-12 неделя |
Описание реализации классов. |
9 |
Реализация и отладка программы. Проведение тестирования ПП. |
13-14 неделя |
Текст программы. Описание программы и тестов. |
10 |
Проведение имитационного моделирования. Получение статистики работы. |
13-14 неделя |
Экранные формы (1-2 стр.). Руководство пользователя (1 стр.) |
11 |
Оформление пояснительной записки и сопроводительных материалов. |
14 неделя |
Прошитая ПЗ с CD-ROM (30-50 стр.), сдается преподавателю лично не позже чем за 3 дня до защиты КП. |
12 |
Защита курсового проекта |
15-17 неделя |
|
А.2 Назначения и цели создания программы
Данный программный продукт предназначен для имитации работы динамического объекта реального мира – камерная печь – и получения статистических данных о времени нагрева отливок, конечного распределения температур отливок, времени ожидания холодных отливок перед печью.
А.3 Характеристика объекта автоматизации
В процессе обработки на металлургическом заводе стальные отливки поступают в камерную печь с интервалом, распределенным экспоненциально с математическим ожиданием М1. Отливки нагреваются в печи в целях рационализации дальнейшего хода технологического процесса. Изменение температуры отливки в печи описывается следующим дифференциальным
уравнением:
где h - температура 1-й отливки в камере; С - коэффициент скорости нагрева, равный Х+0.1, где Х - нормально распределенная величина с математическим ожиданием 0.05 и среднеквадратичным отклонением 0.01; Н - температура печи, которая раскаляется до 2600 Т с постоянным коэффициентом скорости нагрева, равным 0.2, т.е.
Отливки влияют друг на друга так, что помещение "холодной" отливки в печь снижает температуру в печи и изменяет тем самым время нагрева находящихся в ней в данный момент отливок. Снижение температуры равно разности температур печи и отливки, деленной на количество отливок в печи. Всего в печи 10 камер. Когда холодная отливка поступает к заполненной печи, она складируется рядом с печью. Предполагается, что начальная температура поступающих отливок равномерно распределена на интервале 400-600'F. Предполагается также, что все складируемые перед печью отливки при загрузке в нее имеют температуру 400'F.
Стратегия управления технологическим процессом состоит в том, что нагрев отливок в печи продолжается до тех пор, пока температура одной из них не достигнет 2.200'F. Как только эта температура достигается, все отливки с температурой выше 2.000 ' F удаляются. Начальные условия предполагают наличие шести отливок в печи с температурой каждой отливки, равной 550, 600, 650, ..., 800'F. Начальная температура печи равна 1650'F, а очередная отливка поступает в нулевой момент времени.
А.4 Требования к программному продукту
А.4.1 Требования к системе в целом
В целом системе предъявлены следующие требования:
а) имитация работы камерной печи
б) вывод статистики о времени нагрева отливок, конечного распределения температур отливок, времени ожидания холодных отливок перед печью.
А.4.2 Требования к задачам и функциям программного продукта
В процессе работы необходимо обеспечить работы следующих функций:
а) ввод параметров для моделирования;
б) вывод характеристик объектов на каждом шаге моделирования в специальный файл статистики ;
в) вывод результатов моделирования на экран и в файл.
4.3 Требования к техническому обеспечению
К техническому обеспечению предъявляются следующие требования:
а) процессор 32-битный x86-совместимый (уровня Pentium и выше);
б) объем оперативной памяти не менее 1Кб;
в) свободное дисковое пространство – около 1Мб.
г) графический адаптер – VGA-совместимый;
д) монитор – VGA-совместимый;
г) клавиатура.
А.4.4 Требования к программному обеспечению
Для стабильной работы к программному обеспечению предъявляются следующие требования:
а) обеспечить удобный и понятный пользовательский интерфейс;
б) реализовать программу в виде отдельных классов;
в) организовать защиту от некорректного ввода начальных параметров;
г) обеспечить надежное хранение информации.
Программным обеспечением для разработки программы является Microsoft Visual Studio 2010 Ultimate. Для запуска программы необходимо наличие операционной системы Windows XP, и соответствующих библиотек Microsoft Visual C++ Redistributable.
А.4.5 Требования к организационному обеспечению
В программную документацию должны входить:
а) пояснительная записка;
б) приложения:
- техническое задание;
- руководство пользователя;
- экранные формы;
- листинг программы.
А.4.6 Требования к комплексу поставки ПП
Программный продукт поставляется с пояснительной запиской к курсовому проекту в файле ПЗ.doc, руководством пользователя в файле Help.doc, исходными кодами в виде проекта среды разработки в папке SRC, исполнительным файлом программы start.exe и файлом с данными о разработчике readme.txt.
Приложение Б