Программная инженерия Нижний Новгород 017 Лабораторный


Разработка программного комплекса


Download 1.23 Mb.
Pdf ko'rish
bet44/87
Sana08.06.2023
Hajmi1.23 Mb.
#1463900
TuriУчебно-методическое пособие
1   ...   40   41   42   43   44   45   46   47   ...   87
Bog'liq
Pract ADS

3. Разработка программного комплекса 
3.1. Структура 
С учетом сформулированных выше предложений к реализации целесообразной 
представляется следующая модульная структура программы: 

TStack.h, TStack.cpp – модуль с классом, реализующим операции над стеком; 

TQueue.h, TQueue.cpp – модуль с классом, реализующим операции над очередью; 

TJobStream.h, TJobStream.cpp – модуль с классом, реализующим поток задач

TProc.h, TProc.cpp – модуль с классом, реализующим процессор; 

QueueTestkit.cpp – модуль программы тестирования. 
3.2. Спецификации классов 
С учетом предложенных к реализации алгоритмов можно сделать следующие объявления 
классов. 
Класс TStack (файл TStack.h) (см. описание лабораторной работы №3) 
Класс TQueue (файл TQueue.h): 
class TQueue : public TStack { 
protected:
int Li; // индекс начала очереди 
int GetNextIndex (int index); // получить следующий индекс 
public: 
TQueue (int Size = MaxMemSize):TStack(Size) {Li = 0;}; 
TElem Get ( void ) ; // извлечь значение 
}; 
Тип TElem описывает тип значений элементов структуры данных (определяется в 
TStack.h). Реализация класса ТStack подробно описана в лабораторной работе №3. Для 
определения методов класса TQueue ниже приведен фрагмент файла TQueue.cpp (модуль 
реализации). 
#include ”Queue.h” 
int Queue :: GetNextIndex(int index) { // Получение следующего индекса
return ++ index % MemSize ; 

TElem Queue :: Get ( void ) {// извлечь значение 
if ( ~IsEmpty() { // очередь не пуста? 
TElem tmp = pMem[Li]; 


 
51 
Head = GetNextIndex( Li ); 
DataCount--; 
return tmp;

}
В конструкторе вызывается конструктор базового класса, размер области памяти 
определяется как параметр конструктора (по умолчанию устанавливается MaxMemSize) и 
явно учитывает тип элемента очереди (TElem), кроме этого устанавливается значение индекса 
начала очереди Li = 0.
Деструктор, методы IsEmpty, IsFull, Put наследуются из базового класса. Перед 
обращением к функции Put необходимо проверять очередь на полноту. 
Метод Get переопределяется для очереди и обеспечивает получение значения из очереди 
по указателю начала очереди; выполнение операции выполняется с удалением возвращаемого 
значения из очереди. Перед обращением к этой функции необходимо проверять очередь на 
пустоту. 
Метод GetNextIndex переопределяется в классе очереди и обеспечивает представление 
очереди в виде кольцевого буфера, позволяя устанавливать значения индексов начала и конца 
очереди при достижении ими граничного значения в 0. 
Класс TJobStream (файл TJobStream.h) 
class TJobStream { 
private: 
double JobIntеns; // интенсивность потока задач 
public: 
TJobStream (int Intеns); 
int GetNewJob(void); // генерация нового задания 
}; 
Класс TProc (файл TProc.h) 
class TProc { 
private: 
double ProcRate; // производительность процессора 
int JobId; // Id выполняемого задания 
public: 
TProc (int Rate); 
int IsProcBusy(void) ; // процессор занят? 
int RunNewJob (int JobId); // приступить к выполнению нового задания 
}; 

Download 1.23 Mb.

Do'stlaringiz bilan baham:
1   ...   40   41   42   43   44   45   46   47   ...   87




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling