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


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


Диспетчер исключает динамический объект из списка и уничтожает его (как динамический объект).

Вторая часть диспетчера опрашивает внешние источники сообщений - клавиатуру и часы - и формирует сообщения от них, которые включает в очередь диспетчера.

Деструктор " вычищает" очереди сообщений и объектов, разрушая сами сообщения и объекты.


// Деструктор: уничтожение сообщений и объектов ----- --------


PRG::~PRG()
{
while ((MS *p=messages.Remove(0))!=NULL) delete p;
while ((OBJ *q=objects.Remove(0)) !=NULL) delete q;
}

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


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


class myPRG : public PRG
{
public:
myPRG() { MOUSE *pms = new MOUSE; }
};

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


void main()
{
myPRG myprog;
myprog.run();
}

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

Класс " видимая точка" представляет собой символ, отображаемый на экране в заданной позиции. Данные этого объекта включают в себя координаты точки и код символа, а методы - перемещение объекта на одну позицию и отображение.


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



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