Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
100
Добавлен:
04.03.2014
Размер:
235.01 Кб
Скачать

Inp:(x1:34;y1:8;x2:46;y2:8;attr:112;xt:1;yt:1;text:'')),

(x1:22;y1:10;x2:32;y2:10;attr:94;xt:1;yt:1;text:'Телефон';

Inp:(x1:34;y1:10;x2:46;y2:10;attr:112;xt:1;yt:1;text:'')));

Begin

a.init(5,5,76,20,30,5,3,'Записная книжка',4,menu1);

b.init(20,2,50,22,94,5,3,'Добавление записей',2,menu3,2,input);

c.init(30,8,50,19,94,3,3,'Введите имя файла',

35,12,45,12,112,1,1,' ');

d.init(20,2,50,22,94,5,3,'Поиск записей',2,menu4,2,input);

e.init;

h.init(25,6,45,14,36,6,2,'Нет данных',

32,11,38,12,71,2,1,'Ok');

a.may:=false;

a.show;

a.Run;

end.

. Использование объектов при создании движущихся изображений.

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

Рис. 2.8. Иерархия классов для программы создания движущихся изображений.

Пример 16. Программа создания движущихся изображений.

{Вращение линии и квадрата вокруг их геометрических центров и движение окружности по окружности}

Program ex;

Uses crt,graph;

Type

Figure=Object

x,y, {координаты центра}

halflen, {радиус вращения}

dx,dy:integer; {проекции радиуса вращения}

constructor Init(ax,ay,ah:integer);

procedure Move(t:real); {организация движения}

procedure Draw;virtual; {рисование объекта}

procedure Rel(t:real);virtual; {определение смещения}

end;

Line=Object(Figure) {линия}

constructor Init(ax,ay,ah:integer);

procedure Draw;virtual;

end;

Square=Object(Figure)

constructor Init(ax,ay,ah:integer); {квадрат}

procedure Draw;virtual;

end;

Circle=object(Figure) {окружность}

r:integer;

constructor Init(ax,ay,ah,ar:integer);

procedure DRAW;virtual;

end;

Constructor Figure.Init;

Begin

x:=ax; y:=ay; halflen:=ah;

End;

Procedure Figure.Draw;

Begin End;

Procedure Figure.Rel;

Begin

dx:=round(halflen*cos(t));

dy:=round(halflen*sin(t));

End;

Procedure Figure.Move;

Var color:word;

Begin

color:=Getcolor; {запоминаем цвет}

SetColor(GetBkColor); {рисование цветом фона}

Draw; {стираем фигуру - рисуем цветом фона}

SetColor(color); {возвращаем цвет}

Rel(t); {пересчитываем значения dx и dy}

Draw; {рисуем на новом месте}

End;

Constructor Line.Init;

Begin

Figure.Init(ax,ay,ah);

End;

Procedure Line.Draw;

Begin

graph.Line(x+dx,y+dy,x-dx,y-dy);

End;

Constructor Square.Init;

Begin

Figure.Init(ax,ay,ah);

End;

Procedure Square.Draw;

Begin

graph.line(x+dx,y+dy,x-dy,y+dx);

graph.line(x-dy,y+dx,x-dx,y-dy);

graph.line(x-dx,y-dy,x+dy,y-dx);

graph.line(x+dy,y-dx,x+dx,y+dy);

End;

Constructor Circle.Init;

Begin

Figure.Init(ax,ay,ah);

r:=ar;

End;

Procedure Circle.Draw;

Begin

graph.Circle(x+dx,y+dy,r);

End;

Соседние файлы в папке Методичка С++