Объекты этого класса тесно связаны
Объекты этого класса тесно связаны с управляющей программой - диспетчером, которая реализована специальным объектом. Статический указатель на этот объект
programm используется для доступа объектов, управляемых сообщениями к средствам объекта-программы. Объект может выполнять два основных действия - принимать и передавать сообщения :
-метод передачи сообщения вызывает аналогичный метод в объекте-программе ;
-виртуальная функция обработки сообщения программируется отдельно в каждом производном классе и определяет реакцию объектов этого класса на все сообщения, которые появляются в программе и проходят через систему объектов ;
-конструктор объекта посылает сообщение объекту-программе о своем " рождении" с указателем на самого себя .
// Класс объектов, управляемых сообщениями -----------
class OBJ
{
friend class PRG; // Объявление дружественного класса
static PRG *programm; // Статический (общий) указатель
public: // на объект - программа
void SendEvent(char,int,int,void *);
virtual void HandleEvent(MS *); // Обработчик сообщений
OBJ(); // Конструктор
virtual ~OBJ(); // Деструктор
};
void OBJ::SendEvent(char code0, int x0, int y0, void *p0)
{ if (programm !=NULL) programm->SendEvent(code0,x0,y0,p0);}
void OBJ::HandleEvent(MS *pm)
{ pm->clear(); }
OBJ::OBJ()
{ SendEvent(ms_BORN,0,0,this); }
OBJ::~OBJ() {}
Самым сложным является класс прикладной программы, который и реализует в себе как структуры данных, так и стратегию управления, принятую в программе. Прежде всего, объект-программа содержит в себе две очереди - объектов objects и сообщений messages , реализованных в виде любой структуры данных, например, циклического списка (см.6.4.). Функциональными компонентами класса являются метод передачи сообщения SendEvent и метод диспетчеризации сообщений run , реализующий алгоритм управления системой объектов.
// Класс прикладной программы ------------------------
#include " zlist.h"
class PRG
{
zlist objects; // Объекты программы
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий