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


Система объектов, управляемых сообщениями


Здесь мы рассмотрим очень приближенную модель того, что реально происходит при программировании в объектно-ориентированных библиотеках, основанных на обработке сообщений (или событий) объектами программы. (Например, OWL в Windows или Turbo Vision в DOS) . Система объектов, управляемых сообщениями, должна включать в себя несколько классов, взаимодействие между которыми скрыто от внешнего наблюдателя :



-класс сообщений ;



-базовый класс объектов, управляемых сообщениями ;



-класс прикладной программы, единственный объект которого является аналогом main и реализует в своем методе run диспетчер сообщений и объектов.

Прежде всего, вводится понятие сообщения - как единственной и универсальной единицы обмена данными между объектами. Сообщение не является адресным, поскольку объекты не располагают информацией ни своем количестве, ни о своем расположении. Вместо этого в сообщение вводится код или вид сообщения. Кроме того, сообщение в зависимости от кода может нести данные и указатель на область памяти (например, объект может передать указатель на самого себя).


// Класс сообщений -----------------------------------


&#35define ms_NULL 0 // Пустое сообщение


&#35define ms_KEYB 1 // Символ клавиатуры


&#35define ms_TICK 2 // Тик таймера


&#35define ms_MS_MOVE 3 // Перемещение мыши


&#35define ms_MS_CLICK 4 // Кнопка мыши


&#35define ms_ECHO 5 // Ответ объекта с this


&#35define ms_EXIT 6 // Завершение программы


&#35define ms_KILL 7 // Уничтожение объекта


&#35define ms_BORN 8 // Порождение объекта



class MS
{
public:
char code; // Код сообщения


int x,y; // Параметры сообщения


void *p; // Указатель на данные


MS(char,int,int,void *); // Констуктор - создать сообщение


~MS();
void clear()
{ code=ms_NULL; }; // " Очистить" сообщение


};


MS::MS(char c,int xx,int yy,void *q)
{ code = c; x = xx; y = yy; p = q; }


MS::~MS() {}

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


Начало  Назад  Вперед



Книжный магазин