Информатика и технология программирования


       Купить дсп влагостойкая шпунтованная quick deck. | умная поилка-фонтан c wi-fi для кошек и собак petoneer fresco ultra |   

Объекты этого класса тесно связаны


Объекты этого класса тесно связаны с управляющей программой - диспетчером, которая реализована специальным объектом. Статический указатель на этот объект 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-&#62SendEvent(code0,x0,y0,p0);}

void OBJ::HandleEvent(MS *pm)
{ pm-&#62clear(); }

OBJ::OBJ()
{ SendEvent(ms_BORN,0,0,this); }

OBJ::~OBJ() {}





Самым сложным является класс прикладной программы, который и реализует в себе как структуры данных, так и стратегию управления, принятую в программе. Прежде всего, объект-программа содержит в себе две очереди - объектов objects и сообщений
messages , реализованных в виде любой структуры данных, например, циклического списка (см.6.4.). Функциональными компонентами класса являются метод передачи сообщения SendEvent и метод диспетчеризации сообщений run , реализующий алгоритм управления системой объектов.

// Класс прикладной программы ------------------------

&#35include " zlist.h"
class PRG
{
zlist objects; // Объекты программы


Содержание  Назад  Вперед