4.1 Базовый класс — Point |
Предыдущая Содержание Следующая |
В этой главе мы начнём писать простенькую программу для рисования. Вот быстрый тест для одного из классов, которые мы хотели бы иметь:
#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() должна быть в состоянии обойтись без динамической компоновки.
|
Предыдущая Содержание Следующая |