Объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП) в среде FreePascal. Инкапсуляция, наследование, перегрузка операторов. Примеры создания классов и подклассов.

Комментарии

Определить класс, описывающий круг. Определить производный класс с методами для рисования круга на плоскости (на плоскости также нарисовать координатные оси, выбрать масштаб, подписать деления осей).

Вот код:

program Lab_7;
  uses crt, graphABC, pointRect;
  type circle=class
       R: real;
       constructor vvod;
       procedure vivod;
       private
         function area: real;
         function perim: real;
  end;
 
  constructor circle.vvod;
  begin
    write('Введите радиус окружности=');readln(R);
  end;
 
  function circle.area: real;
  begin
    area:=pi*R*R;
  end;
 
  function circle.perim: real;
  begin
    perim:=2*pi*R;
  end;
 
  procedure circle.vivod;
  var s, p: real;
  begin
    s:=area;
    p:=perim;
    writeln('S=', s:0:3, ', ', 'P=', p:0:3);
  end;
 
  type PicCircle=class(circle)
       x0, y0: real;
       xr, yr: array[1..5] of real;
       procedure vvod2;
       procedure define;
       procedure figure;
       procedure net;
  end;
 
  procedure PicCircle.vvod2;
  begin
    write('x0='); readln(x0);
    write('y0='); readln(y0);
  end;
 
  procedure PicCircle.define;
  begin
    xr[1]:=x0; yr[1]:=y0;
  end;
 
  procedure PicCircle.figure;
  var P: array[1..5] of Point;
      i: integer;
  begin
    for i:=1 to 1 do begin
      P[i].x:=360+round(50*xr[i]);
      P[i].y:=310-round(50*yr[i]);
    end;
    Polygon(p, 1);
    FloodFill(360+round(50*(R*0.6+x0)), 310-round(50*(R*0.1+y0)), RGB(0, 215, 0));
  end;
 
  procedure PicCircle.net;
  var i: integer; s: string;
  begin
    SetWindowHeight(620);
    SetwindowWidth(720);
    Line(10, 310, 910, 310);
    Line(360, 10, 360, 610);
    for i:=-6 to 6 do
      Line(360+50*i, 315, 360+50*i, 305);
    for i:=-6 to 6 do
      if i<>0 then begin
        str(i, s); TextOut(355+50*i, 320, s);
      end;
    for i:=-5 to 5 do
      Line(355, 310+50*i, 365, 310+50*i);
    for i:=-5 to 5 do
      if i<>0 then begin
        str(i, s); TextOut(370, 302-50*i, s);
      end;
    SetFontSize(14);
    TextOut(365, 315, '0');
    TextOut(365, 12, 'y');
    TextOut(695, 312, 'x');
  end;
 
  var t: PicCircle;
 
  begin
    clrscr;
    t:=PicCircle.vvod;
    t.vivod;
    t.vvod2;
    ClearWindow(RGB(255, 255, 255));
    t.define;
    t.figure;
    t.net;
  end.

Что здесь неправильно?) Заранее спасибо)