Структура екземплярів об’єктного типу і таблиць віртуальних методів

Страницы работы

Содержание работы

Лабораторна робота №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));

Похожие материалы

Информация о работе