Лабораторна робота №2
Тема: Структура екземплярів об’єктного типу і таблиць віртуальних методів.
Мета роботи: Ознайомлення зі структурами екземплярів об’єктного типу і таблиць віртуальних методів.
1.Індивідуальне завдання.
Використовуючи програму лабораторної роботи №1, отримати вивод структур екземпляра об’ктного типа і таблиці віртуальних методів відповідно до індивідуального завдання.
Завдання: крапка -> трикутник -> трикутник у колі ->трикутник у квадраті та колі.
2.Текст програми.
uses Graph,Crt_;
type
TPoint = object
X,Y,R: Integer;
constructor Init(IX, IY, IR: Integer);
procedure Show; virtual;
procedure Hide; virtual;
procedure Zoom(DR: Integer);
procedure Move(DX, DY, DR: Integer);
end;
Ttreyg = object (TPoint)
constructor Init(IX, IY, IR: Integer);
procedure Show; virtual;
procedure Hide; virtual;
end;
TtrInCir = object (Ttreyg)
constructor Init(IX, IY, IR: Integer);
procedure Show; virtual;
procedure Hide; virtual;
end;
TCirTrSq = object ( TtrInCir)
constructor Init(IX, IY, IR: Integer);
procedure Show; virtual;
procedure Hide; virtual;
end;
constructor TPoint.Init(IX, IY, IR: Integer);
begin
X:=IX;
Y:=IY;
R:=IR;
end;
procedure TPoint.Show;
begin
PutPixel(X, Y, 14);
end;
procedure TPoint.Hide;
begin
PutPixel(X, Y, 0);
end;
{ Methodu}
procedure TPoint.Zoom(DR: Integer);
begin
R:=R+DR;
end;
procedure TPoint.Move(DX, DY, DR: Integer);
var i:integer;
begin
Hide;
X := X + DX;
Y := Y + DY;
Zoom(DR);
Show;
end;
{ Treygol'nik}
constructor Ttreyg.Init(IX, IY, IR: Integer);
begin
TPoint.Init(IX, IY, IR);
end;
procedure Ttreyg.Show;
begin
SetColor(11);
Line(x,y-r,x+round(r*(sqrt(3)/2)),round(y+r/2));
Line(x+round(r*(sqrt(3)/2)),round(y+r/2),x-round(r*(sqrt(3)/2)),round(y+r/2));
Line(x-round(r*(sqrt(3)/2)),round(y+r/2),x,round(y-r));
end;
procedure Ttreyg.Hide;
begin
SetColor(0);
Line(x,y-r,x+round(r*(sqrt(3)/2)),round(y+r/2));
Line(x+round(r*(sqrt(3)/2)),round(y+r/2),x-round(r*(sqrt(3)/2)),round(y+r/2));
Line(x-round(r*(sqrt(3)/2)),round(y+r/2),x,round(y-r));
end;
{ treyg. v treygolnike}
constructor TtrInCir.Init(IX, IY, IR: Integer);
begin
Ttreyg.Init(IX, IY, IR);
end;
procedure TtrInCir.Show;
begin
SetColor(13);
Line(x,y-r,x+round(r*(sqrt(3)/2)),round(y+r/2));
Line(x+round(r*(sqrt(3)/2)),round(y+r/2),x-round(r*(sqrt(3)/2)),round(y+r/2));
Line(x-round(r*(sqrt(3)/2)),round(y+r/2),x,round(y-r));
Line(x,y+(r div 2),x-round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2));
Line(x-round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2),x+round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2));
Line(x+round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2),x,round(y+(r div 2)));
end;
procedure TtrInCir.Hide;
begin
SetColor(0);
Line(x,y-r,x+round(r*(sqrt(3)/2)),round(y+r/2));
Line(x+round(r*(sqrt(3)/2)),round(y+r/2),x-round(r*(sqrt(3)/2)),round(y+r/2));
Line(x-round(r*(sqrt(3)/2)),round(y+r/2),x,round(y-r));
Line(x,y+(r div 2),x-round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2));
Line(x-round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2),x+round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2));
Line(x+round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2),x,round(y+(r div 2)));
end;
{ Okrygnost'->treygol'nik->treygol'nik}
constructor TCirTrSq.Init(IX, IY, IR: Integer);
begin
TtrInCir.Init(IX, IY, IR);
end;
procedure TCirTrSq.Show;
begin
SetColor(17);
Line(x,y-r,x+round(r*(sqrt(3)/2)),round(y+r/2));
Line(x+round(r*(sqrt(3)/2)),round(y+r/2),x-round(r*(sqrt(3)/2)),round(y+r/2));
Line(x-round(r*(sqrt(3)/2)),round(y+r/2),x,round(y-r));
Line(x,y+(r div 2),x-round((r div 2)*(sqrt(3)/2)),round(y-(r div 2)/2));
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.