The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

4.1 Базовый класс — Point

4.1 Базовый класс — Point

Предыдущая  Содержание  Следующая V*D*V

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

 

#include "Point.h"

#include "new.h"

 

int main (int argc, char ** argv) {

    void * p;

 

    while (* ++ argv) {

        switch (** argv) {

        case ’p’:

            p = new(Point, 1, 2);

            break;

        default:

            continue;

        }

        draw(p);

        move(p, 10, 20);

        draw(p);

        delete(p);

    }

    return 0;

}

 

Из каждого аргумента команды, начинающегося с буквы p, получается новая точка, которая рисуется, куда-то перемещается, отрисовывается снова и удаляется. ANSI-C не включает в себя стандартные функции для графического вывода; однако, если мы захотим нарисовать картинку, можно эмиттировать текст, который может понять программа pic Кернигана [Ker82]:

 

$ points p

"." at 1,2

"." at 11,22

 

Координаты не имеют значения для теста — перефразируя рекламу и OOspeak "the point is the message": "точка это сообщение".

Что можно делать с точкой? new() будет создавать точку, а конструктор ожидает начальные координаты в виде дополнительных аргументов new(). delete() как обычно будет утилизировать нашу точку и по соглашению мы предоставим для этого деструктор.

draw() организует отображение точки. Так как предполагается работа и с другими графическими объектами — отсюда и switch в тестовой программе — для draw() организуем динамическую компоновку.

move() изменяет координаты точки на величины, заданные в качестве аргументов. Если каждый графический объект будет отображаться относительно своей точки привязки, мы сможем перемещать его просто применив move() к этой точке. Таким образом move() должна быть в состоянии обойтись без динамической компоновки.

 

Предыдущая  Содержание  Следующая