- •Аннотация.
- •Введение.
- •Средства объектно-ориентированного программирования. . Определение объекта. Компоненты: поля и методы.
- •. Определение экземпляров объектов. Операция присваивания над объектами. Обращение к компонентам объекта из программы и методов. Неявный параметр 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;
Риc. 2. 7. Библиотечные оконные формы.
При реализации объектов те методы, которые будут зависеть от конкретной задачи, программируются не содержащими действий. Предполагается, что они будут заменяться при наследовании объекта от библиотечного.
Пример 13. Библиотека объектов для создания меню программы "Записная книжка".
Unit Menu;
Interface
Uses crt;
Type str80=string[80];
{ ************* Окно с текстом ***********************}
TWin=Object
x1,y1,x2,y2:integer; {координаты окна}
attr:integer; {атрибут}
xt,yt:integer; {начало текста}
text:str80; {строка текста}
constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80);
procedure SetAttr(aattr:integer); {изменение цвета и фона окна}
procedure Draw; {рисование окна на экране}
end;
{ ************* Окно ввода **********************}
Type TInput=Object(TWin)
Inp:TWin; {окно ввода}
constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;
bx1,by1,bx2,by2,battr,bxt,byt:integer;btext:str80);
procedure Clear; {очистка поля ввода}
procedure Input; {ввод строки из окна}
function Error:boolean;virtual; {проверка введенной информ.}
procedure Draw;virtual; {рисование окна}
end;
{ *************** Окно сообщения *****************}
Type TMessage=Object(TWin)
Ok:TWin; {кнопка}
procedure Enter;virtual; {при нажатии на Enter...}
procedure Run;virtual; {процедура выбора из меню}
procedure Show;virtual; {показать окно (наложить)}
constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;
bx1,by1,bx2,by2,battr,bxt,byt:integer;btext:str80);
end;
{ ***************** Окно меню ********************}
Type TMenu=Object(TMessage)
nalt:integer; {количество альтернатив в меню}
masalt:array[1..10] of TWin; {массив альтернатив меню}
npos:integer; {номер выбранной альтернативы}
procedure Show;virtual; {показать окно (наложить)}
procedure Enter;virtual; {при нажатии на Enter...}
procedure Run;virtual; {процедура выбора из меню}
constructor Init(ax1,ay1,ax2,ay2,aattr,
axt,ayt:integer;atext:str80;n:integer;Var p);
end;
{ ****************** Окно формы *******************}
Type TForm=Object(TMenu)
ninput:integer; {количество полей ввода}
masinp:array[1..10] of TInput; {массив полей ввода}
procedure Enter;virtual; {при нажатии на Enter ...}
procedure Show;virtual; {показать окно (наложить)}
procedure Clear; {очистка окон ввода}
procedure Input; {ввод информации из окон ввода}
constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;
n:integer;Var p1;k:integer;Var p2);
end;
Implementation {Реализация методов}
{************* Окно с текстом ***********************}
Constructor TWin.Init;
Begin x1:=ax1; y1:=ay1;
x2:=ax2; y2:=ay2;
attr:=aattr;
xt:=axt; yt:=ayt;
text:=atext;
End;
Procedure TWin.Draw;
Begin Window(x1,y1,x2,y2);
TextBackGround(attr div 16);
TextColor(attr mod 16);
Clrscr;
Gotoxy(xt,yt);
Write(text);
end;
Procedure TWin.setattr;
Begin attr:=aattr;
Draw;
end;
{ ************* Окно ввода **********************}
Constructor TInput.Init;
Begin TWin.Init(ax1,ay1,ax2,ay2,aattr,axt,ayt,atext);