- •Аннотация.
- •Введение.
- •Средства объектно-ориентированного программирования. . Определение объекта. Компоненты: поля и методы.
- •. Определение экземпляров объектов. Операция присваивания над объектами. Обращение к компонентам объекта из программы и методов. Неявный параметр Self.
- •Var a:Troom;
- •. Инициализация полей объектов.
- •Var l,w,s:real;
- •Var l,w,s:real;
- •Var l,w,s:real;
- •. Наследование.
- •Var a:tName; b:tPenson;
- •. Полиморфизм.
- •. Раннее и позднее связывание. Виртуальные методы. Конструкторы. Определение типа объекта.
- •Var I:integer; s:real;
- •Var I:integer;
- •Var a:tRoom; b:tFlat;
- •. Динамические объекты. Деструкторы.
- •Var p:pTObj;
- •Var p:pTObj;
- •Var a:tObj;
- •Использование технологии ооп. . Использование объектов при создании новых структур данных.
- •Interface
- •Implementation
- •Var next:pElement;
- •Var n:tSpisok; k:integer;p:pNum;
- •. Использование объектов при создании меню.
- •Риc. 2. 7. Библиотечные оконные формы.
- •Interface
- •Inp.Init(bx1,by1,bx2,by2,battr,bxt,byt,'');
- •Inp.Draw;
- •Inp.Draw;
- •Var w1:array[1..10] of tWin absolute p1;
- •I:integer;
- •Var I:integer;
- •Var I:integer;
- •Var I:integer;
- •Interface
- •Implementation
- •Var k:boolean;
- •If Compare(fam) then
- •Var a:tMainMenu; b:tAddMenu; c:tOpenBase;
- •1:Begin
- •Var l:integer;
- •Inp:(x1:34;y1:8;x2:46;y2:8;attr:112;xt:1;yt:1;text:'')),
- •Inp:(x1:34;y1:10;x2:46;y2:10;attr:112;xt:1;yt:1;text:'')));
- •. Использование объектов при создании движущихся изображений.
- •Var color:word;
- •Var driver,mode:integer;
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;