Смекни!
smekni.com

Разработка средств моделирования систем (стр. 4 из 10)

Идея классов является основой объектно-ориентированного программирования.

Основными свойствами ООП является инкапсуляция, наследование и полиморфизм.

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

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

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

В нашей программе используется первые два свойства ООП.

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

Представим иерархию классовнашей программы (рисунок 3.1)


Рисунок 3.1


4 РЕАЛИЗАЦИЯ СИСТЕМЫ

Как ранее уже описывалось, программа состоит из трёх классов:

- Класс FuncStandart содержит описание всех стандартных функций, определённых языком имитационного моделирования GPSS.

- Класс GPSSOperatori содержит описание операторов языка имитационного моделирования GPSS.

- Класс GPSSText описывает сгенерированный текст языка имитационного моделирования GPSS.

4.1 Класс FuncStandart

-

- Метод stringfBETA() задает параметры функцииBETA(Stream,Min,Max,Shape1,Shape2) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfBINOMIAL()задает параметры функции BINOMIAL(Stream,TrialCount,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfDUNIFORM()задает параметры функции DUNIFORM(Stream,Min,Max) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringf_1() задает параметры функций EXPONENTIAL(Stream,Locate,Scale), EXTVALA(Stream,Locate,Scale), EXTVALB(Stream,Locate,Scale), LAPLACE(Stream,Locate,Scale), LOGISTIC(Stream,Locate,Scale)и возвращает строку содержащую описание этих параметров с уже заданными пользователем значениями.

- Методstring f_2() задаетпараметрыфункцийGAMMA(Stream,Locate,Scale,Shape), INVGAUSS(Stream,Locate,Scale,Shape), INVWEIBULL(Stream,Locate,Scale,Shape), OGLAPLACE(Stream,Locate,Scale,Shape), LOGLOGIS(Stream,Locate,Scale,Shape),LOGNORMAL(Stream,Locate,Scale,Shape),PEARSON5(Stream,Locate,Scale,Shape),WEIBULL(Stream,Locate,Scale,Shape)ивозвращаетстрокусодержащуюописаниеэтихпараметровсужезаданнымипользователемзначениями.

- Метод stringfGEOMETRIC()задает параметры функции GEOMETRIC(Stream,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfNEGBINOM()задает параметры функции NEGBINOM(Stream,SuccessCount,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfNORMAL()задает параметры функции NORMAL(Stream,Mean,StdDev) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfPARETO()задает параметры функции PARETO(Stream,Locate,Scale) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод string fPEARSON6()задает параметры функции PEARSON6(Stream,Locate,Scale,Shape1,Shape2) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfPOISSON()задает параметры функции POISSON(Stream,Mean) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfTRIANGULAR()задает параметры функции

- TRIANGULAR(Stream,Min,Max,Mode) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

- Метод stringfUNIFORM() задает параметры функции UNIFORM(Stream,Min,Max) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.

4.2 Класс GPSSOperatori

- Описываются переменные целого типа nF, nST, nFas, nQ, ответственные за номер используемой функции, номер многоканального устройства, номер одноканального устройства, номер очереди соответственно.

- МетодGENERATE задаёт параметры оператора GENERATE и возвращает строковое значение этого оператора с заданными пользователем значениями параметров.

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

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

На втором этапе определяется время задержки появления первого транзакта. Оно может быть: задано или не задано.

На третьем этапе определяется предельное число транзактов.Оно так же может быть: задано или не задано.

На четвёртом этапе определяется приоритет транзактов. Он может быть: задан или не задан.

- Метод ADVANCE задаёт параметры оператора ADVANCE и возвращает строковое значение этого оператора с заданными пользователем значениями параметров.

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

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

- Метод ENTER возвращает строку содержащую операторы языка имитационного моделирования GPSS, описывающие многоканальное устройство.

На первом этапе в файл GPSStext.txt (файл для записи сгенерированного текста программы на языке имитационного моделирования GPSS) записывается описание многоканального устройства, то есть его имя и количество каналов.

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

На третьем этапе записывается оператор захвата многоканального устройства с названием этого устройства и количеством захвачиваемых каналов.

На четвёртом этапе происходит переход на генерацию текста оператора ADVANCE .

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

- Метод SIZE возвращает строку содержащую операторы языка имитационного моделирования GPSS, описывающие одноканальное устройство.

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

На втором этапе записывается оператор захвата одноканального устройства с названием этого устройства.

На третьем этапе происходит переход на генерацию текста оператора ADVANCE .

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

- Метод FUNCTION задаёт параметры оператора FUNCTION и возвращает строковое значение этого оператора с заданными пользователем значениями параметров.

В файл GPSStext.txtна первом этапе записывается номер генератора случайного числа; на втором этапе тип функции; на третьем число точек и их координаты.

- Метод Fstandartопределяет, какая стандартная функция будут вызываться, то есть обращается в класс FuncStandart, и возвращает строку, содержащую описание этой функции.

4.3 Класс GPSSText

- Переменные oper, ukazat, matrix типа vectorнаходящиеся в области private,определяют операторы принадлежащие узлам, указатели на узлы, матрицу переходов от одного узла к другому соответственно.

- Метод Matrix генерирует матрицу переходов от одного узла к другому, а также определяет, какие операторы принадлежат узлам.

На первом этапе определяется оператор на соответствующем узле.

На втором этапе в соответствии с номером узла, определяется, какая строка будет генерироваться в матрице.

Если узел содержит генератор, одноканальное либо многоканальное устройство, то в столбец с номером узла, в который переходит дальше транзакт, записывается 1, в остальные столбцы записывается 0.

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

Если узел является терминатором, то в соответствующую строку записываются все нули.

Причем, при каждом описании узла, в вектор operзаписывается оператор, соответствующий узлу.

- Метод Programma окончательно генерирует текст программы, написанной на языке имитационного моделирования GPSS.

На первом этапе вызывается метод Matrix, который заполняет матрицу переходов и вектор операторов.

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

На третьем генерируется программа в соответствии с матрицей, операторами и указателями.

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