Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР (Восстановлен).doc
Скачиваний:
2
Добавлен:
04.12.2018
Размер:
252.93 Кб
Скачать

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

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

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

class TV

{

private:

float tv_generation_next_time;

public:

TVGenerator ();

void Process (Queue& queue1, Queue& queue2);

float frand (float a, float b);

};

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

class Controler

{

private:

float TV_next_time;

public:

Controler ();

void Process (Queue& q,Queue& q_ad);

void Delay (float dt);

float frand (float a, float b);

};

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

class Adjuster

{

private:

float TV_next_time;

public:

Adjuster ();

void Process (Queue& q_ad);

};

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

class Queue

{

private:

size_t TV_count;

size_t id;

public:

Queue (size_t);

size_t Id () { return id; }

void AddTV ();

void RemoveTV ();

void RemoveTVAd ();

bool IsFull () { return TV_count == MAX_TV_ON_CONTROLER; }

bool IsEmpty () { return TV_count == 0; }

};

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

class Conveyor

{

private:

TV tv_generator;

Queue queue1;

Queue queue2;

Queue queue3;

Controler controler1;

Controler controler2;

Adjuster adjuster1;

public:

Conveyor();

void Process ();

};

4 Объектно-ориентированная реализация

4.1 Постановка задачи разработки программного продукта

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

4.2 Структура программного продукта

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

Проект состоит из двух основных частей:

  1. моделирование работы;

  2. вывод результатов.

4.3 Описание структур данных

Входными данными для разработанного ПП являются параметры производственной линии: время моделирования и шаг времени.

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

ВЫВОДЫ

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Б. Страуструп. Язык программирования С++. - М.: Издательский дом «Вильямс», 2005г., с. 369

  2. С. Мейерс. Эффективное использование STL. - С – Пб.: «Питер», 2002г., с. 167

  3. Г. Шилдт. Справочник программиста С/С++. 3-е издание. – С - Пб.:

БВХ-Петербург, 2003. ¬– 688 с.

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

Приложение А

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

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

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

Система проектируется студентом 1-го курса Государственного университета информатики и искусственного интеллекта (ГУИиИИ), факультет СКИТ, группа ПО-07д Шелюк А.Е.

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

Таблица А.1 – Стадии и этапы разработки программного продукта

Этапы работы

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

1.

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

09.02.08

2.

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

20. 02.08

3.

Составление технического задания

12.03.08

4.

Построение диаграмм классов, конечных автоматов

22.03.08

5.

Построение диаграмм вариантов использования, взаимодействия ,объектов и пакетов

12.04.08

6.

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

20.04.08

7.

Проектирование программы

27.04.08

8.

Отладка программы на верхнем уровне

5.05.08

9.

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

10.05.08

10.

Написание пояснительной записки

18.05.08

11.

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

22.05.08

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

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

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

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

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

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

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

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

- провести объектно-ориентированный анализ заданной предмет­ной области.

- результат анализа представить в виде словаря предметной области.

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

- необходимо ответить на следующие вопросы:

какие классы и объекты Вы предлагаете ввести, чему они

соответствуют в моделируемой предметной области;

что является "состоянием" для объектов этих классов, набором каких

параметров оно задается;

какие сообщения должны принимать и обрабатывать объекты;

какие информационные зависимости существуют между классами,

какими общими функциями они пользуются.

- результат проектирования представить в виде диаграмм классов,

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

объектов и пакетов.

- использовать нотацию Буча или UML.

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

- на основе результата объектно-ориентированного проектирования создать протоколы классов.

А.4.2 Требования к задачам и функциям, выполняемым ПП

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

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

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

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

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

Требования:

- использовать IBM- совместимые ЭВМ с учетом необходимых ресурсов машины для функционирования проектируемого программного продукта;

- обеспечить достаточный объем внешней памяти для возможности работы с необходимым объемом информации;

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

ПП должен функционировать в условиях ОС MS-DOS.

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

- использование удобного и понятного пользовательского интерфейса.

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

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

  2. приложения:

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

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

Приложение Б

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

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <iostream>

using namespace std;

size_t MAX_TV_ON_CONTROLER; // макс. количество телевизоров

//в очереди у контролера

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

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

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

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

float current_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;

}

size_t Id () { return id; }

void AddTV ()

{

if (TV_count == MAX_TV_ON_CONTROLER)

return;

printf ("%.1f: TV on controler\n", get_current_time (), id);

TV_count++;

}

void RemoveTV ()

{

if (!TV_count)

return;

printf ("%.1f: TV already work \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;

size_t id;

};

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())

q->AddTV();

else if (!q1->IsFull())

q1->AddTV();

tv_generation_next_time = get_current_time () + frand (3.5, 7.5);

}

private:

float tv_generation_next_time;

};

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)

{

printf ("%.1f:TV is unwork\n", get_current_time ());

q.RemoveTVAd ();

q_ad.AddTV();

}

else

q.AddTV();

float c=frand (6, 12);

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

{

cout<<"TV was checking"<<" "<<get_current_time ()<<endl;

}

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);

controler1.Process (queue1,queue3);

controler2.Process (queue2,queue3);

adjuster1.Process(queue3);

}

private:

TV tv_generator;

Queue queue1;

Queue queue2;

Queue queue3;

Controler controler1;

Controler controler2;

Adjuster adjuster1;

};

void clear()

{

cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";

}

int main ()

{

int ch;

do

{

cout<<" Simulation of conveyor\n\n";

cout<<" [1]- Start modeling\n";

cout<<" [Esc]-Exit\n\n";

ch=getch();

switch(ch)

{

case '1':

{//clear();

cout<<"Simulation of conveyor\n\n";

cout<<"Enter the step of time: ";

cin>>TIME_STEP;

if(TIME_STEP<=1||TIME_STEP>2) TIME_STEP=0.3;

cout<<"Enter the modelling time: ";

cin>>MODELING_TIME;

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

cout<<"Enter the size of controller queue: ";

cin>>MAX_TV_ON_CONTROLER;

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\n\n";

cout<<"loading of controller = "<<(((servicecon_time)*100)/(2*get_current_time()))<<"%"<<endl;

cout<<"loading of adjuster = "<<((tested_time*100)/get_current_time())<<"%"<<endl;

cout<<"End of simulation\n";

break;

}

case 27:

return 0;

}

}while(1);

getch();

return 0;

}

Приложение В

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

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

В начале программы спросит у вас о том, что вы желаете сделать. Затем ввести значение шага времени и время моделирования системы, а так же максимальное количество телевизоров в очереди к контролерам. Во время моделирования на экран вводятся все детали моделирования производственной линии.

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]