Программная инженерия Нижний Новгород 017 Лабораторный
Разработка программного комплекса
Download 1.23 Mb. Pdf ko'rish
|
Pract ADS
- Bu sahifa navigatsiya:
- 3.2. Спецификации классов
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling